This document explains how to deploy the unified Riva Insight Services project on an on-premises Windows server. The Services project combines Insight, WebAPI (Riva Sync compatibility), and TrackStateService (TSS) into a single Kestrel-based application running as a Windows Service.
Prerequisites
- Windows Server 2022 or later
- .NET 8.0 Runtime (hosting bundle not required — Kestrel runs standalone)
- Redis installed and running (required for session sharing and caching)
- A valid TLS/SSL certificate (if not using a load balancer for TLS termination)
- Riva Sync installed and configured with a valid
.connectionfile - MongoDB instance (required for TrackStateService)
A. Install or Setup Prerequisites
- Install the ASP.NET Core Hosting Bundle NOTE: Change to .NET Core (without hosting bundle)
- Install Redis
- Install MongoDb
- Install SSL Certificate
- Create Microsoft Graph Registered App
- Salesforce Connected App
B. Download/Extract Riva Insight Service
1. Extract the Riva Insight OnPremises Package
- Download the package from https://dl.rivacrmintegration.com/ (ensure version ois 2026.3 or later)
- For the downloaded file, go into the properties and select "Unblock"
- Extract the contents to a location you would like the application hosted (i.e.
C:\Riva\Riva Insight\)
C. Riva Insight App Configuration
The configuration settings for the Riva Insight app are configured in appsettings.OnPremises.json. The setting with the file will look something like the following:
{
"AppSettings": {
"BasePath": "/insight",
"Insight.Port": "5001",
"LoggingLevel": "ERROR",
"EnvironmentLogPathSuffix": "",
"Sync.Compatibility.connectionFilePath": "C:\\Riva\\Riva Sync\\Configuration\\user@example.com__www.salesforce.com.connection",
"Sync.Compatibility.applicationDirectoryInfo": "C:\\Riva\\Riva Sync\\Configuration",
}
},
"CertificateStore": {
"SslCertificateFindBy": "FindByThumbprint",
"SslCertificateFindByValue": "<certificate-thumbprint>",
"SslCertificateStoreName": "My",
"SslCertificateStoreLocation": "LocalMachine"
}
},
"ConnectionStrings": {
"RedisConnectionString": "{RedisHost}:6379,password={RedisPassword},abortConnect=false",
"Insight.Auth.Salesforce.Oauth": "Key={SfConsumerKey};Secret={SfConsumerSecret};CallBackUrl=https://{Domain}:{Insight.Port}{BasePath}/salesforce-oauth;",
"Insight.Graph.OAuth": "ApplicationId={GraphAppId};Secret={GraphClientSecret};RedirectUri=https://{Domain}:{Insight.Port}{BasePath}/graphfallback/authorize;",
},
"MongoDb": {
"Client": {
"ConnectionString": "mongodb://username:password@your-mongo-host:27017/Default?tls=false"
}
}
}
C1. Settings - Base Settings
This is the primary configuration file. It is in root folder of the Insight Application
| Setting | Description |
|---|---|
BasePath |
The URL path suffix for the application (e.g. /insight, /insight-uat). All requests must include this suffix. |
Insight.Port |
The TCP port Kestrel listens on. Defaults to 5001 if not specified. Must be unique if running multiple Insight instances on the same server. |
LoggingLevel |
Logging Level ERROR
|
EnvironmentLogPathSuffix |
Used to differentiate logs between Insight applications. |
NOTE: When setting up multiple Insight services on the same machine, Insight.Port must be different and EnvironmentLogPathSuffix should be changed to differentiate the logs.
C2. Settings - CRM Connection
Required AppSettings
| Setting | Description |
|---|---|
Sync.Compatibility.connectionFilePath |
Full path to the Riva Sync .connection file for this user/org. |
Sync.Compatibility.applicationDirectoryInfo |
Path to the Riva Sync configuration directory. |
C3. Settings - SSL Certificate
| Setting | Description |
|---|---|
SslCertificateFindBy |
Determines whether to look up the certificate by name or thumbprint (case-sensitive). Recommended Options:
|
SslCertificateFindByValue |
The certificate value used to lookup the certificate base on what was set by SslCertificateFindBy. |
SslCertificateStoreName |
Name of the certificate store. Default is
|
SslCertificateStoreLocation |
Location of the certificate store. Default is LocalMachine. |
C4. Connection String - Redis
Redis is used for session management and distributed caching. All servers in a multi-server setup must point to the same Redis instance.
Look for a connectionstring similar to the following:
"RedisConnectionString": "{RedisHost}:6379,password={RedisPassword}"
| Setting | Description |
|---|---|
RedisHost |
Redis host ip address or DNS name. |
RedisPort |
Redis Port. The default port of 3679 is configured by default. |
RedisPassword |
Redis password. |
C5. Connection String - Salesforce App
Look for a connectionstring similar to the following:
"Insight.Auth.Salesforce.Oauth": "Key={SfConsumerKey};Secret={SfConsumerSecret};"
| Setting | Description |
|---|---|
SfConsumerKey |
Redis host ip address or DNS name. |
SfConsumerSecret |
Redis Port. The default port of 3679 is configured by default. |
C6. Connection String - Microsoft Graph App
Look for a connectionstring similar to the following:
"Insight.Graph.OAuth": "ApplicationId={GraphAppId};Authority=https://login.microsoftonline.com/{TenantDomainOrID}/oauth2/v2.0"
| Setting | Description |
|---|---|
GraphAppId |
The application ID of the GRAPH app. |
TenantDomainOrID |
The Tenant Domain or ID. |
C7. Connection String - MongoDB
Look for a connectionstring similar to the following:
"ConnectionString": "mongodb://{MongoUser}:{MongoPassword}@{mongohost):27017/?tls=false"
| Setting | Description |
|---|---|
MongoHost |
Mongo host ip address or DNS name. |
MongoPort |
Mongo Port. The default port of 27017 is configured by default. |
MongoUser |
MongoDB User |
MongoPassword |
MongoDB Password |
If running multiple instances of Insight, each service will needs its own unique name.
NOTE: When setting up multiple Insight services on the same machine, each Insight Service must be given its own unique name (replace RivaInsightServices in the following steps.
1. Register the Service
Powershell
New-Service -Name "RivaInsightServices" -BinaryPathName "C:\Riva\Insight\Omni.Riva.Insight.Services.exe" -StartupType Automatic
| Setting | Description |
|---|---|
-Name |
Name give to the services (each app requires its own unique name) |
-BinaryPathName |
Redis Port. The default port of 3679 is configured by default. |
2. Start the Service
The service may be started from the Windows Services control panel, or through PowerShell.
Powershell
Start-Service -Name "RivaInsightServices"
If the service fails to start, check the logs located under: ....
%programdata%\riva\insight or %programdata%\riva\insight-{EnvironmentLogPathSuffix}
3. Health Check Diagnostics
Load the Insight Diagnostics page to ensure all Insight Services are running.
To access the diagnostics page, append health.check?diagnostics=true to the end of the Insight URL.
E.G. https://rivainsight.company.local/insight/health.check?diagnostics=true
Powershell
Restart-Service -Name "RivaInsightServices";
E. Configuring Riva Sync for Riva Insight
F. Load Balancer Configuration
- Coming soon,