ConnectWise Manage (CW) is the most popular ticketing system (PSA) in place with our client base. However, because of previous integration limitations, clients were billing IT contracts in eAuto and not CW Manage.
The ability to charge a customer as soon as they add a software license as well as to cancel your vendor purchase as soon as that customer cancels has a huge impact on these low margin deals.
We are also addressing solid contract / agreement profit analysis.
15 minute overview below;
Webinar from 2.4.21:
We see clients doing a lot of double entry to keep ConnectWise in sync with eAutomate; this integration works to automate these entries and reduce the amount of manual work needed to keep the two systems in sync. This integration is included in your monthly subscription to CEO Juice. The integration works through the ConnectWise API, so it will work for both on-premise and hosted accounts for both ConnectWise and eAutomate.
ConnectWise 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. CW Manage also does a great job of quoting non-contract hardware and again CW Manage needs to be the master. eAutomate is the master for companies & credit holds as well as inventory.
Note; CW Manage is not an accounting software so things do not have to balance, for example, a line item can have a quantity, price & extended price (qty X price = ext price) and CW will allow you to change the ext price without adjusting the others, eAuto will not and we have workarounds to allow for this.
Blue is for ConnectWise and red is for eAutomate:
We are breaking the sync into 3 modules: Contracts, Service & Sales. Since all three require customer sync we have 3 additional IDs for each module. ID964 is Contracts, ID965 is Service and ID966 is Sales. You need ID747 at a minimum, then add any other you want. See here for Service ID965, here for Sales Orders ID966.
Steps to set up;
- Give CEO Juice access to your CW Manage API, details here. See here for prereqs.
- Review your Product Types for your Agreements in CW, we suggest 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.
- Tell us what field in the company record in CW you use to track the eAuto customer # or create one.
- We will sync from an Agreement invoiced in your live CW Manage DB to a contract in your test eAuto DB. Our process will create the contract in eAuto or you can sync to an existing contract. We will create and "refresh" the items on the contract every time the Agreement is invoiced in CW. We will create "templates" for contracts and items. See here for pros & cons of syncing to an existing eAuto contract.
- Ensure your agreement types in CW match your contract types in eAuto.
- Tweak the templates we create to add the correct codes etc.
- Tell us to start the sync then review the contracts we create.
- Move templates and sync to live eAuto DB.
- Review our process for tracking profit here.
For dealers running eAutomate on-premise or ECi's hosted platform the sync is every 10 minutes.
This process can 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 also choose to create these yourself. We are using "templates" in eAuto to create both.
WE MUST CREATE THE LINE ITEMS ON CONTRACTS AND CANNOT SYNC TO EXISTING LINE ITEMS. The eAuto contract must ONLY contain items on the CW Agreement. You can "group bill" with other contracts.
ConnectWise Companies will be updated from their corresponding eAutomate Customer.
Companies are only updated, not created. We need to link the CW company to the eAuto customer #.
Because of the character limitation on the Company ID field in CW we suggest you use the Account ID in the Finance Tab to store the eAuto customer #.
You can also either create a Custom Field in ConnectWise on the Company entity:
ZCJ_CustomerNumber or tell us where you store that number.
If you only use the CW Company Details Status field for Credit Hold then set that field to match your Holds (CH etc) in eAuto. Otherwise create ZCJ_OnHoldCode and we will update that.
eAutomate Customer Numbers must be manually entered in the ZCJ_CustomerNumber field. Once completed, that Company will receive updates from eAutomate. If you already have a field with the customer # then enter that in the variable for ID747.
Fields that are updated: Name, Address Line1, City, State, Zip, Phone Number, Fax Number, Website, Hold Code (in the Custom Field.)
(For v.2, bi-direction updates and/or inserts are being considered.)
Items will be created in eAutomate, based on ConnectWise Catalog Items, as needed to support Contract Details.
For Agreements, Items are only going to support Contracts, so all Items are non-inventory, serviceable items. You probably will want different items for inventory, see ID966.
Our process will create several Item “templates” shells in eAutomate. An item template is simply an item we can copy, that is linked to the correct GL codes.
There are certain values that eAutomate requires that do not have a corresponding value in Connectwise. As an example, when you create an item record in eAuto, that Item needs an inventory code or an expense code, a product category, a sales code, possibly a service code, if the item is 'serviceable as an item', and if serviceable as an item (known as 'additions' on CW Agreements) eAuto requires a distribution code. We provide the ability for the integration to 'copy' all of those eAuto required fields from an item you create in eAuto that will serve as a template only.
You need an eAuto Item template for each of the unique CW 'Product.Type' values you use within CW setting up that product.type eAuto Item template as below, we will create this template for you, however you will need to make the item an Expense Item and assign an expense code plus make it “serviceable” with a distribution code in the bottom right of the item record.
eAuto Item# = "**CW" followed by the Product.Type code in CW.
On this new item, you would enter in all the eAuto required fields using the correct codes that would apply to how you would want those items setup.
As an example, where you have an addition/product in CW set up to bill for Office365 license and the product type on that in CW is “Software”
The integration would
a) check to see if the addition/product# “Office365 License ( Base)” has already been created in eAuto
b) if not found, using the product type ‘Software’, look for an item# in eAuto setup as “**CW Software”. If we find that item in eAuto, the integration will ‘copy’ that eAuto item and replace the Item# and description on the new record being created in eAuto.
Below is an example of that eAuto Item that will act as a template only for “**CW Software”
Click here to see how to enable Serviceable as item.
UOM will update from CW IF your units in CW and eAutomate match (by name). If there is no UOM in eAutomate that matches the UOM in CW, the templates UOM will be used.
eAutomate Contracts are updated based on ConnectWise Agreements, but indirectly, based on the CW Invoices for the Agreement. This ensures that eAutomate’s billing matches CW’s billing exactly, as CW does some more advanced pro-ration.
One Custom Field must be created in CW on the Agreement entity ZCJ_ContractNumber for updating an existing eAuto contract. THIS IS ONLY NEEDED FOR PARENT AGREEMENTS AND NOT CHILD.
Setting up the Custom Field for your Agreements in CW that will contain the linked eAuto ContractNumber:
The company in CW must be syncing to eAuto as we can't sync a contract if the company does not exist.
Once an Agreement Invoice is generated in CW, the corresponding eAutomate Contract will be updated (or created, if needed.)
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.
Several template Contracts are needed in eAutomate (we will create shells):
“”**CW Default” and one additional Contract template for each CW Agreement Type. (“**CW AgreementType”)
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 app will first 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 convention. If no corresponding Contract template exists, the default Contract template will be used.
Contract “Templates” are basically just a contract header record setup with the appropriate required fields filled out.
Contract Details are added based on the Agreement Invoice line items. Contract Details will reflect any price changes, pro-ration, name/description overrides, etc.
Once the Contract and Details are updated to reflect the CW Invoice, the Contract’s NextBillingDate is moved so that the Contract will now enter the billing queue.
Decide what contracts should sync:
Note: the Companies must be linked before the contracts can sync.
Use the variable on ID964 to determine what contracts to sync, we give you 2 choices;
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. 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 above 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.
Contracts in eAuto are Agreements in CW
Company children are Sites in CW
CW Additions are best described as child contracts and are the line item detail on a contract
Items in eAuto are Products in CW
Must be on CW 2015.3 or later, REST api was introduced in 2015.3. OnPremise or Hosted ok.
Must be on eAuto 8.7 or later, Serviceable items added then.
As an aside, we suggest you enable the "HelpDesk Button" in eAuto.
Run Schedule: Every 10 Minutes
Type of Output: Sync
* * *
* * *
See each ID
* * *
Set up 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. 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;
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:
Initially, we will sync from your production ConnectWise database to a test eAutomate database. We will need you to designate a test/development eAutomate database for us to use and create a test copy of our CEOJuice database. See this link for help on creating a test CEOJuice database.
* * *
Creating Custom Properties in CW
-Sync requires Custom Properties on the ConnectWise items to accommodate the eAuto item setup codes needed before we can import: ZCJ_ContractNumber, ZCJ_CustomerNumber, ZCJ_ItemNumber
Go to Setup Tables:
At bottom left, click on the gear icon, then"Setup Tables" in the popout menu:
Look for "General" "Custom Fields" and edit, look for "Agreement Overview" and edit:
Click the + on the Custom Fields tab to add (unless it already exists):
**Note highlighted fields to be sure complete as:
Do the same to set up ZCJ_ItemNumber under Custom Fields/Product Setup/Product Overview and ZCJ_CustomerNumber under Custom Fields/Company/Overview. If you already use a field on the Company record that has the eAuto customer number entered, we can use that field and you won't need to set up ZCJ_CustomerNumber.
To enable Serviceable as an Item
Got to Tools\Options and select the Contracts tab
See below for our suggested list of Product Types and the GL accounts they would tie to in eAuto.
* * *
(ID964 - Contracts), (ID965 - Service), (ID966 - Sales)
* * *