We can sync service calls (Tickets) from CW Manage to eAutomate. Both chargeable and non-chargeable tickets will sync over.
Click here for our ID965 videos!
See here for getting started with the sync.
The service call sync will take closed tickets from ConnectWise in a set status and insert them into eAutomate as service calls. 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.)
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.
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 In this mode, labor hours and rates will match between the two systems, 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.
**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!! Depending on your settings in eAutomate, labor conflicts may not be allowed and therefore these synced tickets will not invoice.
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 any contracts that will be linked via the sync.
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, the total hours and the billing rate from the ticket in ConnectWise:
Additionally, notes on each time entry will sync over and will be visible on the service invoice when the option to Show Details is chosen.
* * *
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 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 the header technician, each labor entry on the call will map to the appropriate technician that completed the work in ConnectWise**
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.
9. Review your bill codes in eAutomate to ensure that how you are billing in eAutomate matches how you are billing in ConnectWise.
- Is everything included on agreements/contracts?
- Are there certain types of work that is not covered?
- How are you billing for increments of time?
- Do different work types have different billing rates?
- Are you using work roles in ConnectWise to change the billing rate on the ticket?
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**
The company RecID from ConnectWise is populated in the custom property ZCJ_CW_CompanyID in eAutomate. This value must be populated for the service sync to find the customer match and create the service call.
The company RecID is found in ConnectWise in the company list view:
If you do not see this column in the list view, click on the gear icon in the upper right corner and move the Company_RecID from the hidden columns to the visible columns.
This value is entered into the custom property ZCJ_CW_CompanyID in eAutomate:
If the customer mapping is not in place, the service sync will be unable to insert the service call and you will see the error "No Customer Assigned" on the call header error email. You will need to complete this mapping and the next time that the sync runs, the call will be inserted.
For details on how to automate linking the customers between the two systems, click here for an overview on the customer sync (ID747).
Technicians need to be mapped 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.)
The Member RecID is found in ConnectWise in the Member list view:
The value from the Member RecID column is entered into the custom property ZCJ_CW_EmpRecordID on the employee record in eAutomate:
If this mapping is not in place, service calls for this technician will not be able to insert and you will see an error on the call labor error email "Technician not found". You'll need to map the technician as above, and the next time the service sync runs it will insert the call.
Additionally, each member completing time entries in ConnectWise will need to have their employee record in eAutomate set as a technician:
Setting the employee record as a technician also requires the fields of Territory, Delivery method, Warehouse and Bin to be filled out.
Call types must 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:
Additionally, if there is no match between the work type set on the entry in ConnectWise and an activity code in eAutomate, the sync will set the activity code on the labor record to the default set on the call type:
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 may 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 pull the labor rate and hours billed from 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 the contract bill code 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 labor rate and labor hours from the ConnectWise time entry to the labor entry in eAutomate. In the example below, the top section lists the labor entries in eAutomate, the bottom section shows the invoiced time entries in ConnectWise. For each entry, the labor hours in eAutomate equals the WIP hrs from ConnectWise and the Labor rate from eAutomate equals the Rate from ConnectWise:
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.
Invoicing in eAutomate
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.
Use the eView Service Calls (Open) to see the total labor amount that will bill on the call:
If you notice a discrepancy in eAutomate in either the labor rate or labor hours, you can change those on the service call prior to invoicing, being very careful to make no other changes that may cause eAutomate to recalculate the billing amount on the service invoice. Do not make any changes to the Activity code on the labor entry as this will cause the entry to recalculate based on the bill code.
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 service tickets will be created with the Charge method set to On Account, this is to avoid eAgent being unable to invoice the call due to the charge method set to Credit Card/ACH. You can see the charge method on the Billing/Accounting tab of the call:
You will need to have a process in place to identify these invoices (we can create an eView for you to show these invoices) and manually process the credit card payments.
All calls will need to be billed via an eAgent task, to avoid eAutomate recalculating the billing amounts based on the bill codes. See here for details on possible eAgent errors that you may run into.
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. **While in test, it's important to run the eAgent task at least once to verify the calls invoice properly!!
- 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.
Potential eAgent Errors
Below are some of the errors that you may see when using eAgent to invoice the service calls from ConnectWise
Charge account is required - Customers that have the charge method set to Credit Card/ACH can not have service calls billed via eAgent. These calls will need to be manually invoiced. **If you are using the override bill code mode on ID965, all service calls will import with the charge method set to On Account to avoid this error. You will need to have a process in place to charge the customer's credit card for these invoices.**
Labor conflicts exist - ConnectWise allows technicians to overlap their time on tickets, if you see this error you will have to update your eAutomate settings under Labor conflicts to Allow. (required by eAgent to invoice the tickets, if this is set to Warn you will need to manually invoice these calls.) You may not want to allow most eAutomate service calls to have conflicting labor, you can change the labor conflict setting to Allow, process the eAgent task for the ConnectWise calls and then flip the setting back to the original setting.
Change these settings in eAutomate here:
Labor hours are less than the minimum hours for the selected bill code - This error indicates that the bill code on the service call has a minimum number of hours set and the labor hours on the call are below that number. The call will need to be manually invoiced.
The minimum billing period is set on advanced bill codes here:
and on standard bill codes here:
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 code categories 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 can be used to override the standard labor rate used on the service call.
Notes from ConnectWise will sync for all time entries, additionally, resolution notes will be added to the remarks field of the service call. There are two call notes added by the sync when the call is created in eAutomate.
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. Call notes are viewed by right-clicking on the service call and choosing the Call Notes option:
Double click on the note to open and see the details.
Note Type EVENT:
Note Type CW Data:
**There will be one note added for each time entry in ConnectWise.
Notes from ConnectWise that are marked as a resolution will be added to the remarks section of the service call:
Discussion/Internal note from ConnectWise is marked as Resolution:
These notes will all be added to the remarks section of the service call:
All notes from time entries in ConnectWise will sync to eAutomate and will show on the service invoice when the option to Show Details is chosen.
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 you've checked 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
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.
- Unmapped Labor Entries on Call - One or more time entries from ConnectWise have a member that is not linked to an active service technician in eAutomate.
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. The call will import.
- Contract inferred from ContractType - Contract associated to call was inferred from the contract type set in variable Z. The call will import.
- 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. The call will import.
- 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.
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 and therefore cannot be imported. This error is one that we will have to correct for you, please send an email to firstname.lastname@example.org if you see this on the error email.
* * *
Best Practices & Tips
Best Practices & Tips
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:
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:
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
* * *