Skip to main content

Set up the Practice CS Connector (Early Access)

Install the Practice CS Connector, connect it to Ignition and Practice CS, and run your first sync. Most firms are up and running in about 30 minutes.

Written by Nicole Baptiste

Learn how to install the Practice CS Connector, connect it to Ignition and Practice CS, and run your first sync. Most firms complete setup in about 30 minutes.

This connector is in beta and currently being tested with a small group of firms. Check anything it writes to Practice CS, and validate it against a restored or sandbox database before going live.

Setup is one-time and done from the connector app's Settings page. The Setup checklist on the Home page tracks each step and shows what is still missing. Steps marked For IT involve SQL Server or network work. If someone else manages your database or network, hand those sections to them.


Before you start

Make sure you have:

  • An Ignition account, with a user who has Practice Admin access

  • Practice CS installed, and the details of its SQL Server database: server name, database name, and either a SQL login or the Windows account you use

  • A Windows PC or server (x64) that can reach the Practice CS database, usually the machine Practice CS runs on

  • The ID of the Practice CS bank account that should receive receipts, for example OPERATING

  • A decision on which staff member should be stamped on posted receipts, and which on pushed invoices

🚀 This feature is available as a plan add-on; reach out to your Key Account Manager for more details.

Network requirements (for IT):

  • Outbound HTTPS on TCP 443 to developers.ignitionapp.com and desktop.ignitionapp.com

  • SQL connectivity from this machine to the Practice CS SQL Server

  • Local TCP port 4177 free on this machine, used once during Ignition sign-in

If a third party such as Rightworks hosts your Practice CS server, talk to your Ignition account manager before installing. Hosted environments need approval from the hosting provider first.


Step 1: Install the connector

  1. Download the installer from the link provided by your Ignition team.

  2. Sign in to Windows as the user who will operate the app, then run the installer on the machine that can reach your Practice CS database.

  3. Launch the Practice CS Connector. You land on the Home page, where the Setup checklist guides you through the remaining steps.

The app keeps itself current. When a new version is available, an Update available button appears in the left navigation.

Pro tip (for IT): if your Ignition team supplied a checksum, verify the download in PowerShell with Get-FileHash .\Ignition-Desktop-Connector-*-x64.exe -Algorithm SHA256 before approving it through Windows SmartScreen.


Step 2: Prepare database access (for IT)

If your firm already has a SQL login the connector can use, skip ahead to Step 3. Otherwise, have your IT admin or DBA complete this step.

Collect the Practice CS SQL details

  1. On the Practice CS server, open Command Prompt and run hostname to get the computer name.

  2. Open services.msc and find the SQL Server instance name. For a named instance the server name is COMPUTERNAME\INSTANCENAME. For the default instance, use just the computer name.

  3. Connect in SQL Server Management Studio and confirm you have the firm's live database, not a sample, by checking that dbo.Client shows real clients. Note the receiving bank account ID and staff you will need later; posting and billing staff are chosen from a picker in the app.

Create a dedicated connector login

Run the script below as a SQL administrator, replacing the database, login, and password placeholders. It is grouped by feature: sections 1 to 3 and 7 are needed by every install, and you can skip sections 4 to 6 for features you will not use. Grants only apply to objects that exist in your database, so it is safe to run on firms without the Project Management module.

USE [master];
IF SUSER_ID(N'ignition_connector') IS NULL
 CREATE LOGIN [ignition_connector] WITH PASSWORD = N'REPLACE_STRONG_PASSWORD',
 CHECK_POLICY = ON, CHECK_EXPIRATION = ON;
GO
USE [YOUR_PRACTICE_CS_DATABASE];
IF USER_ID(N'ignition_connector') IS NULL
 CREATE USER [ignition_connector] FOR LOGIN [ignition_connector];
