The CPQ Data Synchronization Project Template works in combination with the Scheduler DriveApp to synchronize data between a Third Party system and the CPQ DriveApp database.
This gives an easy to setup and manage integration method, allowing data from a Third Party system to be used inside DriveWorks.
The template can be used to synchronize CPQ Accounts, Contacts and Items (standard and custom).
Synchronization can be performed on a schedule using the DriveWorks Autopilot Schedule Connector. Data can also be synced back to your Third Party software when a record is either added or edited in the CPQ DriveApp.
Any existing DriveWorks Integration method can be used with CPQ Data Synchronization.
To fully implement the CPQ Data Synchronization Project Template the following should exist in the same Group:
The record type being synchronized (for example Contacts) should not have any existing records.
If there is pre-existing data then the synchronization will not work.
This includes knowing:
In DriveWorks Administrator open the Group that contains the CPQ DriveApp, and:
Or
Click the Projects button from the Title Bar and select Create New Project and click Next.
Or
Replace the Name with a suitable name for the CPQ Data Synchronization Project, click Finish.
With the CPQ Data Synchronization Project open in DriveWorks Administrator:
See Calculation Table Field Headers above to understand what value is expected in the SyncFieldName column, for each row.
Also each Calculation Table has a minimum field requirement in order to create a new record.
Ensure all Minimum required fields to create a new record have a value.
Each Calculation Table has two placeholders (Value1 and Value2 in the CPQFieldName column), that can be utilized. These can be removed if not required.
Edit the following values in each of the new rows:
The name of the Custom Field (must match the column name in your Custom Fields database table).
Should be set to "Custom".
The name of the equivalent field/column in Third Party database being synchronized.
For example (additional columns not included for clarity):
CPQFieldName | CPQFieldType | SyncFieldName | |
---|---|---|---|
14 | "Manufacturer" | "Custom" | "Vendor" |
The Calculation Tables hold the data to be synchronized with the Third Party database.
The Table names reflect each Record Type that can be synchronized, use:
Each Calculation Table contains the following field headers:
Row ID
CPQ Database header name. Each subsequent row stores the name of each field in the CPQ DriveApp to be synchronized.
Value passed to the Sync project from CPQ. Each subsequent row contains a rule that retrieves the current value from the CPQ DriveApp.
Specifies if a field is a standard CPQ field or a Custom Field.
Third Party database header name, or the value to be set in the CPQ DriveApp. Each subsequent row stores the name of each field in the Third Party database to be synchronized.
Value to be sent to the Third Party database. This column allows for the CPQ Value to be manipulated before sending to the Third Party database.
Value passed to the CPQ Data Synchronization project from the Third Party Database.
Header Values to be used in SQL Select statement.
Used to exclude values from being synchronized on Add/Edit.
Each Calculation Table has its own requirements ***
SyncAccounts | SyncContacts | SyncItems | Description |
---|---|---|---|
SyncFK | SyncFK | SyncFK | The name of the field, in the Third Party database, that contains the Id of the record to be synchronized. |
Enabled | Enabled | Enabled | Must be set to TRUE (enabled) or FALSE (disabled). |
TeamName | TeamName | The Team for the record to be owned by. This ensures the correct people have access to the record. If team names in the CPQ DriveApp are different to the Third Party system Team names build a rule in this cell to accommodate this. | |
Name | Name | The Account or Item name. If the field name is the same in both databases you can use a cell reference to the CPQ Field Name (for example [3L]). | |
RelationshipType | This CPQ value can only evaluate to "Customer" or "Distributor". If left blank a default Relationship Type of Customer will be used. | ||
FirstName | The first name of the Contact to be synchronized. If the Third Party system uses a full name, you may need to split the first name from the original value. | ||
EmailAddress1 | The Contact email address. | ||
SKU | The Stock Keeping Unit of the Item. If the Third Party system does not use SKU (or equivalent), create one using DriveWorks rules for use inside the CPQ DriveApp. | ||
Price | The end user unit price of the Item to be synchronized. For Custom Items this can be left blank.
Pricing Currency Precision in the CPQ DriveApp must be correctly set or precision will be lost. | ||
Type | This should be set to either "Custom" or "Standard". |
Each record type has a Variables Folder, as in the image below:
Only some of the variables within these folders require to be edited, so the correct data is Selected/Inserted/Updated from the Third Party system being synchronized with the CPQ DriveApp.
For each Variable below replace the prefix [RecordType] with the Record Type being synchronized. This will be one of the following:
For example:
[RecordType]GetSyncDataFromTimestamp
Will be:
AccountsGetSyncDataFromTimestamp
This is located in the Schedule sub-folder of the Record Type being synchronized.
This Variable will pass a timestamp value to the CPQ DriveApp.
This timestamp value can then be used to select data from the Third Party system that has been updated since the last time the synchronization was run.
It is used inside the [RecordType]SQLSelect Variable.
This is located in the Connection sub-folder of the Record Type being synchronized.
This Variable contains the connection string details for the Third Party database being synchronized.
This may not be required dependent on the integration method used.
The connection string requires a Server and Database name. The default rule will be:
"Server=;Database=;"
If the Third Party database is SQL based this should be edited to be:
"Server=<MachineName\SQLServer>;Database=<ThirdPartyDatabase>"
To obtain the connection string:
From the Rule Builder, activate the QueryData wizard, select the browse button at the end of the SQL String field, and run through the options to find and connect to the Server.
Copy the string from the SQL String field, cancel the QueryData wizard, and paste the string between the " " in the rule editor (overwriting the default rule).
This is located in the Schedule sub-folder of the Record Type being synchronized.
This Variable is used to retrieve data from the Third Party database. If using a different method of integration, modify this Variable accordingly.
This is located in the Connection sub-folder of the Record Type being synchronized.
Enter the user name to the Third Party database. Click OK.
This may not be required dependent on the integration method used.
This is located in the Connection sub-folder of the Record Type being synchronized.
Enter the password to the Third Party database. Click OK.
This may not be required dependent on the integration method used.
This is located in the AddEdit sub-folder of the Record Type being synchronized.
Replace <TABLE> with the name of the Table from the Third Party database.
This is located in the AddEdit sub-folder of the Record Type being synchronized.
Replace <TABLE> with the name of the Table from the Third Party database.
This is located in the AddEdit sub-folder of the Record Type being synchronized.
Replace <TABLE> with the name of the Table from the Third Party database.
The CPQ DriveApp needs the name of this Data Synchronization Project passing into the corresponding Record types to be synchronized.
With the Group open in DriveWorks Administrator:
Running Data Synchronization on a schedule allows the data to be synchronized at a set time or at a set time interval.
The purpose of this type of synchronization is to import or update the data, from your Third Party system into the CPQ DriveApp, that has been modified since the previous synchronization.
The way this is performed in DriveWorks is from a Scheduler DriveApp running a CPQ Data Sync Job, and storing a Timestamp value.
The Timestamp value is used to retrieve the data that needs to be updated inside CPQ the next time the synchronization is executed.
Add a CPQ Data Sync Job to the Scheduler DriveApp.
This step defines the entities (records) that will be synchronized and allows notifications about the Job to be emailed.
If a Scheduler DriveApp does not exist in the Group, see Add A DriveApp.
Select CPQ from the Job Category drop down.
Select CPQ Data Sync from the Job drop down.
See CPQ Data Sync for more information.
Add a Schedule Connector to DriveWorks Autopilot.
This step applies the timings for the Data Synchronizing to occur.
From DriveWorks Autopilot, open the Group that should now contain the following:
Follow the steps below to add and setup the required schedule:
See Add a New Connector for more information.
See Schedule Connector for more information.