

Last date modified: April 21 2025
RelativityOne includes rearchitected e-discovery features available as a SaaS product. It offers most of the same functionality provided by a Relativity Server instance of Relativity. It also supports the same APIs and other platform features, such as tools, scripts, ADS applications, and utilities available for application development.
If you're familiar with custom development for Relativity, use the information on this page to ensure that your existing applications function properly in a RelativityOne instance. If you're new to custom development, use these considerations in conjunction with other information about the Relativity APIs to jump start the implementation of your applications. For more information, see Tools and Resources.
See Also:
RelativityOne provides the same developer functionality as Relativity Server. Many of the same developer concepts apply to RelativityOne, including agents, event handlers, custom pages, APIs, and ADS deployment. In general, applications written for Relativity Server work in the RelativityOne cloud.
Even though Relativity and RelativityOne share the same functionality, the cloud is a very different hosting environment from a Relativity Server data center. ADS applications should follow the guidelines outlined in this page in order to run efficiently in the cloud. By following these guidelines, you can also ensure that your applications perform better and are more resilient in the cloud.
Use the following guidelines to learn about how key elements of the RelativityOne infrastructure affect application development:
Most importantly, treat RelativityOne as a service rather than a collection of servers. The RelativityOne application itself and our operations team handle the RelativityOne infrastructure, including installation, upgrades, and infrastructure components, such as servers. The infrastructure of a cloud PaaS service such as RelativityOne is constantly in flux. Servers are regularly added, removed, and reconfigured. In some cases, a traditional server may not be running your code, and your physical data may not exist on the same server or same geographical region. This configuration is the standard architecture of cloud offerings.
In a Relativity Server instance of Relativity, you have deep access to all of the infrastructure components. You may think in terms of the technology hosting the code, such as servers, IIS, and Windows. These concepts may not be applicable to RelativityOne, which is run in the cloud.
If you run .NET code within a supported extensibility point, your application probably works in RelativityOne like it currently does for a Relativity Server instance. If you leverage any of the following concepts, you may need to update your code in order to future-proof your application:
Custom applications or solutions that require their own infrastructure must be hosted outside of RelativityOne. For example, customers or development partners may host integrations through Azure, AWS, a Relativity Server solution, or other options. If your custom application uses Azure as its infrastructure, the optimum hosting environment would be the same data center as your RelativityOne instance, but this setup isn't required. Your application won't have access to the infrastructure in the RelativityOne environment. For more information, see RelativityOne developer considerations
Review the following information about how to work with SQL Servers in a RelativityOne environment.
Caution: Accessing the SQL Server is not audited and does not appear in the Relativity UI audit lists. Directly interacting with the SQL Server or performing maintenance operations on a database has the potential to put the database in a bad state. All SQL Server access should be avoided; please use APIs instead.
Note: Invariant stores and databases are different entities.
If you are connecting to your SQL instance using a connection string referencing server FQDN found in the EDDS ResourceServer table:
1
$sqlConnection.ConnectionString = "Server=abscefg007.ServerFarm.Relativity.com\sqlInstanceName;Database=master;User Id=$sqlConnectionUsername;Password=$sqlConnectionPasswordText;MultiSubnetFailover=True;"
Note: You should only need to do this once for each SQL instance you are trying to connect to. If you experience connection issues, please contact Support, and then provide the exact code included in your connection string.
Even though SQL Servers are performant, your application may experience transient database errors at some point during its operation. Develop your applications to be resilient and gracefully handle these error scenarios.
A well-designed application should:
You can find guidelines about how to handle transient failures in the cloud on the Microsoft site. The following links provide Azure-specific information, but they also generally apply to Relativity Server instances and to building resilient software for the cloud:
You can connect to a SQL server for RelativityOne through direct SQL access (DSA). Use the best practices outlined in this section to ensure that your custom applications remain compatible with RelativityOne. These best practices describe how to discover your RelativityOne environment and build dynamic code that changes with your environment.
Caution: In general, you should use the services available through the REST API rather than a direct connection to SQL. Direct SQL is not audited and has the potential to cause disruption in your instance. For more information, see REST API.
Review the following best practices for making DSA connections to RelativityOne:
The sp_getSQLinstances stored procedure returns a list of SQL instances of the following types:
Execute this stored procedure from the EDDS instance using the following syntax:
The logic in the bullets below explain where the SQL instance values are found.
When considering storage options for your custom application, our recommendation is to utilize Relativity Dynamic Objects (RDO). You can use Relativity Dynamic Objects (RDO) in place of custom tables, with instances of the RDO acting as rows and the RDO's fields as columns. Unlike writing in SQL, the Object Manager service offers a supported API surface to interact with RDOs. In the event that RDOs do not meet your application needs, we also offer client use databases.
Client use databases (_DB1,_DB2,_DB3) are supplied in RelativityOne as an intermediary data staging location, or a housing location for SQL stored procedures. These databases are not part of any core component of Relativity. These databases do not contain data by default, are not used by the Relativity platform, and the data storage capacity is capped at 5GB.
Common use cases include:
Cases where a client use database is NOT supported:
The following operations are available only to TenantAdmin accounts:
Only CMDSA administrators can run the following calls that create and configure user accounts using a single stored procedure:
To support having multiple contained databases for multiple security authorities, the following prefix table serves as a reference for future compatibility.
Note: The use of R1 prefixes by tenants is prohibited. An attempt to create a login with an R1 prefix will fail.
Prefix |
Use |
---|---|
R1_ |
Relativity one SQL login |
_R1 |
Relativity contained database prefix |
_DBTenantDSA |
Tenant CMDSA contained database prefix |
You may notice that in the contained database, there are additional stored procedures. If other stored procedures in the database are called directly, there may be failures or incomplete entries. It is inadvisable to run any procedure except _DBTenantDSA.dbo.cdp_CMDSA_TenantLoginMGR.
The following is a sample call for creating a new SQL users account, which also lists options.
Running the call below creates the user. Any associated roles are added to the user in the user’s default database (coded in a system allowlist table). The login creator cannot change the default database. A separate system process reviews the default database (e.g., _db1 for TenantAdmin) and propagates the roles found in this database to all others.
1
2
3
4
5
6
7
8
USE _DBTenantDSA
EXEC dbo.cdp_CMDSA_TenantLoginMGR
@LoginName = 'Elaine' -- Name of the SQL login to be created.
, @tenantSQLLogin = 'Elaine.Ellis'
, @tenantGroup = 'home'
, @LoginAction = 'CREATE' --(CREATE, DISABLE, ENABLE, ALTER) - Required, choose one.
, @Password = 'temporary password used here' --Required with CREATE
, @Roles = 'data_reader,data_writer,ddlOnTenantOwnedSchema,ExecuteOnTenantOwnedSchema'
To add or change roles, you must include the complete list of roles the user should have in the call you make. Any roles the user currently has will be replaced by the list entered in the stored procedure call below. Only the roles listed in the sample procedure are available {scott}, and all fall within the restrictions listed in the permissions table:
The following is a sample call for adding or changing the list of roles a user has.
1
2
3
4
5
USE _DBTenantDSA
EXEC dbo.cdp_CMDSA_TenantLoginMGR
@LoginName = 'Elaine'
, @LoginAction = 'ALTER' --(CREATE, DISABLE, ENABLE, ALTER) - Required, choose one
, @Roles = 'data_reader,data_writer,ddlOnTenantOwnedSchema,ExecuteOnTenantOwnedSchema'
The following is a sample call for altering a user's password.
1
2
3
4
5
USE _DBTenantDSA
EXEC dbo.cdp_CMDSA_TenantLoginMGR
@LoginName = 'Elaine'
, @LoginAction = 'ALTER' --(CREATE, DISABLE, ENABLE, ALTER) - Required, choose one
, @Password = 'temporary password used here' --Required with CREATE
Note: Users will NOT be prompted to change their passwords. They must right-click on their login in SSMS and change it themselves. See Changing your own CMDSA login password.
On the EDDS server, you must run the following SQL while logged in using the identity of the login that needs a password change. This will change the password on the primary server. Within 15 minutes, the changed password will automatically propagate to all other instances in your RelativityOne environment.
1
2
3
USE [master]
GO
ALTER LOGIN [CMDSACreatedLogin] WITH PASSWORD=N'thePassword' OLD_PASSWORD=N'TheOldPassword'
Running the following procedure directly alters the user's login on this server once the job runs.
1
2
3
4
USE _DBTenantDSA
EXEC dbo.cdp_CMDSA_TenantLoginMGR
@LoginName = 'Elaine'
, @LoginAction = 'DISABLE/ENABLE' --(CREATE, DISABLE, ENABLE, ALTER) - Required, choose one
Note: It may take up to 20 minutes to disable a user across all SQL instances.
In RelativityOne, Analytics services are hosted as a multi-tenant shared service with a single URI endpoint. Authenticating to the Analytics shared service works differently in RelativityOne than in a Relativity Server instance. If your application needs to access the Analytics server directly for conceptual or structured analytics, contact Client Services for more information.
In RelativityOne, DataGrid services are hosted as a multi-tenant shared service with a single URI endpoint. Authenticating to the DataGrid shared service works differently in RelativityOne than a Relativity Server instance. If your application needs to access DataGrid functionality directly, contact Client Services for more information.
You currently do not have access to IIS or NT Services in a RelativityOne environment. If you want to restart IIS, contact Relativity Support.
You can find a list of best practices for developing custom Relativity applications at Best practices for building applications. Next, review the following best practices specifically for RelativityOne application development.
The following list contains general best practices for RelativityOne application development:
Review the following limitations on applications that consume external dependencies:
When developing for RelativityOne you can improve the performance of your custom applications by following these guidelines.
RelativityOne is currently hosted in Microsoft Azure. You may find it helpful to understand this environment in which your application is running. For more information on general Azure cloud limits, see Azure subscription and service limits, quotas, and constraints available on the Microsoft site.
When developing an application, consider that each RelativityOne environment sits behind an Azure load balancer with sticky sessions enabled. If you plan on passing URLs, tokens, cookies or other entities, consider the impact load balancing may have on these requests.
For any RelativityOne instance, the data will never be stored outside of the borders of a country. For example, if a RelativityOne instance is anchored in the UK-South region, all data and backups will be in that region. A copy of the backups (for disaster recovery purposes) could be stored in a different region (e.g., UK-West), but the data would never be stored outside of the country.
Use these strategies to improve data interactions:
Use the following information to learn about how to import and store data in RelativityOne.
RelativityOne supports the following options for importing data:
Note: Use a RelativityOne import feature for data sets less than 5 TB. You can ship data sets larger than 5 TB to Microsoft for blob storage, which may be more efficient. Contact Client Services for additional information on this workflow.
The following factors affect the transfer and storage of data in RelativityOne:
Use the following information to learn about security features in RelativityOne.
RelativityOne uses TLS 1.2 for all APIs and cross-process communication. Older protocols such as TLS 1.0 and crypto algorithms such as RC4 are disabled. Every .NET AppDomain for agents, event handlers, and custom pages is configured to use only TLS 1.2 for secure connections. If your application calls a secure remote server that is outside of RelativityOne, ensure that the server has TLS 1.2 and that the appropriate algorithms are enabled.
The following code samples illustrates how you can establish a TLS 1.2 connection in your custom code:
1
System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;
RelativityOne utilizes a security feature called Customer lockbox to ensure that you have control over users, including Relativity employees, who can access your workspaces and data. Users who are only members of the System Admin group can’t access a workspace unless they are in an additional group that has permissions to that specific workspace. This requirement also applies to operations executing under the current user, when that user is only in the System Admin group. Make sure that your applications execute under a context with access to all required workspaces.
Only RelativityOne has these additional security measures for System Admin group. In Relativity, the members of the System Admin group have access to all workspaces in an environment.
In addition to the RelativityOne considerations described above, Relativity One Government environments have additional considerations for developers:
RelativityOne Sandbox refers to reusable RelativityOne environments that allow you to test SQL scripts, event handlers, API based applications, custom pages, and custom agents.
See RelativityOne Sandbox for detailed information about this feature. Review these FAQs for answers to general questions related to RelativityOne Sandbox.
RelativityOne Sandbox is a service that you must subscribe to. Please contact your Account Manager for more details..
Sandbox environments are upgraded one week following end of month RelativityOne primary production upgrades. This upgrade will take place during business hours and can be any day that week, but will be completed Friday at the latest.
There will be a period of a few days following a RelativityOne production upgrade weekend when your RelativityOne production instance will match the version in your EA sandbox environment and your "current release" Sandbox environment will be a version behind your RelativityOne production instance..
Use the RelativityOne Sandbox only for functional testing. Don't use the environments for performance metrics because these environments use scaled-back resources.
As best practice, don't modify any instance or environment settings. While you do have system admin rights, the test environments are configured to use the optimum settings. You can make any necessary changes to your custom applications.
Use these guidelines for minimizing the costs associated with using a testing environment:
Why was this not helpful?
Check one that applies.
Thank you for your feedback.
Want to tell us more?
Great!
Additional Resources |
|||
DevHelp Community | GitHub | Release Notes | NuGet |