GRANT CONNECT TO [ignition_connector];
GO
DECLARE @u sysname = N'ignition_connector', @sql nvarchar(max) = N'';
-- 1. Read access used by every page (clients, services, invoices, receipts, WIP)
SELECT @sql += N'GRANT SELECT ON OBJECT::dbo.' + QUOTENAME(name) + N' TO ' + QUOTENAME(@u) + N';' + CHAR(10)
FROM (VALUES
 (N'Client'), (N'Client_Status'), (N'Client_View'), (N'Contact'), (N'Contact_Address'),
 (N'Contact_Email'), (N'Contact_Phone'), (N'Staff'), (N'Bank_Account'),
 (N'Activity'), (N'Engagement'), (N'Engagement_Template'), (N'Project'), (N'Project_Template'),
 (N'Task'), (N'Tracking_Description'), (N'Schedule_Item'), (N'Schedule_Item_Series'),
 (N'Schedule_Item_Assignment'), (N'Sheet_Entry'), (N'Sheet_Entry_Open_Value_Cache'),
 (N'Billing_Decision'), (N'Invoice'), (N'Invoice_View'), (N'Integration_Invoice'),
 (N'Integration_Application'), (N'Online_Payment'), (N'Ledger_Entry'), (N'Ledger_Entry_Type'),
 (N'Ledger_Entry_Subtype'), (N'Ledger_Entry_Application'),
 (N'Receipt_Entry_Ledger_Entry_Application_View')
) AS t(name) WHERE OBJECT_ID(N'dbo.' + name) IS NOT NULL;
-- 2. Key allocation, used by every write
SELECT @sql += N'GRANT EXECUTE ON OBJECT::dbo.COMMON_dp_Allocate_Unique_Identifiers TO ' + QUOTENAME(@u) + N';'
-- 3. Receipt posting (Receipts page)
SELECT @sql += N'GRANT INSERT ON OBJECT::dbo.' + QUOTENAME(name) + N' TO ' + QUOTENAME(@u) + N';' + CHAR(10)
FROM (VALUES (N'Ledger_Entry'), (N'Ledger_Entry_Application')) AS t(name)
WHERE OBJECT_ID(N'dbo.' + name) IS NOT NULL;
-- 4. Invoice push (Invoices page, "Ready to push")
SELECT @sql += N'GRANT INSERT ON OBJECT::dbo.' + QUOTENAME(name) + N' TO ' + QUOTENAME(@u) + N';' + CHAR(10)
FROM (VALUES (N'Invoice'), (N'Integration_Invoice')) AS t(name)
WHERE OBJECT_ID(N'dbo.' + name) IS NOT NULL;
-- 5. Invoice push with "Engagement/project attribution" turned on
SELECT @sql += N'GRANT INSERT ON OBJECT::dbo.' + QUOTENAME(name) + N' TO ' + QUOTENAME(@u) + N';' + CHAR(10)
FROM (VALUES (N'Sheet_Entry'), (N'Billing_Decision')) AS t(name)
WHERE OBJECT_ID(N'dbo.' + name) IS NOT NULL;
-- 6. Projects (experimental): create Practice CS projects from accepted proposals
SELECT @sql += N'GRANT INSERT ON OBJECT::dbo.' + QUOTENAME(name) + N' TO ' + QUOTENAME(@u) + N';' + CHAR(10)
FROM (VALUES (N'Project'), (N'Schedule_Item'), (N'Schedule_Item_Series')) AS t(name)
WHERE OBJECT_ID(N'dbo.' + name) IS NOT NULL;
EXEC sp_executesql @sql;
GO
-- 7. Connector audit table: created here so the connector never needs CREATE TABLE rights
IF OBJECT_ID(N'dbo.Ignition_PracticeCS_Sync_Audit', N'U') IS NULL
BEGIN
 CREATE TABLE dbo.Ignition_PracticeCS_Sync_Audit (
 sync_audit_KEY int IDENTITY(1,1) NOT NULL
 CONSTRAINT PK_Ignition_PracticeCS_Sync_Audit PRIMARY KEY CLUSTERED,
 idempotency_key nvarchar(40) NOT NULL
 CONSTRAINT UK_Ignition_PracticeCS_Sync_Audit_idempotency_key UNIQUE,
 ignition_object_type nvarchar(30) NOT NULL,
 ignition_object_id nvarchar(120) NOT NULL,
 practice_cs_ledger_entry_KEY int NULL,
 practice_cs_invoice_ledger_entry_KEY int NULL,
 sync_status nvarchar(30) NOT NULL,
 sync_message nvarchar(1000) NOT NULL CONSTRAINT DF_IgnitionSync_message DEFAULT N'',
 source_payload_json nvarchar(max) NOT NULL,
 created_at_utc datetime2(0) NOT NULL CONSTRAINT DF_IgnitionSync_created DEFAULT SYSUTCDATETIME(),
 updated_at_utc datetime2(0) NOT NULL CONSTRAINT DF_IgnitionSync_updated DEFAULT SYSUTCDATETIME()
 );
