Overview
Zervicepoint consists of a number of components which work together, they can all be deployed to the same server or be distributed on multiple servers.
- Single-Server - All components installed on the same server (on-premises deployment)
- Multi-Server - Components deployed on seperate nodes (Frontend/Backend) (on premises deployment)
- Multi-Tenant - Hosting scenario (Central components hosted by hosting provider, store/worker setup for each tenant)
Components
These are the main components that make up a Zervicepoint installation. All are seperate components that are deployed through a bundled installer. This means that you can to install individual components on multiple nodes to support high-availability scenarios.
Note
ProcessSystem does not support high-availability scenario, and should instead be setup as a clustered service through Windows Failover Clustering.
| Component | Description | Area |
|---|---|---|
| UserWeb | The user web for Zervicepoint, end users go to this site. | Frontend/Central |
| AdminWeb | The admin web for Zervicepoint. Used to create services, pages, email-templates, order history and more. | Frontend/Central |
| ApiWeb | REST API endpoint for Zervicepoint. Almost everything (and more) that can be performed in AdminWeb can be done through our Management API | Frontend/Central |
| ClientWebService | A Web Service, used to fetch data in system X and present in forms in services. | Frontend/Worker |
| ProcessSystemWeb | ProvisioniongSystem connect to this endpoint for next job to execute. ProvisioningSystem and ProvisioningSystemInventory Inventory local plugins through this service. | Frontend/Central |
| Database | Zervicepoint database (MSSQL) | Backend/Central |
| ProcessSystemService | Picks orders from database and schedules them in workflow manager | Backend/Central |
| ProvisoningSystem | Executes powershell code in the workflow and sets inventory information process system web | Backend/Worker |
| ApiPSModule | PowerShell module for Zervicepoint Management API | Any server from where you want to run ZP PS Cmdlets |
| Microsoft Service Bus | Queue manager for messages | Backend/Central |
| Microsoft Workflow Manager | Runs workflows | Backend/Central |
| WorkflowManagerExtensions | Contains Zervicepoint WorkflowManager files. | Backend/Central |
- Central refers to to component which are installed in the hosting provider environment
- Worker refers to the server which will execute local ClientWebService requests and ProvisioninSystem activites. Installed on-premsies in a multi-tenant scenario
Zervicepoint topologies
On premise - Single Server setup
This is a simple setup for smaller deployments or "proof of concept" deployments.
The following components are installed on the same server.
- UserWeb
- AdminWeb
- ApiWeb
- ClientWebService
- ProcessSystemWeb
- Database
- ProcessSystemService
- ProvisoningSystem
- ApiPSModule
- Microsoft Service Bus
- Microsoft Workflow Manager
- WorkflowManagerExtensions
Note
For "proof of concept" deployments, the Microsoft SQL Server can be installed locally.
Layout

