We can sync service calls (Tickets) from CW Manage to eAutomate. Both chargeable and non-chargeable, with or without materials.
See here for getting started with the sync.
The service call sync will take tickets from ConnectWise in a set status and insert them into eAutomate. We assume that you want to have technician costs associated with the contract in eAutomate, so we highly recommend that you have the ID964 agreement sync running. (You can run the service call sync independent of the agreement sync if needed, attaching calls to contracts will work much smoother with it running.)
All group billing of chargeable tickets/calls must be done in eAutomate, not ConnectWise. CW Manage and eAutomate can calculate chargeable service calls and calls for block of hours contracts very differently. We are pushing in the call header information (contract, contact, call type, description) and the time entries from the ticket in ConnectWise. You do have the option to have the imported calls bill based on the bill codes in EA (the default option) or have the billing amounts from ConnectWise override the bill codes in EA (Amount billed in CW = Amount billed in EA, regardless of bill code calculation, you must request this option be turned on and can ONLY invoice these calls with an eAgent task.)
We recommend that these calls not be touched and that you create an eAgent task to invoice the zero dollar service calls. You can set the eAgent task to filter for these calls based on bill code or call type. Billable service calls should be reviewed to ensure that the billing amount is correct before processing.
Technicians and customers need to be mapped from ConnectWise to eAutomate for the sync to work correctly. Customer mapping needs to be in place before the ticket can sync over. Details on the mapping for technicians here and for customers here.
**Important note: ConnectWise allows for time entries for the same technician to overlap, even for billable time entries. This is a very bad practice!! You do not want to be double billing your customers for time!!
Run Schedule: Daily at 5:30 PM
Type of Output: Data Push
* * *
Service Ticket Call Header:
By default, all tickets come into eAutomate with the status of OK to Invoice. You can change this via the Hidden2 variable. Updating the variable to P (for Pending) will cause the tickets to be imported with the status of Pending. Pending calls can be imported with no labor records attached, OK to Invoice calls must have a labor record attached.
1. The service call imported from Connectwise will use the same standard serviceable item for all calls. If you are using the ID964 agreement sync, this item will be automatically added to each contract created by the sync. (This item number is set on Variable W on ID964) If you are not using the agreement sync, you'll need to manually create this item number as CW-Service and add it to the contracts.
2. Contract matching is based on the following hierarchy:
A. If the agreement used on the Connectwise service ticket is synced to a contract in eAutomate, this is the contract that will be used.
B. If the customer has a single active contract of a type set in Variable Z, that contract will be used.
C. If none of the above apply, the contract will be blank.
3. The description field is pulled from the Ticket Summary field in Connectwise; the ConnectWise ticket number is also included.
4. The contact name is pulled from the contact name on the Connectwise ticket.
5. The call type follows this hierarchy:
A. If the Type from Connectwise exactly matches a call type in eAutomate, that call type will be used.
B. If there is no match, the call will default to the value you set in Variable W.
**You can also set the sync to always default to the type set in Variable W by setting Variable X to Yes.
6. The call priority follows this hierarchy:
A. If there is an equipment record attached to the call, the equipment level priority settings will be used.
B. If there is not an equipment record on the call, the call will use the priority from the call type.
7. The technician will be the ticket owner if there is one. If there is no owner assigned to the ticket in ConnectWise, the technician from the last labor entry on the ticket will be used.
8. The call number from Connectwise will be entered in the PO field on the service call.
9. The bill code on the call is set by this hierarchy:
a. If there is a contract associated to the call, the contract bill code is used. (Bill code set at equipment level on contract, if no bill code there, then the contract level bill code. See more details on bill codes here.)
b. If there is no contract associated to the call, the default bill code set in variable 5 will be used.
Error Report for Call Header Entries:
Each night after the sync attempts to process calls, you will receive an email listing any errors for the call headers imported:
See details on errors here.
Service Call Labor Entries:
Each time entry from the Connectwise ticket will import as a separate labor entry on the service call in eAutomate.
Work types from the time entries in ConnectWise will match to the Activity code on the labor entry in eAutomate:
**Calls MUST have at least one labor entry to be synced to eAutomate!! ConnectWise allows for labor conflicts on time entries...this is a bad practice and you should not have overlapping time entries for the same technician!!
Error Report for Labor Entries:
Each night, you'll get an email with any errors importing the labor records.
See here for further details on these errors.
Service Call Remarks:
The notes from the time entries from the ticket in Connectwise that are marked as the resolution will show on the remarks tab of the call in eAutomate. If no time entries are marked as Resolution, the notes from the last time entry will be imported.
The sync will add a note of the type set in variable 7 for each labor entry, indicating the technician, the time they were on site and the total hours and billing rate from the ticket in ConnectWise:
* * *
Variable 8: Move calls when status - Enter the status from ConnectWise that indicates a call should be synced from ConnectWise to eAutomate. This must be a "closed" status. Statuses in ConnectWise are found in the setup tables, on the service board status tab:
Variable 1: Ignore Board - Enter the board name from Connectwise of any boards you do not want to sync calls from. Separate multiple boards with a comma. Leaving blank will import all tickets.
Variable 6: Post Sync Status - If you would like to have the ticket in ConnectWise updated to a certain status after the call has been synced to eAutomate, enter that status here. Must be a valid status in ConnectWise. If the variable is left blank, no update to the status in ConnectWise will be made.
Variable Hidden2: eAuto Call Status - The status of the calls when they are imported to eAutomate. The default option is OKB, which is Ok to Invoice. Changing the variable to P will cause imported calls to have the status of Pending. **Required for sync to work correctly**
Variable 5: Default Bill Code - Enter the bill code to use if the service call is not attached to a contract. If left blank, calls not attached to a contract will import with no bill code and have to have the bill code added manually before the call can be invoiced.
Variable W: Default Call type - Call type to use when the ticket type in Connectwise does not match the call type in eAutomate. **Required for sync to work correctly**
Variable X: Always default call type - Yes/No, the default value is No. Setting this to yes will cause the sync to always use the call type specified in Variable W when importing calls. **Required for sync to work correctly**
Variable Y: Default On Hold Code - If you want every call imported to be placed on hold, enter the on-hold code to use here. When this is left blank, the imported calls will not be placed on hold. **Current version does not support using the on-hold code, future versions will**
Variable 2: Always Default Technician - Always use the default technician on all calls imported. The default value is no, switch to yes to always use the default technician and not the owner on the ticket. **The default technician only applies to calls that come into EA as Pending**
Variable 3: Default Technician - If you have set variable 2 to Yes, enter the technician to use on the calls. Enter the number from the EA employee record:
Variable Z: Contract Types - Contract types normally associated with Managed IT contracts. If the sync doesn't find a matching contract based on the ID964 synced agreements AND the customer has one active contract of one of these types, that contract will be used on the service call.
Variable 7: Note Type - NoteType in eAutomate for note which will be written against each Call created, showing the raw data from Connectwise for HourlyRate and HoursBilled - required if someone touches the call in EA and forces an unintentional reconciliation against the BillCode. Note types are found in Lists and Codes:
1. Subscribe to both ID747 and ID965, being sure to update the variables as needed. Be sure to review the variables in this section and make sure to enter the information for all required variables! If you don't have a login to our subscription site, you can email email@example.com to have us set you up with a login.
These next three steps may need an IT person with admin access to ConnectWise and eAutomate. These three steps should already be in place if you have tested other portions of the sync.
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) **If you have already created keys for other portions of the CW sync, you do not need to create new ones.**
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 while in test) **It's important that this test eAutomate database is not refreshed with new data during the testing process!!
**When creating a test eAutomate database be sure that you set up the company in eAdmin and don't just set the database up in SSMS. If you have questions on how to create a company in eAdmin, the ECI help page (16.1 | 17.2 | 20.1) has details under E-admin > Company Management > Creating and Restoring a Company:
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.
Needed mapping between ConnectWise and eAutomate.
5. The customers need to be mapped between ConnectWise and eAutomate so the sync knows the proper customer record to use in eAutomate when creating calls. See details on how to set this mapping here.
6. The technicians need to be mapped between ConnectWise and eAutomate to ensure the proper technicians are used on the service calls created. See details on how to set this mapping here.
7. Ticket types in ConnectWise need to match to call types in eAutomate to properly update the service call with the correct call type in eAutomate. Details on this here.
8. Work types in ConnectWise need to match to activity codes in eAutomate to ensure proper billing of billable service calls. See details on this here.
Once these steps are completed please let us know by sending an email to firstname.lastname@example.org, we'll then install the sync pieces and can push the first test of tickets over from ConnectWise to eAutomate. The service sync needs to be thoroughly tested before moving to your production environment!
9. For testing, please verify these things:
- Import tickets for every technician that will be working in ConnectWise, verify the labor records are coming across correctly. See how to map technicians here.
- Close several tickets of different billing rates to verify that the bill codes in eAutomate bill as expected and match to ConnectWise. You may need to set up advanced bill codes to have the correct billing rates applied, see details on that here.
- If you are using block time contracts, import several service tickets to be applied against block time contracts in eAutomate to ensure that the hours are decremented correctly. For additional information on block time contracts, click here.
- Verify that the labor entries have the correct activity code that matches to the work type in ConnectWise. Do you need to add activity codes in eAutomate or rename them to align with the work types in ConnectWise? Details on matching activity codes to work types are here.
- Close at minimum one call of every ticket type and check that the call has the correct type set in eAutomate. Details on call types are here.
- Invoice all test calls to verify billing and workflow for handling invoicing tickets.
- Review error emails to ensure understanding of the different error codes listed. Details on these errors are here.
Once all testing has been completed, please let us know and we can schedule moving the service call sync to point at your production database.
* * *
The service call sync uses custom properties to map companies from ConnectWise to eAutomate. **If you have the EA customer number in ConnectWise, in the Company ID, Account ID or custom field ZCJ_CustomerNumber we can update the custom properties in eAutomate for you**
There are two custom properties that need to be set up in eAutomate for the customer mapping, one for the main company number (Parent Account) and one for the sites (Child Accounts).
Create the custom property in eAutomate:
Go to Tools - Lists and Codes - Attributes and then click on new:
Attribute name: ZCJ_CW_CompanyID
Description: ConnectWise Sync Company ID
Data type: Numeric
The value to be entered in this field is the Company_RecID number from ConnectWise:
Attribute name: ZCJ_CW_SiteAddressRecID
Description: ConnectWise Sync Site's Address RecID
Data type: Numeric
This is the Address RecID from the site in ConnectWise:
Technicians need to be mapped exactly between Connectwise and eAutomate. This is done by entering the Member RecID from ConnectWise into a custom property in eAutomate. (**If you have previously mapped the employee number from eAutomate to the employee ID field in ConnectWise, we can move this data from ConnectWise to eAutomate for you.)
Create the custom property in eAutomate:
Go to Tools - Lists and Codes - Attributes and then click on new:
Attribute name: ZCJ_CW_EmpRecordID
Description: ConnectWise Sync Member ID
Data type: Numeric
The value to be entered in the custom property is the Member RecID from ConnectWise:
Call types must also match precisely between eAutomate and Connectwise, otherwise, the default call type will be used from Variable W. **If you do not want the response time on ConnectWise calls to affect your numbers, set the call types used to NOT be Corrective Maintenance category call types.
To see the types in Connectwise, go to Setup Tables > Service Board List and choose the correct board. Then click on the Type tab to see the list of types for that board:
The sync is pulling the information from the Type column, for example, A/V Projector.
The call types in eAutomate are found by going to Tools > Lists and Codes and then choosing Call Types from the drop-down menu:
The sync is pulling the information from the Call Type column, for example, AV Issue.
Each field must be an exact match for the call type to populate correctly. If no match is found, the default call type is used. **There is a 15 character limit to call types in eAutomate, ConnectWise allows for much longer call types. You may need to truncate call types in ConnectWise.**
Call types also drive the priority used on the call:
Your bill code set up in eAutomate is critical to ensuring that calls are billed correctly in eAutomate!! If you are not already using the advanced bill codes in eAutomate, you will need to set these up depending on your billing structure in ConnectWise. See details on setting up advanced bill codes here.
You'll want to review the bill codes you are currently using on your CW contracts...are you using an all-inclusive bill code? Are there certain types of work that are not covered by the agreement? How are you billing for increments of time? Do different work types have different billing rates?
**If you have a large variance in the rates used to bill calls, or depend on the work role in ConnectWise to change the rate on the calls, you may want to consider using the sync option to override the EA bill codes and have the sync enter the amount billed in ConnectWise. See further details on this here.**
If the sync was unable to link the call to a contract, the bill code you set in variable 5 will be used.
If the service call has a contract attached, the bill code is set by this hierarchy:
1. Contract Equipment/Item Level:
2. If there is no bill code set at the equipment/item level, eAutomate looks to the Contract Level:
**By default the CW-Service item is added to the contract with no bill code set and so all service calls will use the bill code set on the contract. If for any reason you need the service calls on the contract to bill differently than the contract bill code is set at, you will need to manually add the correct bill code to the CW-Service item.
Override Bill Codes
While we recommend that you set up bill codes in eAutomate to match how you are billing in ConnectWise, we understand that sometimes there are reasons why this is not feasible. If you have a large number of bill codes that would need to be created or use the work roles to change the rate charged on a call, you may prefer to simply push over the amount billed in ConnectWise to the service call in eAutomate. To turn on this option, you must send an email to email@example.com to request the feature be turned on, there is not a variable setting to control this.
With this option turned on, all service tickets in ConnectWise must be invoiced prior to the status being set to the trigger identified in variable 8. ConnectWise does not make a determination about what is and is not covered under the agreement until invoicing.
Please be aware that you may have issues with eAutomate recalculating the billing amount if you open the imported call and make any changes to the call. To view the labor hours and rate used on the calls, use the eView Service Calls (Open) Labors instead of opening the call in eAutomate.
The sync will add a note to the service call with the hours and billing rate from ConnectWise so you have that information if needed. All calls will need to be billed via an eAgent task, to avoid eAutomate recalculating the billing amounts based on the bill codes.
For an overview of how to set up the eAgent task to invoice service calls, see this link.
A few things to note on setting up the eAgent task in your test eAutomate database:
- eAgent tasks do not run on schedule in the test database, you must manually trigger the task to run it.
- Set the task to invoice non zero calls and make sure to check the option to send the invoices to the document queue.
- The task will send the invoices to your document queue, as long as you don't manually run the eAgent task to send the invoices from the document queue, the invoices will not send to your customers.
Activity Codes/Work Types
Activity codes in eAutomate correlate to work types in ConnectWise. Work types in ConnectWise can alter the billing rates on agreements.
Work Types in ConnectWise are set in: Setup Tables > Work Types:
Activity codes in eAutomate are used to define the kinds of activities that technicians can perform on service calls, record on time cards, and record as unavailable time on the employee record.
The activity code category is where you set the settings that will be used for all activity codes of that type. You create activity codes in Tools - Lists and Codes - Activity Code Categories
Once the category is created, you assign the category to the activity code and set how that activity code will be taxed. Activity Codes are in Tools - Lists and Codes - Activity Codes:
To ensure proper billing in eAutomate you should have the work types in ConnectWise correlated to Activity Codes in eAutomate so that work that is billed in ConnectWise is also billed in eAutomate. EAutomate only allows for 15 characters in the activity code, while ConnectWise allows for more than 15. The sync will match work type to activity code based on the first 15 characters of the work type in ConnectWise.
A work type is set on each time entry on a call in ConnectWise:
When the call is pushed into eAutomate by the sync, the matching activity code will be used on the labor entry:
Activity codes in eAutomate drive the billable rates used on the service calls.
In general, you'll see two call notes for each imported call that are added by the sync, one for when the call was created and one for the billing information from ConnectWise:
Double click on the note to open and see the details.
Note Type EVENT:
Note Type CWData:
**There will be one note added for each time entry in ConnectWise.
In the Tools \ Options menu, you'll need to check the option to Enable aggregate incremental billing on service calls:
Checking this option will allow you to group labor records by the rate, or the rate and activity code, before applying billing increments. In other words, by checking this box you can set the service calls to group all of the labor records billing the same rate (or rate and activity code) to sum the labor time for billing.
Once checking this option, you'll see this additional option on the billing labor codes:
You can choose to group the labor records by rate or by rate and activity code. Under the incremental billing section, select either Bill combined regular and overtime hours in increments or bill regular and overtime hours in separate increments. Then the check box next to Aggregate labor records before applying billing increments to enable the drop-down to group the labor records.
For example, a ticket in ConnectWise has three time entries, one for 14 minutes, one for 20 minutes, and one for 16 minutes. The bill code in eAutomate is set with a one-hour minimum. Aggregating the labor entries will sum all three entries together for a total of 50 minutes of labor, and bill the customer the one-hour minimum. Not aggregating the labor entries will bill the customer for three hours, as each labor entry will qualify for the one-hour minimum.
Each night, you will receive two emails listing any errors for imported calls. One for errors at the call header level and another for errors at the labor entry level.
Call Header Errors - Email Subject: ConnectWise Service Module Integration
Informational only - the call will still import:
- CallType Defaulted - Type from ConnectWise did not have an exact match to call type in eAutomate, default call type was used. The call should still import into EA.
- Contract inferred from Imported Contract Billings - Contract was linked in CEOJuice background table from ID964 sync. This will not cause the call to not import.
- Contract inferred from ContractType - Contract associated to call was inferred from the contract type set in variable Z.
- CallDate modified per time entries - The call date either doesn't exist on the time entry or it's newer than the earliest time entry on the ticket. EA won't allow for this, the call date has to predate the first labor entry so we modify the call date.
- Invalid Technician on header - There is no ticket owner on the call in ConnectWise. This will not stop the call from importing, the technician from the last time entry will be used.
- No Contract Assigned - Contract could not be determined from either the CEOJuice background tables or from a contract type used in variable Z. The service call should have been imported with no contract associated.
Errors that will stop the call from importing:
- No Customer Assigned - Customer from ConnectWise was not linked to eAutomate company record and the call was not inserted. If you update the customer mapping (see here) the call should import on the next sync push.
- No Labor Entries on Call - For a call in eAutomate to be set to OK to Invoice, there must be at least one labor entry on the call. If there are no labor entries on the call in ConnectWise the ticket will not import into eAutomate.
Call Labor Errors - Email Subject: CW Labor Issues
- No Associated Call Header - Call header was not created, so labor records can't be added. Check to see if ticket in ConnectWise was canceled.
- Call Header exists but not imported - The call header information was available but a call was not created, so labor records can't be added. Check the Call header email for the specific error on the ticket that needs to be corrected.
- Cannot find Technician - Technician is not mapped from ConnectWise to eAutomate, see here for how to fix. Updating the mapping should allow the call to import.
- Invalid Time Date - The time entry from ConnectWise lacks a Start or End timestamp
* * *
Best Practices & Tips
Best Practices & Tips
We recommend that you set up an eAgent task to invoice the calls automatically, once you are comfortable with how they are coming in. You can use filter the task to invoice calls by bill code, call type or customer to only pick up the ConnectWise calls:
An eView is the best way to review the data on the imported calls, you can use the Service Calls (Open) System view to see the list of calls that were entered by the sync. Filter the view by Entered by contains "965". You can use the system view Service Calls (Open) Labors to see all the labor records for the imported calls. Filter the view by Entered by contains "965".
* * *
ID747 - Connectwise Customer Sync
ID964 - ConnectWise Agreement Sync
ID966 - ConnectWise Sales Order Sync
ID912 - Moving Calls
* * *