END;
GRANT SELECT, INSERT, UPDATE, DELETE ON OBJECT::dbo.Ignition_PracticeCS_Sync_Audit TO [ignition_connector];
GO
-- 8. Server-level permission, ONLY if you use section 5 (attribution) or 6 (Projects).
-- Practice CS's own change-history triggers on those tables read a server DMV.
USE [master];
GRANT VIEW SERVER STATE TO [ignition_connector];
GO
  • The connector never needs db_owner, and it never updates or deletes Practice CS rows. Writes are inserts only, plus its own audit table. For Windows authentication, create the login and user for the dedicated domain account and apply the same grants.

  • Leave out what you do not use. Receipts alone need sections 1 to 3 and 7. If you skip section 8, invoice attribution and Projects will refuse to run with a clear message naming the missing VIEW SERVER STATE permission, rather than half-writing anything.

  • Section 7 creates the connector's own audit table up front. If you would rather not have a custom table in the Practice CS database, contact your Ignition team; the connector can fall back to scanning the ledger, at some cost to speed.

  • Stop and contact support if the COMMON_dp_Allocate_Unique_Identifiers procedure is missing or different.

  • If a feature is blocked by a missing permission, the connection log in Settings shows the failing call and, for the server-level permission, the exact grant to run.


Step 3: Connect your Ignition account

  1. Leave the app open, go to Settings → Ignition account, and select Connect Ignition.
    ​

  2. Your browser opens an Ignition sign-in page. Sign in to the correct firm and approve access.

  3. The browser returns to a localhost confirmation page. Back in the app, the badge switches to Connected.

There are no client IDs or secrets to configure. Windows encrypts the saved token for the current user, and you can revoke the connection from Ignition at any time.

If your browser shows a certificate warning on the final localhost page, that is the connector's own local address and is expected. Choose to proceed; the connection still completes securely.


Step 4: Connect the Practice CS database

  1. Go to Settings → Practice CS database.
    ​

  2. Enter your database settings, then select Test connection and Save.

Setting

What to enter

SQL server name

The server\instance from Step 2, for example MYSERVER\CREATIVESOLUTION

Database

Your verified firm database, not a sample database

Sign-in method

SQL login for the dedicated connector account, or Windows login with domain, username, and password

Username / Password

The dedicated connector account from Step 2

Encrypt

On. Turn on Trust server certificate only if IT approves

Sample database key fallback

Off in production. Use only for a restored sample database during validation

Your credentials are encrypted and stored only on this computer. The connector talks directly to your SQL server and to Ignition, and your Practice CS data is not sent anywhere else.


Step 5: Set posting defaults

  1. Go to Settings → Posting defaults. The staff lists load once your database connection is saved.
    ​

  2. Pick the Posting staff, who will post receipts to Practice CS, and the Billing staff, stamped on invoices pushed to Practice CS.

  3. Enter the Bank account ID that receives receipts.

  4. Choose a Receipt type. Auto is recommended; it picks the right Practice CS type for each payment. You can also fix it to Electronic funds, Credit card, Check, or Cash.

  5. Optionally set a Control date to stamp on receipts, or leave it blank to use the date the payment was pulled.

  6. Select Save.


Step 6: Match your clients

Before invoices or receipts can sync, each Ignition client needs to be linked to its Practice CS record.

  1. Go to the Clients page and refresh. Filter by Synced, Not linked, or Only in Practice CS to see where you stand.
    ​

  2. Link clients using any of these approaches.

Matching one by one

Pick the matching Practice CS client directly on the client's row.

Matching clients by name

