Of all of the Professional Services Automation (PSA) software options available, ConnectWise Manage is the most popular among our client base for ticketing and contract management. However, because of previous integration limitations, clients were billing IT contracts in eAutomate and not in CW Manage.
Below is a 20-minute overview video of the integration, use the chapters to jump to the section for each part of the sync:
The video below is the what we learned webinar, going over why you need ConnectWise Manage.
For more details on ID965 - Service Sync.
For more details on ID966 - Sales Orders.
For more details on ID912 - Moving Calls.
- 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.
- Not required, but we do 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)
* * *
Steps to set up and test:
- Give CEO Juice access to your CW Manage API, details here.
- Get us access to a test eAuto DB that won't be refreshed and a copy of our Juice DB.
- If new to CW Manage, use our process to push companies into Manage.
- Customers must be mapped between ConnectWise and eAutomate for any of the sync pieces to work properly. Mapping between the two systems is done via a custom property on the customer record in eAutomate. Details here.
- Review your Product Types for your products in CW, you'll need a different Product Type for each revenue bucket you want to track. See our suggested list here. Note we do NOT need the GL entries CW normally uses for integrations.
- Ensure your agreement types in CW match your contract types in eAutomate. Especially for the service sync, you'll want to ensure that for every "flavor" of billing you do in ConnectWise, you have a matching bill code in eAutomate.
- Once your product and agreement types are set, let us know and we'll run our "preflight" process that will create the item and contract templates in your eAutomate test database.
- Tweak the templates we create to add the correct codes etc.
- We'll sync agreement invoices from your production ConnectWise database to your test eAutomate database. New contracts will be created by the sync from the agreement invoices. See here for the pros & cons of syncing to an existing eAuto contract.
- Tell us to start the sync then review the contracts we create.
- Once you’re comfortable with the process, and all the coding is correct, we’ll copy the templates over to your live database and point the sync to run in production.
- Review our process for tracking profit here.
Most clients begin by testing customers and agreements, then move to service calls and then sales orders. You can move each piece of the sync to production independent of the other pieces, once moved to production, you cannot move back to test with that specific piece of the integration.
Creating an API Key in ConnectWise
To start the process we need API access to your ConnectWise database, use this link to generate the API key pair, or give us a username/password with admin rights to your ConnectWise database, then we can login and generate for you. Once the keys are generated you can add them to our site under the Profile / Integrations tab or email them to firstname.lastname@example.org.
Note, once you create the keys, you need to copy/save the private key, CW will not display it again once you leave that page.
We also need the URL (1) for your CW portal and the Company ID (2). These are found as below;
To create the API keys, in ConnectWise go to System -> Members
Go to the API Members tab and create a new user named CEOJuice API by clicking the + button.
(Adding an API Member does not count toward your user licenses):
Complete all of the required fields.
Once that is done, save and close the create member screen and you should see the user pop up in the API Members list. Open up that member again and go to the API Keys tab and create a new record using the + button:
Give it a description and click Save (don’t save and close).
It will populate the Public Key and Private Key fields at that time. We will need both keys. If you close it without copying the keys, you cannot view the private key again if you go back into it and will need to create a new pair again.
Please update your Integrations Page on CEO Juice subscription site (requires login by user with Admin Rights to site).
Once logged in, please click on Profile in upper right hand corner:
Select (1) Integrations tab, then (2) ConnectWise:
Then update your ConnectWise Keys, Company Name (as listed in ConnectWise) and ConnectWise URL per those created in Step 1 above:
* * *
Creating Custom Properties in ConnectWise
Sync requires several custom fields in ConnectWise to be created. To create the custom fields, go to the Setup Tables in ConnectWise. At the bottom left, click on the gear icon, then"Setup Tables" in the popout menu:
Look for "General" and then click on Custom Fields
Each custom field needs to be created in a specific area:
ZCJ_ContractNumber - Updates with eAutomate contract number. Added to the Agreement Overview section
Click on Overview and then click on the plus sign to create a new custom field:
ZCJ_ItemNumber - Used to link an item from eAutomate to a product in ConnectWise, where the item number is not an exact match to the product ID. Add to the product setup overview section:
Click on Overview and then click on the plus sign to create a new custom field:
ZCJ_OnHoldCode - Updates with the on-hold code from eAutomate for the customer. Added to the Company Overview section:
Click on Company Overview and then click on the plus sign to create a new custom field:
ZCJ_Order_Type - Used with sales order sync to create a drop-down list of options for order type. This field is optional to add, only needed if you want to use more than one order type with ID966. This is added to the order overview:
Click on Sales Order Overview and then click on the plus sign to create a new custom field.
ZCJ_EAStatus - Used with sales order sync to update with the status of the sales order in eAutomate. This custom field is also added to the sales order overview section.
ZCJ_ShipMethod - Used with sales order sync to create a drop-down list of options for the shipping method. This field is optional and only needed if you want to have more than one option for the shipping method on ID966. This field is added in the Sales Order / Shipping Information section:
Click on Shipping Information then click on the plus sign to create a new custom field:
To enable Serviceable as an Item
In eAutomate, go to Tools\Options and select the Contracts tab
* * *
Companies in ConnectWise are Customers in eAutomate; sites in ConnectWise are child locations in eAutomate.
ConnectWise Companies will be updated from their corresponding eAutomate Customer. The mapping between eAutomate and ConnectWise is done via a custom property on the eAutomate customer record. Details on that here. The sync works by looking at records updated in eAutomate since the last run (every 15 minutes, the initial sync will look back 10 years for records updated) Changes made in eAutomate will be pushed to ConnectWise. You can update and insert customers from eAutomate to ConnectWise. No changes made on the company record in ConnectWise will push back to eAutomate.
The sync will update a custom field in ConnectWise (ZCJ_OnHoldCode) with the on-hold code for the customer in eAutomate. This is an information-only field, the sync will NOT put a company in ConnectWise on hold.
Fields that are updated: Name, Address Line1, City, State, Zip, Phone Number, Fax Number, Website, Hold Code (in the Custom Field.)
EA Customer Record:
ConnectWise Company Record:
No contacts are synced between the two systems.
Products in ConnectWise are items in eAutomate.
The sync will create items in eAutomate as needed to be added to contracts and sales orders. The sync is looking for an exact match between the item number in eAutomate and the product ID in ConnectWise, if no match is found, the item will be created. If you have existing items in eAutomate that match to ConnectWise, please review these items to ensure they have the proper coding.
Our process will create several Item “templates” in eAutomate. An item template is simply an item we can copy, that is linked to the correct GL codes. See here for more details on the item templates. You will have one item template for each product type in ConnectWise.
For Agreements, items are only going to support contracts, so all Items are non-inventory, serviceable items. Items created for sales orders will need to have a sales code and either an inventory or an expense code assigned.
Click here to see how to enable Serviceable as an item in eAutomate.
Agreements in ConnectWise are contracts in eAutomate.
eAutomate Contracts are updated based on the agreement invoice from ConnectWise. This ensures that eAutomate’s billing matches CW’s billing exactly, as CW does some more advanced pro-ration.
When creating new Contracts in eAutomate, a “template” is used, similar to Items. A contract template is simply a non-billing contract, with the customer as your dealership, that we can copy, update the customer and add the line items. See here for details on the contract templates.
WE MUST CREATE THE LINE ITEMS ON CONTRACTS AND CAN NOT SYNC TO EXISTING LINE ITEMS. The eAuto contract must ONLY contain items on the CW Agreement. When syncing to existing contracts, all current line items will be terminated by the sync and new items added. You can "group bill" with other contracts in eAutomate.
To determine if an Agreement should update an existing Contract or insert a new one, sync first looks to its internal tables. If this Agreement has already been synced to a Contract, that Contract will always be updated by this Agreement. If there is no sync record for this Agreement, the sync will next look at the ZCJ_ContractNumber Custom Field. If a value was manually entered here, the indicated Contract will be updated. If there is no sync record and the Custom Field is not populated, sync will insert a new Contract in eAutomate.
The Contract template for inserts is selected based on matching the agreement type in ConnectWise to the contract template in eAutomate. If no corresponding Contract template exists, the default Contract template will be used.
Contract Details are added based on the Agreement Invoice line items. Contract Details will reflect any price changes, pro-ration, name/description overrides, etc.
Service tickets in ConnectWise are service calls in eAutomate.
The ID965 service sync will pull closed service tickets from ConnectWise and insert them into eAutomate as Ok to Invoice service calls. This is a one-directional pull from ConnectWise to eAutomate; once the ticket is pushed, no updates made in ConnectWise will affect the service call in eAutomate.
See here for more details on the service ticket sync.
There is also an option to move calls between eAutomate and ConnectWise. This is ID912, details on that sync are here.
Sales orders in ConnectWise are sales orders in eAutomate.
The ID966 sales order sync will take orders in a specified status in ConnectWise and insert them into eAutomate as sales orders. The sync will create any needed items that do not exist already in eAutomate. These items will be created based on the item templates, that correlate to the product types in ConnectWise.
The sales order sync works in conjunction with ID634, the alert used to insert sales orders into eAutomate.
See here for more details on the sales order sync.
* * *
Best Practices & Tips
See the attachment at the bottom of this post for a sample invoice of the same contract in CW & eAuto. We recommend sending the eAutomate invoice, though we support sending either invoice. We offer three different custom invoice formats for you to use to send the contract invoice from eAutomate. Details on those here.
Once the contract bills in eAuto we will update the eAuto invoice to have the CW agreement invoice # with a CW prefix. Once paid in eAuto we will mark paid in CW. Note: we see some clients who are sending the eAuto invoice but still want the eAuto invoice # changed, the number should be updated within 15 minutes of the contract being invoiced but you don't want to send the invoice before the number is changed.
Suggested Accounts and Product Types
See below for our suggested list of Product Types and the GL accounts they would tie to in eAuto.
Decide what contracts should sync
You can filter the agreements that will sync to eAutomate based on the agreement type or the agreement status. These are both set by variables on ID964, details on those here.
Sync to existing contracts in eAuto
We see clients who have been billing their IT contracts in eAuto without a PSA tool ask that we sync to those same contracts after they switch to CW Manage, so they can have contract profit reports that include the old contract. While this is possible we do not recommend it, as it can cause many sync problems. These issues are mainly around the dates on the contracts; ConnectWise ONLY bills full months, starting on the first, while eAutomate allows you to start the billing period on any day of the month. Switching the existing contracts in eAutomate to the new billing dates in ConnectWise can cause issues with the billing period dates.
Instead, we suggest you let our sync create a new contract, then change that contract # in eAuto to match the next revision on the old contracts. Note you will also need to update the field in CW Manage that stores the eAuto contract #. If you have existing contracts that are tied to leases then this may be worth the effort.
For more details on syncing to existing contracts, see this post.
* * *
ID747 - Customer Inserts/Updates
ID912 - Moving Calls
ID964 - Agreement Sync
ID965 - Service Call Sync
ID966 - Sales Order Sync
* * *