See what the NCR Counterpoint integration can do →
NCR Counterpoint runs on the subscriber's own server rather than in the cloud, so connecting it to iPaaS.com means installing two components alongside Counterpoint and then pointing the iPaaS.com subscription at them.
This article walks through that installation from start to finish. Work through it in order — each stage depends on the one before it.
These steps assume a fresh IIS installation using default paths. If IIS already hosts other applications, or non-default paths are needed, the steps still apply but the specifics will differ. Subscribers or their MiSP should involve a qualified IT professional in that case.
What gets installed
A standard installation has two components, and both are required:
CPHive: a web service installed on the Counterpoint server and published at a URL that iPaaS.com can reach. iPaaS.com calls CPHive to read and write Counterpoint records.
CPWebhooks: a Windows service that watches the Counterpoint database and notifies iPaaS.com when records change. Without it, nothing that happens in Counterpoint reaches iPaaS.com automatically.
The two work in opposite directions and are not alternatives to each other. CPHive carries data into Counterpoint and answers requests from iPaaS.com; CPWebhooks tells iPaaS.com when something in Counterpoint has changed so that iPaaS.com knows to ask.
Both components depend on supporting objects in the Counterpoint database, which are installed separately as part of this process.
CP Extender is not part of a standard installation. It is a separate optional component covering capabilities such as gift cards, loyalty, pick tickets and image handling, and it is not required for the integration described here. Subscribers whose project includes it should follow CP Extender: Setup separately.
How the pieces connect
Three references have to line up, and most failed installations are one of these being wrong:
The subscription points at CPHive: the CPHive URL is entered into the NCR Counterpoint subscription in iPaaS.com, as CP Api Url.
CPWebhooks points at iPaaS.com: the CPWebhooks service configuration holds the iPaaS.com URL for the deployment the subscriber's company was created in.
CPWebhooks carries the subscription's webhook key: the webhook API key generated on the iPaaS.com subscription is saved into the CPWebhooks service configuration. This is what identifies the notifications as belonging to that subscription.
Before You Begin
Gather the following before starting. Most of these come from the subscriber's IT team, and several have lead times:
A hostname for CPHive: a subdomain that resolves to the Counterpoint server from the internet.
An SSL certificate covering that subdomain. A wildcard certificate covering the subscriber's domain also works, as does a free certificate from a provider such as Let's Encrypt. If a current browser accepts it, it is sufficient.
Firewall access: CPHive is published so that iPaaS.com can reach it, and inbound traffic to it should be restricted to the sources that need it. CPHive reads and writes the Counterpoint database directly, so the allowlist on that address is what keeps the rest of the internet away from it. The subscriber's IT team should allow inbound traffic to CPHive from:
52.184.255.108 (the iPaaS.com production environment)
20.98.221.25 (the iPaaS.com production environment)
69.61.66.128/27 (the iPaaS.com staging environment)
any addresses the subscriber's IT team uses for troubleshooting
Counterpoint user credentials: a valid Counterpoint user id and workgroup. The user id is stamped onto every record CPHive writes, so it should be a real, identifiable Counterpoint user. The configuration also carries a password field; it is not currently used.
Counterpoint database details: the SQL Server instance name, the database name, and a SQL user with access to it. The access required is the same level Counterpoint itself uses. A dedicated user can be created, or the one Counterpoint already uses can be shared.
The Counterpoint top-level directory and company alias, both available from Counterpoint's own environment settings.
An iPaaS.com account with access to the subscriber's company.
Note which iPaaS.com deployment the company was created in — staging and production have different addresses, and CPWebhooks must be pointed at the right one.
Download the installation files
The installation files are published as a release package in the iPaaS.com install repository:
Download CPHive-Package.zip from the most recent release, then right-click it and choose Extract All. It contains three further zip files, one per stage of this installation:
File | What it installs |
CPHiveDatabaseInstallScripts.zip | The supporting objects in the Counterpoint database |
CPHive.zip | The CPHive web service |
CPWebhooks.zip | The CPWebhooks Windows service |
Versions. At the time this documentation was written, the current release is v2.1.0. Always take the most recent release rather than a specific version, unless iPaaS.com Support has directed otherwise.
CPHive v2 is required for NCR Counterpoint 8.6 and higher.
The integration is tested against NCR Counterpoint 8.6.1. Subscribers or their MiSP running a different Counterpoint release should validate the integration in a staging environment before relying on it in production.
If there is any doubt about which release applies to a particular Counterpoint version, confirm with iPaaS.com Support before installing.
Prepare the server
Install the ASP.NET Core 6.0 Hosting Bundle
CPHive runs on .NET 6.0, which must be installed on the server hosting IIS before CPHive will start.
Go to the .NET 6.0 download page and download the ASP.NET Core Runtime Hosting Bundle for Windows.
Run the installer, accept the licence agreement, and click Install.
When it completes, click Finish.
Open a command prompt or PowerShell window, type
dotnet --infoand press Enter. Confirm a 6.0.x runtime is listed.
If IIS was installed after the hosting bundle, install the bundle again — it registers itself with IIS at install time and will not be picked up otherwise.
Add the IIS roles and features
Carry these steps out on the server hosting Counterpoint.
Find the search box in the taskbar, type
server, and select Server Manager (Desktop App).In Server Manager, select Local Server or All Servers, scroll down to Roles and Features, and click Tasks > Add Roles and Features.
Click Next on the Before You Begin screen.
Select Role-Based or Feature-Based Installation and click Next.
Choose the server running Counterpoint and click Next.
Scroll down, expand Web Server (IIS), then expand Web Server and configure each group:
HTTP Features: check every option except WebDAV Publishing. Leaving WebDAV unselected is critical — it intercepts the HTTP verbs CPHive relies on, and an installation with WebDAV enabled fails in ways that are hard to trace back to it.
Health and Diagnostics: check HTTP Logging, Logging Tools and Request Monitor if they are not already checked.
Performance: check every option, including Static Content Compression and Dynamic Content Compression.
Application Development: check .NET Extensibility 4.5 or later, ASP.NET 4.5 or later, ISAPI Extensions and ISAPI Filters if they are not already checked.
Security: check every option if not already enabled.
Expand Management Tools, then expand IIS 6 Management Compatibility, and check IIS Management Console, IIS 6 Metabase Compatibility, IIS Management Scripts and Tools and Management Service.
Click Next on the Features screen to keep the defaults.
Confirm the selections and click Install, then wait for the installation to complete.
Create the CPHive application pool
Open Internet Information Services (IIS) Manager — search for
IISfrom the Windows search bar.Right-click Application Pools and select Add Application Pool.
Enter
CPHiveas the name, set .NET CLR version to No Managed Code, leave the other defaults, and click OK.Right-click the new application pool and click Advanced Settings.
Under General, set Enable 32-Bit Applications to True, then click OK.
CPHive must have its own application pool. Staging and production instances must not share one.
If CPHive is installed on a different server from the Counterpoint top-level directory, the application pool needs an identity that can reach it. A local IIS user cannot access a remote directory, so a domain account — or pass-through account — with access to both the CPHive folder and the top-level directory must be set as the application pool identity. Involve an IT professional if this is unfamiliar.
The application pool account also needs full control of the CPHive DDCache folder, where CPHive stores its cached copy of the Counterpoint data dictionary. If the pool runs as ApplicationPoolIdentity, grant IUSR and IIS_IUSRS full control of that folder.
Configure SSL, DNS and network access
The server hosting CPHive must be reachable from iPaaS.com over an SSL-encrypted domain name — for example https://cp.example.com/CPHive/. How this is done varies dramatically between networks, so it cannot be covered step by step here. Unless the subscriber's team is comfortable with this, they should work with a qualified IT professional to configure the access safely. At minimum:
Pass HTTPS traffic from the outside interface of the firewall through to the server. A custom port is fine if 443 is already in use.
Restrict that inbound traffic to the iPaaS.com addresses listed under Before You Begin.
Create a DNS A record for a domain or subdomain, pointed at the public IP of the firewall. The specific name does not matter.
Obtain an SSL certificate for that name and bind it to the website hosting CPHive in IIS.
Install the database objects
Both CPHive and CPWebhooks depend on supporting objects in the Counterpoint database — the change queue that CPWebhooks reads, the table that records which events are subscribed to, and the triggers that populate the queue when a record changes.
This step is required. CPWebhooks cannot start without the change queue, and no trigger event reaches iPaaS.com until the triggers exist.
Right-click CPHiveDatabaseInstallScripts.zip and Extract All to a folder that is easy to reach later. It contains a
Scriptsfolder, anoptional-scriptsfolder, and a database installer.Using SQL Server Management Studio — or another database management tool — select the Counterpoint database and execute every script in the
Scriptsfolder, in the order given by the step number in each file name. There are a couple of dozen; they are numbered to make the order unambiguous.
This should be done by, or alongside, the subscriber's Counterpoint support partner.
The scripts also convert objects carrying the older naming used by earlier versions, so they are safe to run against a database that was previously connected to an earlier release.
A database installer ships alongside the scripts and performs the same work. Running the numbered scripts directly is recommended, because each step is visible and any failure is easy to isolate.
Install CPHive
Deploy and configure the files
Right-click CPHive.zip and Extract All to
C:\inetpub\wwwroot. This produces aCPHivefolder in that path.Open
appsettings.jsoninside theCPHivefolder and fill in the settings below.Open the editor as an administrator. Otherwise the file cannot be saved back in place, and saving it elsewhere and copying it back can change the file permissions. If any of these values are unfamiliar, ask the subscriber's Counterpoint support partner.
Setting | What to enter |
CPUser | The Counterpoint user CPHive acts as. This user id is stamped onto every record CPHive writes. |
CPPassword | Not currently used. Leave it as shipped. |
CPWorkgroup | The Counterpoint workgroup CPHive uses. This determines the templates and the numbering applied to records created through the integration, exactly as if they were created inside Counterpoint. |
CounterPointAlias | The company folder within the top-level directory. |
CounterPointTLD | The Counterpoint top-level directory. Only needs changing if CPHive is not on the Counterpoint server, or Counterpoint is installed in a non-standard location. |
ConnectionString | The user, password, server and database needed to reach the Counterpoint database. |
LogSeverity | Ships as |
The file is JSON, so any backslash in a path must be escaped — written as a doubled backslash.
The top-level directory must end with a trailing separator. CPHive appends the dictionary and company alias folder names directly onto it, so without one those paths are built joined together, and the connection test reports the directory as missing or inaccessible even though it exists.
Convert the folder to an IIS application
In IIS Manager, expand the server node, expand Sites, then expand Default Web Site.
Right-click the CPHive folder and select Convert to Application.
Choose the CPHive application pool created earlier, enable Preload, and click OK.
Once converted, the CPHive folder icon in IIS Manager changes to an application icon.
Settings are read when the site starts. After any change to the configuration file, stop and start the website — or recycle its application pool — before testing again. This applies every time the configuration is edited, not just during installation.
Test the CPHive installation
CPHive publishes an interactive API page that includes a built-in health check. This is the fastest way to find a configuration problem, and it checks more than any other single step in this article.
Open a web browser on the server.
Do not use Internet Explorer. The page will not render in it. If no current browser is installed, ask the subscriber's IT team to install one.
In the address bar, enter
http://localhost/cphive/. A page listing all the API endpoints loads.Find the HelloWorld endpoint, expand it, and click Try it out.
Click Execute.
Read the response body. A healthy installation reports "All systems appear to be running correctly." If something is wrong, the failing component is named instead — for example an inability to reach the database or the top-level directory.
The response also confirms, individually, that the database connection, the Counterpoint top-level directory and the data dictionary are all reachable, and reports the directory CPHive is running from and the Windows identity it is running as. Resolve anything it reports before continuing.
Generate the data dictionary cache. After the health check passes, run the token endpoint for a valid Counterpoint user id from the same page, then confirm a serialized data definition file has appeared in the CPHive DDCache folder. If the folder is empty, the application pool account is missing permission to it — correct the permissions, restart the application pool, and repeat.
Important: the cache is built from the Counterpoint data dictionary as it exists at the time. If custom fields are added to Counterpoint later, the cache must be regenerated, or mappings referencing those fields will fail.
Connect the subscription in iPaaS.com
Sign in to iPaaS.com and select the subscriber's company.
Create the NCR Counterpoint subscription from Subscription Management, choosing to deploy the template mappings.
Complete the settings below, then apply the settings and test the connection. A successful test returns the Counterpoint company name.
Setting | Required | What to enter |
Name | Yes | A name that identifies this subscription. |
Versions | Yes | The integration version to run. |
Create Default Mappings | No | Leave selected to deploy the template mappings with the subscription. |
CP Api Url | Yes | The address CPHive is published at. Include the port if CPHive is published on a non-standard one. |
CP Api Username | Yes | The Counterpoint user entered as CPUser in the CPHive configuration. |
CP Api Key | Yes | Any value the subscriber chooses. CPHive does not validate it. This is not the key CPWebhooks needs — that is a separate webhook key, covered in the next section. |
The remaining settings on this screen — First Order Date, Store, Drawer, Station, User, Template Customer, Default Customer, Next Customer, Tracking #s in CP, Item Description From, Inventory Qty Method, Inventory Location and Qty Stock Threshold — are optional at install time and control how the integration behaves once it is running. What each one does, and when it is needed, is covered in NCR Counterpoint Connections and Settings.
Install CPWebhooks
Deploy and configure the service
In the Program Files directory, create a folder named
iPaaS.Right-click CPWebhooks.zip and Extract All into that folder, producing a
CPWebHooksfolder inside it.In iPaaS.com, open the subscription created above and copy its Webhook API Key.
Open
appsettings.jsonin theCPWebHooksfolder and fill in the settings below.Open the editor as an administrator, or the file cannot be saved back in place.
Setting | What to enter |
Token | The Webhook API Key copied from the subscription. It ships as obvious placeholder text. |
CounterPointConnectionString | The same Counterpoint database connection used in the CPHive configuration. |
URL | Ships pointed at the iPaaS.com production deployment, which is correct for most installations. Change it only if the subscriber's company was created in the iPaaS.com staging deployment — confirm the correct address with iPaaS.com Support. |
LogSeverity | Ships as |
DebugMode | Ships switched off. Leave it off unless Support asks otherwise. |
Save the file once the settings are complete.
Create the Windows service
Open an administrator command prompt: click Start, type cmd, right-click Command Prompt and select Run as administrator.
Create the service by running the command below, entered as a single line. The quotation marks are part of the command and must be included.
sc.exe create "iPaaS CPWebhooks" binpath="C:\Program Files\iPaaS\CPWebHooks\CPWebHooks.v2.exe"
A SUCCESS message confirms the service was created.
Then start it:
Type
services.mscand press Enter to open the Services console.Find the iPaaS CPWebhooks service, right-click it, and select Start. It should report Running.
One service per Counterpoint database. A server hosting several Counterpoint databases needs one CPWebhooks installation per database, each in its own directory and each created with a distinct service name.
Additional Configuration
Optional features
Several features are not active after a standard installation and need a further step carried out against the Counterpoint database. A feature in this state produces no error — it simply never transfers automatically. If an optional feature appears to do nothing, this is the first thing to check.
There are two kinds, and it matters which one applies. At the time this documentation was written:
Shipped but switched off. Kits, location groups and category assignments are installed by the database scripts already, with their trigger events recorded as not subscribed. Enabling one of these is a matter of switching its events on — nothing needs to be created.
Not shipped. Alternate ids, substitute items, users, messages and timecards are not installed by the database scripts. Enabling one of these requires both its trigger events and its database trigger to be added.
Scripts for both cases are supplied per feature in the optional-scripts folder extracted from CPHiveDatabaseInstallScripts.zip. Only run the script for a feature that is actually in scope, and restart the CPWebhooks service afterwards.
Important: do not use the scripts published in older feature documentation for kits, location groups or category assignments. Those were written before the feature shipped with the installer, and re-running them against a current installation duplicates the trigger event records and fails, because the database trigger already exists.
Important: the scripts for features that are not shipped create database triggers on live Counterpoint tables. A mistake in a trigger can prevent records from being saved in Counterpoint. Apply them to a staging database and validate the feature end to end before running them against production.
Note that some of these features' trigger events are not offered for selection in Inbound Data Flows even once enabled in the database. Subscribers or their MiSP should validate any optional feature end to end in a staging environment before relying on it in production.
Image Mover
Image synchronisation is handled by Image Mover, which is part of CP Extender — the optional component described under What gets installed above. It is not part of a standard installation, and it cannot be configured without CP Extender already installed on the Counterpoint server.
Subscribers whose project includes image synchronisation should install CP Extender first, following CP Extender: Setup, and then configure the image service following Configure Image Mover. Otherwise, skip this step.
Post-Installation Verification
Confirm the installation end to end before handing over:
The health check passes: the HelloWorld response reports that all systems are running correctly.
The data dictionary cache exists in the CPHive DDCache folder.
The database scripts completed without errors, and the change queue exists in the Counterpoint database.
The connection test passes in iPaaS.com and returns the expected Counterpoint company name.
The CPWebhooks service is running in the Windows services list.
A record transfers: run a Manual Sync for a small collection, such as locations or shipping methods, and confirm the records arrive in iPaaS.com.
A change is detected: edit a record in Counterpoint that has its trigger events enabled, and confirm the change reaches iPaaS.com without a Manual Sync. This is the only check that proves CPWebhooks is working; every earlier check passes without it.
These checks confirm the plumbing works. To populate reference data for the first time, use Initialization rather than repeated Manual Syncs — see NCR Counterpoint Connections and Settings for the entities that support it.
Support and Troubleshooting
Transfer errors surface at Dashboard / Integration Monitoring / Error Logs.
Common installation problems:
The connection test cannot reach the service: confirm the address is correct — including its port, if CPHive is published on a non-standard one — that the site is running, that the certificate is valid for the subdomain, and that the firewall allows iPaaS.com.
The CPHive site will not load on the server itself: the ASP.NET Core 6.0 Hosting Bundle is missing, is the wrong version, or was installed before IIS. Install it again if IIS was added afterwards.
The site loads but returns an HTTP 500.30 error: check the Windows event logs on the Counterpoint server, which carry the reason the site failed to start.
A configuration change appears to have no effect: the site was not restarted. Stop and start the website, or recycle its application pool, and try again.
The configuration file will not load: it is JSON — confirm any backslashes in a path are escaped.
The health check reaches CPHive but cannot read Counterpoint: the database connection details are wrong, or the account running the application pool lacks access to the Counterpoint top-level directory.
The health check reports the top-level directory as missing even though it exists: confirm the configured path ends with a trailing separator.
The data dictionary cache file is never created: the application pool account lacks full control of the DDCache folder.
A mapping fails on a custom Counterpoint field: the data dictionary cache predates the field. Regenerate it.
The CPWebhooks service will not start: confirm the database connection details in its configuration, and that the database scripts ran successfully and created the change queue.
Records transfer on Manual Sync but changes are never picked up: CPWebhooks is not running, is pointed at the wrong iPaaS.com deployment, or is carrying the wrong webhook key.
An optional feature never transfers: its trigger events have not been enabled in the Counterpoint database, or — for a feature the database scripts do not ship — its script has not been applied.
If logging was turned up during commissioning, turn it back down before go-live. Both components ship set to record errors only, which is the correct setting for normal running. Detailed logging records the full content of every message; leaving it on degrades performance and can cause transfers to time out. Restart the component after changing it.
For further assistance, contact iPaaS.com Support.
Related Documents
iPaaS.com <> NCR Counterpoint: Background: what the integration does, the data it moves, and how the pieces fit together.
NCR Counterpoint Connections and Settings: the credentials and subscription settings that connect iPaaS.com to Counterpoint.
NCR Counterpoint Mapping Functions: the formula functions available when building mappings for this integration.
NCR Counterpoint API Endpoints: the CPHive endpoints the integration calls.
NCR Counterpoint Error Messages: the errors a transfer can raise, what causes them, and how to resolve them.
NCR Counterpoint Known Limitations: what the integration does not do, and the values to replace before go-live.




























