This integration syncs agreement invoices from Connectwise Manage to eAutomate as contracts.
Connectwise (CW) Manage and the RMM tools do an excellent job of tracking software etc included on the contract, so we recommend that the CW Agreement be the master for contract billing. The base amount and additions from the Connectwise agreement will push to eAutomate and update the line items on the contract when the agreement is billed in Connectwise. This sync does not push any information from eAutomate to Connectwise.
**It's important to note that Connectwise Manage is not an accounting software and therefore things do not have to balance in the same way that they do in eAutomate. For example, the Connectwise invoice can have an item with a quantity and extended price and show a billed amount of zero. EAutomate will not allow this, the software automatically calculates the billed amount as the quantity times the extended price.
This process will create the contract if it does not exist in eAutomate, and create the items on the contract if they also do not exist. You can choose to create the contracts and items yourself in eAutomate and link them to the agreements and products in Connectwise, but we recommend allowing the sync to create these for you. This way requires the least manual intervention by your team and therefore saves you the most time.
We are using "templates" in eAutomate to create both the contracts and the items. A contract template is simply a non-billing contract, with the customer as your dealership, that the sync will copy, update the customer, and add the line items to match the Connectwise agreement invoice. Similarly, item templates are simply items that the sync copies when creating new items in eAutomate to be added to the contract. We create these templates for you as part of the testing process for the sync.
The trigger for the sync is the creation of the agreement invoice in Connectwise. Once a new agreement invoice is created, the sync will check:
1. Is the customer linked in Connectwise? (This is done either through a custom field in CW for the eAutomate customer number, or if you already track the eAutomate customer number in an existing field, we can use that. Invoices, where the customer/bill to customer/ship to customer is not found, will error and not import)
2. Is the agreement in Connectwise linked to a contract in eAutomate? (This is done by a custom field in CW. If the contract was created by the sync, the field will be automatically updated by the sync. If you want to sync to existing EA contracts, you'll need to manually fill in these custom fields with the EA contract number).
3. If the contract does not exist, the sync will create the contract by copying the appropriate contract template, then add the line items from the agreement invoice to the contract as serviceable items. Items that don't already exist in eAutomate will also be created based on the item templates.
4. If the contract does exist, the sync will update the existing contract to match the agreement invoice from Connectwise.
Once the contract is updated by the sync, you will need to cycle the contract in eAutomate and bill the contract.
- Must be on Connectwise 2015.3 or later, REST API was introduced in 2015.3. On-Premise or Hosted will both work.
- Must be on eAutomate 8.7 or later, Serviceable items added then. Will work with either ECI Hosted or On-Premise.
- As an aside, we suggest you enable the "HelpDesk Button" in eAutomate.
- .NET Framework on the server must be version 4.6.1 or higher.
- Must be subscribed to ID747
- Serviceable items must be enabled in eAutomate (see here for where to turn that on)
Run Schedule: Every 10 minutes
Type of Output: Sync, no email output
* * *
Variable W: Serviceable Item - Enter the item number to be added to the contract that will be used on all service calls generated by ID965 integration. **Required, the default value is CW-Service.
Variable 4: Default Contract Template - the name of the default contract template in eAutomate. This template would be used if there is no matching contract template for the agreement type from Connectwise. The default is **CWAgreement. **Required, we will create this template for you during the preflight process.
Variable 3: Contract # Field - the name of the custom field in Connectwise used to store the eAutomate contract number. See this link for how to set up the custom field in Connectwise. The default value is ZCJ_ContractNumber. **Required
Variable 5: Default Item Template - the name of the default item template in eAutomate. This template would be used if there is no matching item template for the product type in Connectwise. The default is **CWNonInventory. **Required, we will create this template for you during the preflight process.
Variable 6: Item # Field - the name of the custom field in Connectwise to store the eAutomate item number. See this link for how to set up the custom field in Connectwise. The default value is ZCJ_ItemNumber. **Required
Variable 11: Default Term Code - Termination code to use when a contract detail line item is terminated on the eAutomate contract. Needs to be the code, not the description. **Required**
Variable 1: Agreement Status - If you would only like to sync agreements with a specific status, enter those statuses here. Leave blank to sync all agreement statuses.
Variable 2: Agreement Type - If you would only like to sync agreements of a specific agreement type, enter the specific agreement types to sync here. Leave blank to sync all agreements.
Variable 7: Exclude Product Types - If there are specific product types in Connectwise that you do not want to sync over to eAutomate, enter those here. Leave blank to sync all product types. (For example, if you have cost items on the Connectwise agreement and do not want those products to sync over to eAutomate, enter the product type of those items here to exclude them.)
Variable 9: Contract # Prefix - If you would like the contracts created by the sync to have a specific prefix (CW, MNS, IT, etc) enter that here. When the contract is created by the sync, it will add the letters from this variable to the beginning of the contract number. Leave blank to use the default contract number.
Variable 8: Renumber Invoices - You have the option to renumber the contract invoices in eAutomate to match the invoice number in Connectwise. Set this variable to Yes to renumber the invoices, choose No to not renumber the invoices. (Example, the invoice number in Connectwise is CW1234 and the invoice number in eAuomate for the contract invoice is INV123456. If you choose yes here, we will install a process that will change the invoice number in eAutomate from INV123456 to CW1234. This is especially helpful if you are sending the invoice from Connectwise, but applying the payment in eAutomate.)
Variable 12: Invoice Renumber Prefix - If you chose to have the invoices in eAutomate renumbered, you will need to select a prefix to use on the invoice. The default value is CW. If your invoices in Connectwise are ONLY numeric, you must select a prefix to add to the invoice number in eAutomate. (Example, your Connectwise invoice is 1234, to avoid possibly duplicate invoice numbers in eAutomate, you must choose a prefix to add to the invoice so that the renumbering process will change the invoice number to CW1234 or MNS1234)
Variable 10: Invoice Status Trigger - If you only want agreement invoices in a specific status (Closed, for example) to sync over, enter that status in this variable. Leave blank to sync all agreement invoices regardless of invoice status.
* * *
2. Create API keys for CEO Juice in ConnectWise and enter them on the CEO Juice website (See this link for instructions on how to do that)
3. We do require that the initial sync goes from your production ConnectWise database to a Test/Development EA database, so you will need to have a test eAutomate database set up for this process. If you have a test ConnectWise database, we can initially sync from that, but it is not required. (This sync process only pushes information from ConnectWise to eAutomate)
4. We also require a test copy of our CEO Juice database to be created for the testing phase. See this link for details on how to do that.
5. Do you currently track the eAutomate customer number on the company record in ConnectWise?
If yes, enter the field name on variable 5 of alert ID747.
If not, you’ll need to create a custom field to track this. See these instructions on how to do that. The default custom field is ZCJ_CustomerNumber
6. There are also a few other custom fields that need to be created in ConnectWise:
ZCJ_ContractNumber – On the agreement, to store the contract number from eAutomate.
ZCJ_ItemNumber – On the product ID, to store the item number from eAutomate.
See instructions on how to create these custom fields in CW here.
7. Review the Product types you currently have in ConnectWise, these will translate to items in eAutomate. We highly recommend that you have one product type per GL code.
8. Review the Agreement types you currently are using in ConnectWise, do you wish to sync all agreement types or only a few?
9. Once all the above steps are completed, please let us know. We will then run our PreFlight app that will create the contract and item templates in your test eAutomate database.
10. After the templates are created, you will need to code the templates with the proper codes. See this documentation on what is needed.
11. Once you have notified us that the templates are all coded properly, we will run the sync and pull all agreement invoices in the past 45 days into your test eAutomate database. You will then review the contracts that were created, bill the contracts, and verify all information synced correctly from ConnectWise. After confirming that everything is syncing properly, we will move the templates to your production eAutomate and repoint the sync to production to push in the agreement invoices.
* * *
The agreement sync can be set to push CW agreement invoices to existing contracts in eAutomate. If you would like to do this, please be aware that the sync cannot update existing line items on the contract. All existing line items will be terminated the first time that the contract syncs with a CW invoice. Additionally, you will need to manually enter the contract numbers in the custom field in CW, being sure to match the contract numbers exactly.
Connectwise allows you to put the same item on an agreement multiple times, this is not supported on contracts in eAutomate. When an invoice has the same item number multiple times, the sync will roll up the price from each of the items and add it to the eAutomate contract as one line item. The line item description will show all descriptions from Connectwise.
To determine if an agreement should update an existing contract or insert a new one, the sync first looks to our internal tables; if the agreement has already been synced to a contract, that contract will be updated by this agreement. If there is no sync record for this agreement, the sync app will look to the ZCJ_Contract Number custom field for a value. If there is a value here, the sync will attempt to sync to this contract. If this number does not exist in eAutomate the sync will fail and not insert this agreement invoice. If there is not sync record and the custom field is not populated, the sync will insert a new contract into eAutomate. **Very important to note that once the sync record is created in our internal tables, you can not change the value in the custom field!! Doing so will cause the sync to fail on this agreement.
Please review the needed set up in each of the below areas for the agreement sync to properly work:
Billing Cycles - Must Match between Connectwise and eAutomate!
The billing cycles that are set in Connectwise must match to the billing cycle options you have for the contracts in eAutomate exactly, both the code and the description.
Billing cycles in eAutomate are found in Tools/Lists and Codes/Billing Cycles:
Billing cycles in Connectwise found in setup tables/Billing Cycle
If you look at the quarterly billing cycle in the above examples, quarterly is shown as Quarterly in eAutomate and QU in Connectwise. This mismatch will cause an issue when the agreement invoice syncs to the contract in eAutomate. It doesn't matter what the billing cycle is named, as long as they match exactly in both systems. (Most likely, it is easier to change the Connectwise billing cycles to match what you have in eAutomate, though the Bill Cycle ID in Connectwise can only have a max of five digits.)
Serviceable as an Item
The sync process will add the base and additions from the Connectwise agreement invoice to the eAutomate contract as individual line items. In order to add these items to the service contracts in eAutomate, you will need to enable the option to Allow items to contracts and service calls.
This option is located in Tools\Options:
Click on Contracts (1) and then check the option for Allow items on contracts and service calls (2).
The tax billed on the EA contract invoices are tied to the tax authority on the contract and the tax category that is on the contract base distribution code.
On the contract, the tax code is set on the Billing/Contact tab. For the contract to bill tax, there needs to be a billable tax code entered and the Taxable box must be checked.
These two settings will default to the customer settings when the contract is created.
Every tax code in eAutomate is made up of tax authorities, you can have multiple tax authorities on one tax code. The tax authority determines what to charge tax on, based on the tax flags that are added:
Each contract distribution code has a tax category listed:
In order for the contract to charge tax, the tax category on the base distribution code needs to match one of the categories to tax that is listed on the tax authority. For example, if the base distribution code is set with a tax category of MISC and that is NOT a category listed on the tax authority, eAutomate will not charge tax on the contract invoice.
Connectwise Agreements = eAutomate Contracts
Agreement Type in Connectwise = Contract Template in eAutomate
Contract # in eAutomate = **CW AgreementType We will create these initial templates for you in the testing phase, if you create new agreement types in Connectwise after the sync moves to production you will need to create a new template for the new agreement type.
You can see the list of agreement types that you have in Connectwise in the setup tables:
The preflight process will take every agreement type that you have in Connectwise and create a corresponding contract template in eAutomate. When reviewing your agreement types in Connectwise, things to consider:
1. Do you want every agreement type from Connectwise to sync to eAutomate? You can specify on variable 2 only the agreement types you want to sync.
2. Are there any agreement types that you are not using and could remove from Connectwise?
Every template in eAutomate will be created with the format **CW AgreementType. The contract templates in eAutomate will be "shells" that are used to create contracts by the sync process. Once the contracts have been created in eAutomate, you'll need to update the contracts with the correct codes to be used.
You will need to update each contract with the following information:
1. Contract type - The contract type will drive whether the contract accrues and will automatically update the bill-code when chosen.
2. Contract bill code - The bill-code will come into play for service calls applied to the contract.
3. Status - The sync will set the eAutomate contract status to equal the Connectwise agreement status, anytime that the status exists in both systems. If Connectwise has a status that doesn’t exist in eAutomate, the Sync will use the template’s status for inserts and just leave the status alone on updates.
4. Base distribution code - The base distribution code is required; the distribution code used on the items added to the contracts is the primary driver of the revenue buckets. (The contract base distribution code would only be used if there is no distribution code on the items that are added to the contract.)
On the Billing/Contact tab of the contract:
1. Billing group: If you want IT contracts to have a separate billing group, you can add that here. It is not required, just a way to segregate the IT contracts into a separate group and something we recommend doing.
2. Tax code: You must choose a tax code for the template. When a contract is created from this shell, the tax code will be updated to match the tax code on the customer.
3. Report group: If you currently have (or would like to have) a different invoice template used for the IT contracts created by the sync, update the report group used for the template. **We do recommend sending the invoice from eAutomate**
We have two different invoice templates that we can install for you:
A. CW_Contract Invoice-NoBase: This invoice template shows the quantity and description of each item on the contract invoice, but does not show the individual line item pricing:
B. CW_Contract Invoice-WithBase: This invoice template shows the line items on the contract, the quantity, and the line item pricing:
We can install either or both of these invoice templates for you to use, you would need to create a separate report group for each invoice template and then assign the report group to the contract template. Once assigned to the contract template then all contracts created from that template will have the same report group.
Product Types in Connectwise = Items in eAutomate
Product Type in Connectwise = Item Template in eAutomate
eAutomate item number = **CW ProductType. We will create these initial templates for you in the testing phase, you would only need to create new templates if you add additional product types to Connectwise.
You can see the list of product types that you have in Connectwise in the setup tables:
Each product type in Connectwise equates to one item template in eAutomate. The distribution code selected on the item template will drive the GL bucket used when the item is added to the contract. It's important to determine what GL breakout you want from the Connectwise items, and then make sure that you have one product type in Connectwise for each GL code to be used in eAutomate.
**The templates created by the sync default to Inventory items, though you can change these to expense items. Be aware that if you are going to use ID966 (Sales Order Sync) and use items on sales order with the same product type as an item used on an agreement, that you will need to fill in several more fields on the item templates. See this ID966 documentation for those additional fields needed.
On each template, you'll need to update the following items:
1. Category: Set the category as needed
2. Unit of Measure: Set the UM as needed
3. Contract base distribution code: This code will direct all revenue for items created of this product type when used on the contract.
1. Revenue account: The revenue account that will be used for the contract revenue when this product type is used.
2. Revenue department: Department that will be used
3. Revenue distribution: Default is set to 100%, to drive all revenue for the time to one revenue account. You can add multiple revenue accounts if you want to distribute the revenue across multiple accounts.
4. Tax category: Sets if the item will be taxed when used on a contract, very important that this is set correctly to ensure the contract is billing tax correctly.
**If you have items already set up in eAutomate that match a product ID in Connectwise, please review these items and verify that all have the correct contract base distribution code in place. If the sync finds a matching item already in eAutomate, it will use that item on the contract. If the distribution code is not set on the item, the revenue from that item will default to the GL account used on the contract distribution code (code set on the contract template).
Agreement Base Charge Item Templates:
In addition to the item templates for the product types, the preflight process will also add an item template for each agreement type. Agreements in Connectwise can have both a base amount and line items, contracts in eAutomate can only have one or the other. In order to add the base amount charged on the Connectwise agreement, that amount will be added to the eAutomate contract as a line item.
You will see these templates in eAutomate with the format "**CWBase AgreementType". These item templates are only needed if you are charging base amounts on the agreement in CW, if you are using an addition item to charge a base, then these can be skipped.
* * *
Best Practices & Tips
Best Practices & Tips
If you invoiced in Connectwise and don't see the contract updated in eAutomate:
1. Check the ID954 report for any errors. The ID954 report is accessed via the SSRS console, see here for more details on this report.
2. Sometimes the contract in eAutomate is marked as inactive or terminated, and therefore will not show up in the billing queue. Go to the contract list and search for the CW invoice in the Blanket PO field:
Suggested Product Types
Financial Code Description
|5200||IT Related Hardware|
|5210||PCs & Laptops|
|5230||Switches, Routers, Infrastructure Hardware|
|5240||Miscellaneous Hardware & Accessories|
|5260||3rd Party Hardware|
|5265||3rd Party Software|
Suggested Agreement Types
Financial Code Description
|4300||Professional Services IT & Support|
|4310||Project-Based IT Services|
|4320||Block of Time IT Services|
|4330||Fee-Based IT Services|
|4340||3rd Party IT Services|
|4350||Managed Services 24/7|
|4360||Managed Services Business Hours|
|4370||Managed Services Monitoring Only|
|4380||Total Managed Care 24/7|
|4410||Monthly Disaster Recovery/Backup|
|4420||Monthly Host Services|
|4430||Backup Services (BDR)|
|4440||Security Services (SOC)|
|4450||SecureTide Spam Protection|
|4480||Microsoft 365 Licenses|
|4490||Help Desk Services (HD)|
|4510||Externally Hosted Cloud (Azure, AWS, Etc.)|
|4520||Internally Hosted Cloud|
See this post for how to set up an agreement in Connectwise with a minimum base.
Custom Field Setup
To create the needed custom fields in Connectwise, first go to the Setup Tables and choose Custom Fields from the list:
For the custom field ZCJ_ContractNumber (used to store the EA contract number) enter "agreement" in the Screen column and then click Overview from the Pod Description column:
Click on the plus sign next to Custom Fields to add a new custom field:
1. Enter ZCJ_ContractNumber in the Field Caption.
2. Check the box for Display on Screen?
3. Check the box for Include on List View?
4. Click the Save and Close button
To create the custom field ZCJ_ItemNumber (Used to store the EA item number), go back to Setup Tables > Custom Fields. Select Product Setup under the screen menu and then click on Overview:
Click on the plus sign by Custom Fields to add a new field and use the Field Caption ZCJ_ItemNumber:
Again, select the checkboxes for Display on Screen? and Include on List View?. Then click on the save and close button to save the new record.
* * *
ID747 - Connectwise Customer Sync
ID954 - SSRS Report for Agreement Sync details
ID965 - Connectwise Service Call Sync *In Beta
ID966 - Connectwise Sales Order Sync *In Beta
* * *