Sections Backpack/Single-Machine Installation
Manual informationBackpack/Single-Machine Installation
Installing Viewpoint#
This guide installs Viewpoint on one Windows machine: the two SQL Server instances, the web client (VPWeb), the Processing and Review desktop applications, and the processing Worker. The machine can be a cloud virtual machine, a Hyper-V virtual machine, or a physical computer. The steps are the same in each case.
Before you start you need a Windows machine that meets the requirements below, the Viewpoint 7.8.9 installation ISO, and the Viewpoint licence file issued for this machine. Everything else is downloaded during setup. Work through the sections in order; later steps depend on earlier ones.
What you need#
| Item | Detail |
|---|---|
Windows machine | Windows Server 2019 or 2022, or Windows 10/11 Pro for a single-user laptop. 8 vCPU and 32 GB RAM suit a working environment. Allow around 200 GB for the system and applications, plus space for your case data. |
Viewpoint 7.8.9 ISO | Provided to you. |
Viewpoint licence file | An .xml file, issued for this machine's name. See the next section. |
Administrator account | A local administrator account on the machine. |
Internet access | To download SQL Server, the .NET hosting bundle and the Visual C++ runtimes during setup. |
Before you start: name the machine#
The licence is tied to the machine's name, and the SQL Server instance names are derived from it. Set the name now and do not change it afterwards, because changing it later means reinstalling SQL Server and reissuing the licence. This guide uses VIEWPOINT as the name.
The boxed commands in this guide are PowerShell, and you run them on the machine itself. To run one, open the Start menu, type PowerShell, right-click Windows PowerShell and choose Run as administrator, then paste the command and press Enter. Where a box holds SQL or another language instead, the text before it says so.
Rename-Computer -NewName "VIEWPOINT" -RestartAfter the restart, confirm with hostname. When you request the licence file, give Conduent this exact name.
Step 1: Install SQL Server (two instances)#
Viewpoint keeps processing data and review data in two separate SQL Server instances on the same machine, named PRO and REV. You install SQL Server twice, once for each. The free Developer edition is sufficient; Standard edition also works. SQL Server 2019 or later is fine.
Run the installer and choose New SQL Server standalone installation. Accept the defaults on each page except the settings below. Install the first instance, then run the installer again for the second.
| Page | Setting (first instance) | Setting (second instance) |
|---|---|---|
Feature Selection | Database Engine Services, and Full-Text and Semantic Extractions for Search | Same |
Instance Configuration | Named instance: | Named instance: |
Server Configuration | Set the SQL Server Database Engine service account to | Same |
Database Engine Configuration | Mixed Mode authentication. Set a strong | Same |
Database Engine Configuration, Collation tab |
| Same |
After both instances are installed, open SQL Server Configuration Manager and confirm that TCP/IP is enabled for each instance under SQL Server Network Configuration, and that the SQL Server Browser service is running. Recent SQL Server versions enable TCP/IP by default.
Step 2: Install SQL Server Management Studio#
SQL Server Management Studio (SSMS) lets you run the database steps later in this guide and inspect the databases. Download it from Microsoft and install it with the default options. This step is optional but recommended.
Step 3: Install the web prerequisites#
VPWeb runs under IIS and needs three sets of components in place before the Viewpoint installer runs. The Viewpoint installer assumes they are already present and does not install them. VPWeb will not start without them.
IIS#
Install-WindowsFeature Web-Server, Web-Asp-Net45, Web-Net-Ext45, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-WebSockets, Web-Windows-Auth, Web-Http-Redirect, Web-Mgmt-ConsoleASP.NET Core Hosting Bundle#
VPWeb is an ASP.NET Core application. Install the ASP.NET Core Hosting Bundle that matches the .NET version Viewpoint ships with. Viewpoint 7.8.9 uses .NET 9, so install the .NET 9 Hosting Bundle from Microsoft's .NET download site (search for "ASP.NET Core Hosting Bundle"). It installs the runtime and the IIS module that hosts the application.
Visual C++ runtimes#
The desktop applications and the document viewer use native libraries built against three different Visual C++ runtimes. All three are required, each in its 64-bit and 32-bit form. A missing runtime causes failures that are hard to diagnose, because the applications often fail with no error message.
| Runtime | Why it is needed |
|---|---|
Visual C++ 2010 SP1 (x64 and x86) | The Atalasoft imaging library that Processing and Review load at startup. Without it, those applications close immediately with no window and no error. |
Visual C++ 2013 (x64 and x86) | The Oracle Outside In viewer control used by the native document viewer in Processing and Review. |
Visual C++ 2015-2022 (x64 and x86) | The general runtime used across the platform. |
Download each from Microsoft's official pages and install the x64 and x86 versions of all three.
Restart#
Restart the machine after installing IIS, the hosting bundle and the runtimes. Several of these register components that only take effect after a restart. Skipping it is a common cause of VPWeb returning an error on first use.
Step 4: Run the Viewpoint installer#
Mount the Viewpoint 7.8.9 ISO by right-clicking the .iso file in File Explorer and choosing Mount. Open the mounted drive and run Viewpoint\LateralData.Tools.Installer.exe. This is a graphical wizard; run it on the machine's own desktop, not over a remote command line.
The wizard deploys the application files, creates the databases, and writes the VPWeb configuration. It asks several questions. Give the answers below. Where a password is requested, choose a strong one and record it; these are internal service passwords you will not normally type again.
| Prompt | Answer |
|---|---|
Add Review Workflow Login | Yes. Set a password. This is the SQL login the Review workflow and the Worker use on the PRO instance. |
Link processing to review (VPLINK) | Set a password. This creates a linked-server login on both instances so they can reference each other. |
Certificate password | Set a password. It protects an internal SQL certificate and is separate from the |
Terminal Server | Yes if more than one person will use the machine at once through Remote Desktop; No for a single-user laptop. Yes installs Viewpoint for all users on the machine. |
Web folder location |
|
VP Web Impersonation | The Windows account VPWeb uses to read files and reach SQL. Enter the machine name ( |
VP Web settings | A temporary folder, for example |
When the wizard finishes, the application files are under C:\inetpub\wwwroot\Viewpoint (the PMC, Review and Worker folders) and C:\inetpub\wwwroot\VPWeb (the web client). The databases exist on both instances. The wizard does not create the IIS website; that is the next step.
Step 5: Configure IIS for VPWeb#
The installer placed the web files but did not create the site. The PMC, Review and Worker folders are added as virtual directories rather than applications, because making them applications causes them to intercept some of VPWeb's own pages.
Create the application pool and point the site at VPWeb#
Import-Module WebAdministration
New-WebAppPool -Name "Viewpoint"
Set-ItemProperty IIS:\AppPools\Viewpoint -Name managedRuntimeVersion -Value "" # No Managed Code
Set-ItemProperty IIS:\AppPools\Viewpoint -Name processModel.identityType -Value LocalSystem
Set-ItemProperty IIS:\AppPools\Viewpoint -Name startMode -Value AlwaysRunning
Set-ItemProperty "IIS:\Sites\Default Web Site" -Name physicalPath -Value "C:\inetpub\wwwroot\VPWeb"
Set-ItemProperty "IIS:\Sites\Default Web Site" -Name applicationPool -Value "Viewpoint" Add the three virtual directories#
New-WebVirtualDirectory -Site "Default Web Site" -Name "PMC" -PhysicalPath "C:\inetpub\wwwroot\Viewpoint\PMC"
New-WebVirtualDirectory -Site "Default Web Site" -Name "Review" -PhysicalPath "C:\inetpub\wwwroot\Viewpoint\Review"
New-WebVirtualDirectory -Site "Default Web Site" -Name "Worker" -PhysicalPath "C:\inetpub\wwwroot\Viewpoint\Worker" Correct the VPWeb handler module#
VPWeb ships a web.config that may reference an older version of the ASP.NET Core IIS module. If it does, VPWeb returns HTTP Error 500.21 with the message "bad module AspNetCoreModule". Open C:\inetpub\wwwroot\VPWeb\web.config and make sure the aspNetCore handler uses AspNetCoreModuleV2 and runs out of process. If it already says AspNetCoreModuleV2, leave it.
<aspNetCore processPath=".\Conduent.Viewpoint.Web.exe" hostingModel="OutOfProcess" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />Stop the virtual directories swallowing the desktop launchers#
Processing, Review and Worker launch from the browser through ClickOnce manifest files in their folders. Because VPWeb's root handler matches every path, it intercepts those manifests and redirects them to the login page. Add a small web.config to each folder to switch the handler off for that folder.
$cfg = @'
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="aspNetCore" />
</handlers>
</system.webServer>
</configuration>
'@
$cfg | Set-Content "C:\inetpub\wwwroot\Viewpoint\PMC\web.config" -Encoding UTF8
$cfg | Set-Content "C:\inetpub\wwwroot\Viewpoint\Worker\web.config" -Encoding UTF8Keep the Review document page working#
The Review folder needs one extra line. VPWeb has its own page at the address /Review/Review/{number} (the Document Review page). With the handler simply removed, that address returns a 404, because IIS looks for a file instead of passing the request to VPWeb. Give the Review folder a web.config that removes the handler for the ClickOnce files but restores it for the document page only. This replaces the Review web.config written in the previous step.
$reviewCfg = @'
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="aspNetCore" />
<add name="aspNetCoreReviewRoute" path="Review/Review/*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
'@
$reviewCfg | Set-Content "C:\inetpub\wwwroot\Viewpoint\Review\web.config" -Encoding UTF8Apply and check#
iisresetBrowse to http://localhost/login. The Viewpoint web login page should load. If it returns 500.21, recheck the handler module name above, and confirm you restarted the machine after installing the prerequisites in Step 3.
Step 6: Trust the SQL Server certificate#
When you later create a project in Processing, it opens an encrypted connection between the two SQL instances and checks the certificate. SQL Server's default self-signed certificate is not trusted, so project creation fails with an SSL error. Create a trusted certificate and bind it to both instances. The instance folder name (MSSQLnn) varies by SQL Server version; the script reads it for you.
# 1. Create a certificate, trust it, and let the SQL service read its private key.
$cert = New-SelfSignedCertificate -Subject "CN=VIEWPOINT" -DnsName "VIEWPOINT","localhost" -KeySpec KeyExchange -Provider "Microsoft RSA SChannel Cryptographic Provider" -CertStoreLocation Cert:\LocalMachine\My
$thumb = $cert.Thumbprint.ToLower()
$root = New-Object System.Security.Cryptography.X509Certificates.X509Store("Root","LocalMachine")
$root.Open("ReadWrite"); $root.Add($cert); $root.Close()
$keyFile = $cert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName
icacls "$env:ProgramData\Microsoft\Crypto\RSA\MachineKeys\$keyFile" /grant "NT AUTHORITY\NETWORK SERVICE:R"
# 2. Bind the certificate to both instances and restart them.
$names = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
foreach ($inst in "PRO","REV") {
$id = (Get-ItemProperty $names).$inst # e.g. MSSQL16.PRO
Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$id\MSSQLServer\SuperSocketNetLib" -Name Certificate -Value $thumb
Restart-Service "MSSQL`$$inst"
}Step 7: Create Viewpoint user accounts#
Each person who uses Viewpoint needs a Windows account on the machine, a matching SQL Server login on both instances, and a Viewpoint user record.
Windows account and rights#
Create a Windows account for each person (or use existing ones). The Processing and Review applications require the running account to be a local administrator; a standard account fails to launch them. Add each account that will run those applications to the local Administrators group.
SQL Server login#
The applications connect to SQL Server as the signed-in Windows account, so each account needs an explicit login on both instances. Membership of the Administrators group is not enough: when an application runs without elevation, Windows removes that membership from the token and SQL rejects the connection. Create the login explicitly on both instances.
$users = "alice","bob" # the Windows account names that will run Viewpoint
foreach ($inst in "PRO","REV") {
foreach ($u in $users) {
sqlcmd -S "VIEWPOINT\$inst" -E -C -Q "IF SUSER_ID('VIEWPOINT\$u') IS NULL CREATE LOGIN [VIEWPOINT\$u] FROM WINDOWS; ALTER SERVER ROLE sysadmin ADD MEMBER [VIEWPOINT\$u];"
}
}Viewpoint user record#
Viewpoint keeps its own list of users, separate from Windows. A stock installation has a built-in administrator account, username administrator, password ld. Sign in to Processing or VPWeb with it, open the user management (Security) screen, and add a user for each person with a password and the Administrator role. Because review data lives on the second instance, a user must exist on both; if the Review application does not recognise a user you created in Processing, add the same user from within Review.
If VPWeb reports "Permission required to access Viewpoint Web"#
On a fresh installation the catalogue entry for the permission that grants web access is absent, so even an administrator is refused until you add it. Run the SQL below in SSMS against the LDControl database on both instances; it adds the permission and grants it to the Administrator role.
-- Run against LDControl on BOTH the PRO and REV instances.
IF NOT EXISTS (SELECT 1 FROM LDPermissions WHERE PermissionEnum = 113)
INSERT INTO LDPermissions (ProjectID, PermissionEnum, ObjectKey) VALUES (NULL, 113, NULL);
INSERT INTO LDRolePermissions (RoleID, PermissionID)
SELECT 1, p.PermissionID
FROM LDPermissions p
WHERE p.PermissionEnum = 113
AND NOT EXISTS (SELECT 1 FROM LDRolePermissions rp WHERE rp.RoleID = 1 AND rp.PermissionID = p.PermissionID);Step 8: Set up the VPWeb impersonation account#
VPWeb reads case files and connects to SQL as a fixed Windows account, not as the person signed in to the web client. Use a dedicated standard (non-administrator) account for this. An administrator account does not work reliably here: when VPWeb impersonates it, Windows hands SQL a filtered token without administrative rights and the database connection is refused. Create the account and grant it what it needs. Choose a password that does not contain the account name, or Windows rejects it.
$pw = Read-Host "Impersonation account password" -AsSecureString
New-LocalUser -Name "vpwebsvc" -Password $pw -FullName "Viewpoint web service" -PasswordNeverExpires -AccountNeverExpires
foreach ($inst in "PRO","REV") {
sqlcmd -S "VIEWPOINT\$inst" -E -C -Q "CREATE LOGIN [VIEWPOINT\vpwebsvc] FROM WINDOWS; ALTER SERVER ROLE sysadmin ADD MEMBER [VIEWPOINT\vpwebsvc];"
}
# Grant the account access to the file store, the temp folder and the web folder.
icacls "D:\Data" /grant "vpwebsvc:(OI)(CI)M"
icacls "C:\VPTemp" /grant "vpwebsvc:(OI)(CI)M"
icacls "C:\inetpub\wwwroot\VPWeb" /grant "vpwebsvc:(OI)(CI)M" Then point VPWeb at the account. Open C:\inetpub\wwwroot\VPWeb\appsettings.Production.json and set these values under Settings. If you entered an account during the installer wizard, replace the values that are already there.
"ImpersonationUser": "vpwebsvc",
"ImpersonationPassword": "<the password>",
"ImpersonationDomain": "VIEWPOINT" Recycle the application pool afterwards with Restart-WebAppPool -Name "Viewpoint". The password is stored in plain text in this file, which sits on the server only; keep the server access-controlled. If you later change this account's Windows password, update it here too, or the document viewer stops loading.
Step 9: Set up the desktop applications#
The installer deployed Processing and Review as browser-launched (ClickOnce) applications. On a shared machine a more reliable approach is to run the application files directly, because the browser launch installs per user and can be refused without a prompt. The script below copies each application to C:\ViewpointApps and creates all-user desktop shortcuts for Processing and Review. It also copies the Worker, which Step 11 uses.
$apps = @(
@{ name = "PMC"; exe = "LateralData.Applications.PMCEx.exe"; shortcut = "Viewpoint Processing" },
@{ name = "Review"; exe = "LateralData.Applications.Dashboard.exe"; shortcut = "Viewpoint Review" },
@{ name = "Worker"; exe = "LateralData.Consoles.WorkflowRuntimeHost.exe"; shortcut = $null }
)
foreach ($app in $apps) {
$verDir = Get-ChildItem "C:\inetpub\wwwroot\Viewpoint\$($app.name)\Application Files" -Directory |
Sort-Object Name | Select-Object -Last 1
$dest = "C:\ViewpointApps\$($app.name)"
New-Item -ItemType Directory -Force -Path $dest | Out-Null
Get-ChildItem $verDir.FullName -Recurse -File | ForEach-Object {
$rel = ($_.FullName.Substring($verDir.FullName.Length + 1)) -replace '\.deploy$',''
$target = Join-Path $dest $rel
New-Item -ItemType Directory -Force -Path (Split-Path $target) | Out-Null
Copy-Item $_.FullName $target -Force
}
if ($app.shortcut) {
$lnk = (New-Object -ComObject WScript.Shell).CreateShortcut("C:\Users\Public\Desktop\$($app.shortcut).lnk")
$lnk.TargetPath = Join-Path $dest $app.exe
$lnk.Save()
}
}Register the document viewer control for each application. The Visual C++ 2013 runtime from Step 3 is required for this to succeed.
regsvr32 /s "C:\ViewpointApps\PMC\outsidex856.ocx"
regsvr32 /s "C:\ViewpointApps\Review\outsidex856.ocx"
regsvr32 /s "C:\ViewpointApps\Review\officeviewer.ocx" To pre-fill the server name on the login screen, create a Config.ini next to each application's executable.
# C:\ViewpointApps\PMC\Config.ini
SQLServer=VIEWPOINT\PRO
# C:\ViewpointApps\Review\Config.ini
SQLServer=VIEWPOINT\REVIf you want Review's viewer to render Word, Excel and PowerPoint files, install Microsoft Office on the machine. To test, double-click the Processing shortcut and sign in. If a shortcut does nothing at all when launched, a Visual C++ runtime from Step 3 is missing.
Step 10: Apply the licence#
Conduent issues the licence as one or more .xml files, keyed to the machine name, which is why you set the name before installing. Each desktop application reads a file named license.xml from its own folder. Processing and the Worker use the processing licence; Review uses the review licence.
Apply it with the Viewpoint Installation Center, the same installer you ran in Step 4. Mount the ISO, run LateralData.Tools.Installer.exe, and on the Installation Center click Add files (described there as "Add license, logo, configuration files to applications"). The wizard asks for a destination folder and the file to add, then copies the file into that folder. Point it at each application folder under C:\ViewpointApps in turn and add the matching licence.
| Application folder | Licence |
|---|---|
| Processing licence |
| Processing licence |
| Review licence |
The copied file must be named license.xml in the destination folder; rename it if your licence file arrives under a different name. Copying the file in by hand has the same effect as the wizard. With the licences in place the applications run fully licensed.
Step 11: Set up the Worker#
The Worker performs the processing jobs (extraction, text, imaging and the rest) that operators queue in Processing. It runs continuously in the background, independent of any signed-in user, and picks up jobs from every user. Run it as a scheduled task that starts at boot. The Worker connects to SQL as the account in the task, so that account needs the SQL login from Step 7; use an administrator account here.
$action = New-ScheduledTaskAction -Execute "C:\ViewpointApps\Worker\LateralData.Consoles.WorkflowRuntimeHost.exe"
$trigger = New-ScheduledTaskTrigger -AtStartup
Register-ScheduledTask -TaskName "Viewpoint Worker" -Action $action -Trigger $trigger -User "VIEWPOINT\vpadmin" -Password (Read-Host "Worker account password") -RunLevel Highest
Start-ScheduledTask -TaskName "Viewpoint Worker" The Worker registers itself in the database. Confirm it is running from the Workflow tab in Processing, where it appears as an available worker. One Worker is typical for a single machine; the licence sets how many are allowed.
Step 12: Enhanced Review with Google Vertex AI (optional)#
VPWeb includes an Enhanced Review feature that uses Google's Vertex AI (Gemini) to assess documents against review criteria. It stays off until you supply Google Cloud credentials. You need a Google Cloud project with the Vertex AI API enabled, a service account in that project with the Vertex AI User role, and a JSON key for that service account.
Create the service account and key in Google Cloud, or ask whoever manages your Google Cloud project for an existing key. Using the gcloud command line:
gcloud services enable aiplatform.googleapis.com --project=<PROJECT_ID>
gcloud iam service-accounts create vp-enhanced-review --project=<PROJECT_ID>
gcloud projects add-iam-policy-binding <PROJECT_ID> --member="serviceAccount:vp-enhanced-review@<PROJECT_ID>.iam.gserviceaccount.com" --role="roles/aiplatform.user"
gcloud iam service-accounts keys create vertex-key.json --iam-account=vp-enhanced-review@<PROJECT_ID>.iam.gserviceaccount.com --project=<PROJECT_ID>Some organisations block service-account key creation by policy. If the key command is refused, ask your Google Cloud administrator to create the key or to grant an exception for the project.
Enhanced Review reads its settings from the Configuration table in the LDControl database on the PRO instance. The script below sets the five values it needs; the JSON key value is the entire contents of the key file. Run it on the machine with the key file present.
$key = Get-Content "vertex-key.json" -Raw
$cfg = [ordered]@{
EnhancedReviewServiceProvider = "2" # 2 = Vertex AI
EnhancedReviewVertexProjectID = "<PROJECT_ID>"
EnhancedReviewVertexRegion = "us-central1" # a region that serves your chosen model
EnhancedReviewVertexModelName = "gemini-2.5-flash"
EnhancedReviewVertexJsonKey = $key
}
$cn = New-Object System.Data.SqlClient.SqlConnection("Server=VIEWPOINT\PRO;Database=LDControl;Integrated Security=SSPI;TrustServerCertificate=true")
$cn.Open()
foreach ($k in $cfg.Keys) {
$c = $cn.CreateCommand()
$c.CommandText = "UPDATE dbo.Configuration SET ConfigValue=@v WHERE ConfigName=@n; IF @@ROWCOUNT=0 INSERT dbo.Configuration (ConfigName, ConfigValue) VALUES (@n, @v);"
[void]$c.Parameters.AddWithValue("@n", $k)
[void]$c.Parameters.AddWithValue("@v", $cfg[$k])
[void]$c.ExecuteNonQuery()
}
$cn.Close()
Restart-WebAppPool -Name "Viewpoint" The machine needs outbound internet access to reach Vertex AI. Choose a region that serves your chosen model; us-central1 serves the Gemini models, and you can use a region nearer your data if it offers the model. Store the key file securely and delete it from the machine after loading, since its contents are now in the database and anyone with the key can call Vertex AI as this service account.
Keep VPWeb responsive#
VPWeb compiles parts of itself on first use, so the first page load after the machine starts, or after the application pool restarts, can take up to a minute. Later loads are fast. To stop users meeting that delay, keep the pool running and preloaded.
Install-WindowsFeature Web-AppInit
Import-Module WebAdministration
Set-ItemProperty IIS:\AppPools\Viewpoint -Name processModel.idleTimeout -Value "00:00:00"
Set-ItemProperty IIS:\AppPools\Viewpoint -Name startMode -Value AlwaysRunning
Set-ItemProperty "IIS:\Sites\Default Web Site" -Name preloadEnabled -Value True
iisresetAllowing several users at once (optional)#
Windows Server allows two administrative remote sessions out of the box, which suits a small team. For more concurrent users, install the Remote Desktop Session Host role. It runs without per-user licences for 120 days; beyond that you need Remote Desktop client access licences and a licensing server. Each additional user needs the Windows account, Administrators membership, SQL logins and Viewpoint user record from Step 7. After you change a user's group membership, have them sign out fully and back in, not just disconnect, or the change does not take effect in their session.
Verify the install#
Confirm the environment end to end.
http://localhost/loginshows the Viewpoint web login page.- You can sign in to VPWeb and open a document in the viewer.
- The Processing and Review desktop shortcuts open their login screens.
- Processing's Workflow tab lists the Worker as available.
- Creating a test project in Processing succeeds, which exercises the certificate from Step 6. Set the file store to a folder with room for your data, on a separate disk from the system drive where possible, and confirm the impersonation account from Step 8 can reach it.
- Loading a few documents and running them through processing completes, and they appear in Review.