Ignition proposes pairs whose name appears exactly once on each side. Tick the ones you want and match them in one go.

Matching by CSV

Export the match candidates, fill in the Practice CS client ID column, and import the file back. This is the fastest option for a long client list.

Matches are saved and reused by every future sync, so you only do this once per client. Rows for unmatched clients stay marked Needs review until they are linked. Clients that exist only in Practice CS can be added to Ignition from this page, with your firm's approval.


Step 7: Map your services

Invoice push needs to know where each Ignition service bills in Practice CS.

  1. Go to Services. If you would rather not rebuild your service list by hand, use the import view to bring your Practice CS services into Ignition first.
    ​

  2. Select Map to Practice CS and point each Ignition service at the Practice CS engagement and project it bills against. For a long list, download the CSV template, fill it in, and import it.

Pushing stays blocked for any service that is not mapped, so it is worth doing this up front.


Step 8: Run your first sync

Every page follows the same rhythm: refresh to load the latest rows, review what is ready versus needing attention, select the rows you want, then select the action button. Nothing is written until you do.

Importing and pushing invoices

  1. Refresh, then filter to Ready to import. Select the unpaid Practice CS invoices you want in Ignition and import them. Already-imported invoices cannot be selected again.
    ​

  2. To send billing the other way, filter to Ready to push, select the issued Ignition invoices, and push them into Practice CS. Turn on Engagement/project attribution if you want them tied to the mapped engagement and project.
    ​

Posting receipts

  1. Refresh to pull recent Ignition payments. Use the date filter to widen the window if a payment is missing.

  2. Filter to Ready to post, select the payments, and post them. Receipts apply to the oldest open invoice first; anything without a matching invoice stays as an unapplied credit on the client.
    ​

Pro tip: start with a small batch and spot-check the result in Practice CS Receipt & Adjustment Entry before posting in bulk.

Anything marked Needs review tells you exactly what is missing, usually an unmatched client, an unmapped service, or a posting default, and becomes ready once you fix it and refresh.


Recommended: validate before go-live

Work through this against a restored or sandbox database, with sign-off from your DBA and Practice CS owner, before running the connector against live data.

  • Ignition remains connected after restarting the app

  • Test connection passes and Practice CS clients appear under Clients

  • Client matches are reviewed

  • A receipts refresh fetches the expected pending payments for the chosen dates

  • Bank account, control date, receipt type, amount, and client match are correct

  • Exactly one test receipt is posted and appears once in Practice CS

  • The receipt applies to the oldest open invoice first, or remains an unapplied credit

  • Re-running the same payment is skipped as already posted

  • Practice CS accounts receivable and Ignition reconcile

  • Sample database key fallback stays off


Step 9: Turn on automations

  1. Go to Automations.

  2. Turn on Auto-import new invoices and, or Auto-post receipts, and choose the time of day they should run.
    ​

Automations only touch rows that are ready; anything needing review is left for you. If the app is closed at the scheduled time, the run happens when it next opens.


Troubleshooting

Ignition sign-in will not finish: keep the app open, allow HTTPS to developers.ignitionapp.com, confirm local port 4177 is free, close the old browser tab, and retry once.

SQL timeout or login failed: verify the server\instance name, VPN, firewall or SQL port, authentication type, database user, and password, then re-run Test connection.

Rows stuck on Needs review: open the row's details, usually an unmatched client, unmapped service, or missing posting default. Fix it, then refresh.

No payments appear: widen the date filter on Receipts and confirm the payments are still pending in Ignition.

A feature fails with a permission error: check the connection log at the bottom of Settings for the failing call, and have IT apply the missing section of the grant script in Step 2. Invoice attribution and Projects specifically need the server-level VIEW SERVER STATE permission.

If you contact support, the log file is at %APPDATA%\Ignition Practice CS Connector\logs\connector-desktop.log. Never send secure-config.dpapi, SQL passwords, OAuth tokens, or unreviewed financial exports.


Related articles

Still stuck? The Help page in the connector app has this walkthrough plus page-by-page guides and FAQs. You can also contact support at help@ignitionapp.com with what you were doing, the page you were on, and any error message you saw.

Did this answer your question?