Before you install
You should have prepared the following before setup
| Task | Comment | Example |
|---|---|---|
| Choose hostname | This is the sitename (https://hostname/) | selfservice.example.com |
| Request certificate | In order to allow HTTPS traffic, a certificate must be issued from either a 3rd party CA or internal CA and imported to the server | "CN=selfservice.example.com" |
| Create Service Accounts | Service accounts are required for the application pool running the Zervicepoint websites and Zervicepoint services. | |
| Choose Authentication | Choose either ADFS or Azure AD as authentication for website access | |
| Create DNS record | Add a A/CNAME record for "selfservice.example.com" in either your internal/external DNS depending on if you want to publish Zervicepoint for external users or not. | selfservice.example.com 10.0.0.1 |
| MS SQL Instance | MS SQL Instance for hosting Zervicepoint database | sqlserver01.example.com/MSSQLSERVER |
| Database Permissions | The account running the deployment of Zervicepoint need access to create databases in the target instance unless the database is pre-created. Service accounts need access to the created database post-deployment. | |
| Enable required Windows Features | Zervicepoint and ServiceBus/Workflow Manager requires several Windows Features to be enabled on the Server. | |
| Setup Service Bus / Workflow Manager | Setup Microsoft ServiceBus / Workflow Manager |
Endpoints
| URL | Port | Comment |
|---|---|---|
| https://selfservice.example.com | 443 | User Web |
| https://selfservice.example.com:8443/ProviderService.svc/CallProvider | 8443 | Client Web Service |
| https://selfservice.example.com:20000/Store | 20000 | Admin Web |
| https://selfservice.example.com:30000/Store | 30000 | WebApi |
| https://selfservice.example.com:9900/ProcessSystem/ProvisioningService.svc | 9900 | Process System Web |
Depending on your environment, you may need to open traffic for 20000 (AdminWeb) and 8443 (ClientWebService)
On premise - Multi-Server setup
For on premise deployoment where high availability is important.
The following components should be installed on seperate servers:
| Component | Node | Comment |
|---|---|---|
| UserWeb, AdminWeb, WebApi, ProcessSystemWeb | WebServer1 | |
| UserWeb, AdminWeb, WebApi, ProcessSystemWeb | WebServer2 | |
| ClientWebService, ProvisioningSystem, ProvisioningSystemInventory, ApiPSModule | WorkerServer1 | |
| ClientWebService, ProvisioningSystem, ProvisioningSystemInventory, ApiPSModule | WorkerServer2 | |
| ProcessSystemService, Microsoft Service Bus, Microsoft Workflow Manager | BackendServer1 | |
| ProcessSystemService, Microsoft Service Bus, Microsoft Workflow Manager | BackendServer2 | |
| ProcessSystemService, Microsoft Service Bus, Microsoft Workflow Manager | BackendServer3 | |
| Database | SqlServer1 | High Availability Group/Failover Cluster |
| Database | SqlServer2 | High Availability Group/Failover Cluster |
Note
ProcessSystemService can't be run on multiple nodes on the same time, so should instead be setup in a failover cluster.
Note
WebServer1+2 and WorkerServer1+2 can be collocated, but recommended to be seperated with there is a lot of ClientWebService requests.
Layout

Before you install
You should have prepared the following before setup
| Task | Comment | Example |
|---|---|---|
| Choose hostname | This is the sitename (https://hostname/) | selfservice.example.com |
| Choose hostname for ClientWebService | Requests to ClientWebService for dynamic data in forms | cws.example.com |
| Request certificate for hostname | In order to allow HTTPS traffic, a certificate must be issued from either a 3rd party CA or internal CA and imported to the server | "CN=selfservice.example.com" |
| Request certificate for ClientWebService | In order to allow HTTPS traffic, a certificate must be issued from either a 3rd party CA or internal CA and imported to the server | "CN=cws.example.com" |
| Create Service Accounts | Service accounts are required for the application pool running the Zervicepoint websites and Zervicepoint services. | |
| Choose Authentication | Choose either ADFS or Azure AD as authentication for website access | |
| Create DNS record | Add a A/CNAME record for "selfservice.example.com" in either your internal/external DNS depending on if you want to publish Zervicepoint for external users or not. | selfservice.example.com 10.0.0.1 , cws.example.com 10.0.0.2 |
| MS SQL Instance | MS SQL Instance for hosting Zervicepoint database | sqlserver01.example.com/MSSQLSERVER |
| Database Permissions | The account running the deployment of Zervicepoint need access to create databases in the target instance unless the database is pre-created. Service accounts need access to the created database post-deployment. | |
| Enable required Windows Features | Zervicepoint and ServiceBus/Workflow Manager requires several Windows Features to be enabled on the Server. | |
| Setup Service Bus / Workflow Manager | Setup Microsoft ServiceBus / Workflow Manager |
Endpoints
| URL | Port | Comment |
|---|---|---|
| https://selfservice.example.com | 443 | User Web |
| https://cws.example.com:443/ProviderService.svc/CallProvider | 443 | Client Web Service |
| https://selfservice.example.com:20000/Store | 20000 | Admin Web |
| https://selfservice.example.com:30000/Store | 30000 | WebApi |
| https://selfservice.example.com:9900/ProcessSystem/ProvisioningService.svc | 9900 | Process System Web |
Note
A different hostname is needed for ClientWebService + Certificate and DNS record is needed if ClientWebService is not collocated with the other web components.
Multi-Tenant Setup
Zervicepoint supports multiple stores in one central installation. Each store has a unique URL and federation settings. Multi-tenant setup reduces the amount of time required to onboard a new customer to Zervicepoint and reduces the maintenance effort. Customers share the central parts of Zervicepoint. The information is logically seperated between the different stores.

For a Multi-Tenant scenario, you would want a high-availability environment, but for "proof of concept"/test server you can still collocate components.
| Component | Node | Comment | Location |
|---|---|---|---|
| UserWeb, AdminWeb, WebApi, ProcessSystemWeb | WebServer1 | Central | |
| UserWeb, AdminWeb, WebApi, ProcessSystemWeb | WebServer2 | Central | |
| ClientWebService, ProvisioningSystem, ProvisioningSystemInventory, ApiPSModule | CentralWorkerServer1 | Central | |
| ClientWebService, ProvisioningSystem, ProvisioningSystemInventory, ApiPSModule | CentralWorkerServer2 | Central | |
| ProcessSystemService, Microsoft Service Bus, Microsoft Workflow Manager | BackendServer1 | Central | |
| ProcessSystemService, Microsoft Service Bus, Microsoft Workflow Manager | BackendServer2 | Central | |
| ProcessSystemService, Microsoft Service Bus, Microsoft Workflow Manager | BackendServer3 | Central | |
| Database | SqlServer1 | High Availability Group/Failover Cluster | Central |
| Database | SqlServer2 | High Availability Group/Failover Cluster | Central |
| ClientWebService, ProvisioningSystem, ProvisioningSystemInventory, ApiPSModule | Worker1 | For each tenant/Store | Customer environment |
Note
In a multi-tenant scenario, it's optional to install ClientWebService and ProvisioningServer centrally. In order to run central data sources/activites they must be setup and data sources/activites are then delegated to tenants via the Zervicepoint Management API.
Before you install
You should have prepared the following before setup
| Task | Comment | Example |
|---|---|---|
| Choose hostname | This is the sitename (https://hostname/) | selfservice.example.com |
| Choose hostname for ClientWebService | Requests to ClientWebService for dynamic data in forms | cws.example.com |
| Request certificate for hostname | In order to allow HTTPS traffic, a certificate must be issued from either a 3rd party CA or internal CA and imported to the server | "CN=selfservice.example.com" |
| Request certificate for ClientWebService | In order to allow HTTPS traffic, a certificate must be issued from either a 3rd party CA or internal CA and imported to the server | "CN=cws.example.com" |
| Create Service Accounts | Service accounts are required for the application pool running the Zervicepoint websites and Zervicepoint services. | |
| Choose Authentication | Choose either ADFS or Azure AD as authentication for website access | |
| Create DNS record | Add a A/CNAME record for "selfservice.example.com" in either your internal/external DNS depending on if you want to publish Zervicepoint for external users or not. | selfservice.example.com 10.0.0.1 , cws.example.com 10.0.0.2 |
| MS SQL Instance | MS SQL Instance for hosting Zervicepoint database | sqlserver01.example.com/MSSQLSERVER |
| Database Permissions | The account running the deployment of Zervicepoint need access to create databases in the target instance unless the database is pre-created. Service accounts need access to the created database post-deployment. | |
| Enable required Windows Features | Zervicepoint and ServiceBus/Workflow Manager requires several Windows Features to be enabled on the Server. | |
| Setup Service Bus / Workflow Manager | Setup Microsoft ServiceBus / Workflow Manager |
Endpoints
| URL | Port | Comment |
|---|---|---|
| https://portal.example.com | 443 | User Web |
| https://cws.example.com.com:443/ProviderService.svc/CallProvider | 443 | Central Client Web Service |
| https://portal.example.com:20000/Store | 20000 | Admin Web |
| https://portal.example.com:30000/Store | 30000 | WebApi |
| https://portal.example.com:9900/ProcessSystem/ProvisioningService.svc | 9900 | Process System Web |
| https://cws.customer1.com:443/ProviderService.svc/CallProvider | 443 | Client Web Service |
Layout
Service Accounts
You can either use a single service account for all services, or split them.
- Frontend Account (Account running the application pool for the IIS websites/ProvisioningSystemInventory)
- Backend Account (Account running ProcessSystem/ProvisioningSystem)
- ServiceBus/Workflow Manager Account (Account running Service Bus/Workflow Manager)
| Component | ServiceAccount | Comment |
|---|---|---|
| UserWeb | Frontend | Runs the application pool for the IIS websites |
| AdminWeb | Frontend | Runs the application pool for the IIS websites |
| ApiWeb | Frontend | Runs the application pool for the IIS websites |
| ClientWebService | Frontend/Worker | Runs the application pool for the IIS websites, optionally use another one for ClientWebService |
| ProcessSystemWeb | Frontend | Runs the application pool for the IIS websites |
| Database | Backend | |
| ProcessSystemService | Backend | Run ProcessSystem Service |
| ProvisoningSystem | Backend/Worker | Runs Provisioning and ProvisioningInventory service |
| ProvisioningInventory | Backend/Worker | Runs Provisioning and ProvisioningInventory service |
| Microsoft Service Bus | Backend/ServiceBus | Use either same as for ProcessSystem or setup a unique one for ServiceBus/WorkflowManager |
| Microsoft Workflow Manager | Backend/WorkflowManager | Use either same as for ProcessSystem or setup a unique one for ServiceBus/WorkflowManager |