Release Notes

Sept 2026 Product Update

Website Enhancements

  1. Parts Prediction Triage Integration Enhancement
    Improvements to the Parts Prediction workflow and triage integration.
  2. Asynchronous Invoice Notification Processing
    Enhanced invoice notification processing to improve system responsiveness and reliability.
  3. Save & Add New Job Button Position Updated
    Improved the placement of the Save & Add New Job button for a smoother job creation experience.
  4. Customer Page Search – First Loading Enhancement
    Improved the initial loading experience when searching from the Customer page.
  5. Send Invoice – Attach Content Enhancement
    Enhanced the Send Invoice workflow with improvements to attached content.
  6. Service and Item Description – Expand/Collapse Enhancement
    Added an easier way to expand and collapse Service and Item descriptions for improved readability.
  7. All Estimates – Open Estimate in New Tab
    Estimates can now be opened in a new browser tab, making it easier to review multiple estimates without losing your place.
  8. Show in Schedule – Job Visibility Enhancement
    Improved the Show in Schedule functionality for better job visibility and scheduling workflows.
  9. Core Charge and Core Part Management
    Added enhancements for managing core charges and core parts.
  10. Purchase Order From POS
    Added functionality supporting Purchase Order creation from POS.
  11. Automated Messages Removed From Inbox
    Automated system messages are now excluded from the Inbox, helping keep customer communications cleaner and easier to manage.
  12. Marcone SSB for Purchase Orders
    Added support for Marcone SSB within the Purchase Order workflow.

Integration Enhancements

  1. Quo Integration – Integrated Text Messaging Enhancement
    Enhanced integrated text messaging functionality with Quo.
  2. Warranty Flag Added to LG Dispatch Ticket Details
    LG dispatch tickets now include a warranty flag for improved visibility.
  3. AHS DispatchMe Mapping
    Enhanced mapping support for AHS DispatchMe integrations.
  4. Comprehensive Data Mapping & Integration Specification
    Improved data mapping and integration specifications to support more reliable integration workflows.
  5. Duplicate Customer Handling for Auto-Accept Dispatch Jobs
    Improved duplicate customer handling when dispatch jobs are automatically accepted.

Mobile App Enhancements

  1. Mobile App Role Switching Enhancement
    Improved role switching within the ServiceWorks mobile app.
  2. Explanation of Service (EOS) Added to Route Page Notes
    Added Explanation of Service (EOS) information within the Route page Notes section for easier technician access.
  3. Return Purchase Order Option in the Mobile App
    Added the ability to work with Return POs directly from the mobile app.
  4. Enhanced Parts Pick List Scan Pop-Up
    Improved the Parts Pick List scanning pop-up for a smoother mobile parts workflow.
  5. Core Part Creation and Distributor Return
    Added mobile functionality supporting core part creation and distributor returns.

Website Enhancements

  1. Parts Prediction Triage Integration Enhancement 

‘Most Used Parts’ changed to ‘Parts Triage’

The functionality of Most Used Parts has been enhanced to provide direct access to Parts Prediction Triage in Service Panda.

  • Most Used Parts button label has been changed to Parts Triage.
  • Clicking Parts Triage will begin the analysing process. Once analysis is done the button will change to “View Triage” and when clicked opens the Parts Prediction Triage page in Service Panda in a new browser tab.
  • The Parts Prediction Triage page displays suggested parts along with their corresponding prediction percentages.
  1. Asynchronous Invoice Notification Processing 

A new Asynchronous Invoice Notification Process has been introduced to improve the reliability and performance of invoice notifications. Invoice notifications are now queued and processed asynchronously, allowing invoice generation to continue without being blocked by notification processing. 

  • Asynchronous Notification Processing: Eligible invoice notifications are queued and processed in the background without impacting invoice generation. 
  • Notification Queue Management: Notification statuses such as Pending, Sent, and Failed are tracked and stored correctly for monitoring and processing. 
  • Consistent Processing: The same notification mechanism is used when sending invoices from the Job page, Invoice page, and All Jobs page. 
  • Multiple Notifications: Multiple invoice notifications can be queued and processed successfully without blocking other invoice operations. 
  • Template Validation: Only active notification templates are used. If a required template is inactive, an appropriate validation message is displayed. 
  • Notification Type Control: Notifications are sent only for the enabled notification types—Email, SMS, or Robocall—configured in the Job Type template. Disabled notification types are not processed or retried. 
  • Email Body Handling: If the custom email body is blank, the system uses the Invoice Template body. When a custom email body is provided, it takes precedence. 
  • Blank Template Validation: Notifications are not sent when the applicable template body is blank. The system logs the reason for the skipped notification. 
  • Invoice Content and Attachments: Relevant invoice information, including content, attached documents, and forms, is included correctly with the notification. 
  • Failure Handling: Failed notifications are logged independently so that a failure does not affect the processing of other notifications. 
  • SMTP Error Handling: Incorrect SMTP credentials generate the appropriate error log, and failed email notifications are not automatically retried by the process. 
  • Job-Level Email Logging: Both successfully sent and failed email notifications are logged on the corresponding Job for better visibility and tracking. 
  • Duplicate Prevention: Only unsent notifications are processed. Successfully sent notifications are marked accordingly to prevent duplicate notifications. 
  • 24-Hour Notification Logic: The notification process respects the 24-hour notification status window and prevents expired notifications from being processed again. 
  1. Save & Add New Job Button Position changed 

The Save & Add New Job button has been repositioned within the Create New Job interface to improve its placement, alignment, and accessibility while maintaining the existing job creation workflow. 

  • The Save & Add New Job button is now displayed in its new position with proper alignment and no UI issues. Both Save Job and Save & Add New Job buttons remain fully functional after the position change. 
  • The Save & Add New Job button is accessible and clickable across different screen resolutions and browser zoom levels. 
  • The existing Create New Job workflow remains unaffected by the UI enhancement. 
  1. Customers Page Search-First Loading Enhancement 

The Customers page has been enhanced to improve initial page-load performance and provide a more controlled search experience. Customer records are no longer loaded automatically when the page is opened. Users can retrieve customer records by performing a search. 

  • Empty Initial Grid: The customer grid remains empty when the Customers page is opened for the first time. 
  • Search to Load Records: Customer records are loaded when the user clicks Search, even without entering specific search criteria. 
  • Search Criteria: Users can enter valid search criteria and click Search to retrieve the corresponding customer records. 
  • Customer Summary Counts: Customer summary counts, including All Customers, Converted/Qualified, and Open, are displayed correctly on the initial page load even when the customer grid is empty. 
  • Clear Search: Clicking Clear removes all applied search criteria and returns the customer grid to its default empty state. 
  • Refresh Behavior: Refreshing the Customers page does not automatically load customer records. Records remain hidden until a search is performed. 
  • Grid Functionality: Existing sorting, pagination, export, and bulk actions continue to function correctly when customer records are displayed. 
  1. Send Invoice – Attach Contents Enhancement 

The Send Invoice functionality has been enhanced with a new Select Content File pop-up, providing users with an improved way to view and select attachments before sending invoice emails. 

  • Attachment Thumbnails: The Select Content File pop-up now displays thumbnails correctly for supported file types. 
  • Accessible from Multiple Pages: Clicking Send Invoice Email from the All Jobs page, Edit Job page, or Invoice page opens the new Select Content File pop-up. 
  • Multiple Attachments: Users can select multiple contents to include with the invoice email and a scrollbar is displayed when multiple attachments are available, allowing users to easily view and select available content. 
  • Selection Persistence: Previously selected contents remain automatically selected when the Select Content File pop-up is reopened. 
  • Successful Email Delivery: Invoice emails are sent successfully after attachments are selected from the new pop-up. 
  • Existing Functionality: The existing invoice email functionality continues to work as expected. 
  1. Service and Item Description – Expand/Collapse Enhancement 

The Service Description and Item Description fields on the New Job and Edit Job pages have been enhanced with an automatic expand/collapse behavior, making it easier for users to view and edit longer descriptions. 

  • Automatic Expansion: Clicking inside the Service Description or Item Description field automatically expands the field for easier editing. 
  • Cursor Placement: When the field expands, the cursor is automatically positioned at the end of the existing text, allowing users to continue editing immediately. 
  • Improved Content Visibility: The expanded field displays the complete description clearly without unnecessary blank space or layout issues. 
  • Automatic Collapse: The field returns to its normal size when the user clicks outside the field. 
  • Data Persistence: Updated Service Description and Item Description values are saved successfully and displayed correctly when the job is reopened. 
  • Content Flexibility: The expand/collapse behavior works correctly for empty, short, long, and multi-line descriptions
  1. All Estimations – Open Estimate in New Tab Enhancement 

The All Estimations page has been enhanced to allow users to open estimates in a separate browser tab without interrupting their current search or navigation context. 

  • Open Estimate in New Tab: Clicking an estimate opens the selected estimate in a new browser tab. 
  • Three-Dot Menu: Selecting Details from the three-dot menu also opens the selected estimate in a new browser tab. 
  • All Estimations Page Preserved: The original All Estimations tab remains unchanged after opening an estimate. 
  • Accurate Estimate Details: The new tab displays the correct details for the selected estimate. 
  • Search Criteria Retained: Any search criteria applied on the All Estimations page remain intact after opening an estimate. 
  • Multiple Estimates: Users can open multiple estimates in separate browser tabs for convenient comparison and review. 
  1. Show in Schedule – Job Visibility Enhancement 

The Show in Schedule functionality has been enhanced to provide consistent control over job visibility across the Schedule Board, Route Sheet, and Mobile App. The enhancement also introduces automatic checkbox handling when jobs transition to Scheduled status. 

  • Default Setting: The Show in Schedule checkbox is enabled by default for existing jobs, newly created jobs, and jobs received from dispatch sources. 
  • Schedule Board Visibility: Jobs with the checkbox enabled and an eligible status are displayed on the Schedule Board. Jobs with the checkbox disabled remain hidden. 
  • Status-Based Visibility: Jobs in Ready to be Reschedule or On Hold status do not appear on the Schedule Board, regardless of the checkbox state. 
  • Bucket Functionality: Existing Schedule Board bucket functionality remains unchanged and continues to work independently of the checkbox. 
  • PO Item Receipt: When a required PO item is received and a job returns to Scheduled status: 
  • Jobs with the checkbox enabled remain enabled and appear on the Schedule Board. 
  • Jobs with the checkbox disabled are automatically enabled and displayed on the Schedule Board. 
  • Rescheduling: When a Ready to be Reschedule job is dragged or processed using Save and Assign, it moves to Scheduled and becomes visible on the Schedule Board. If the checkbox was disabled, it is automatically enabled. 
  • On Hold Jobs: When an On Hold job is dragged or processed using Save and Assign, it moves to Scheduled without creating a new trip. If the checkbox is disabled, it is automatically enabled and the job appears on the Schedule Board. 
  • Scheduled Status: When a job with Show in Schedule unchecked is changed to Scheduled, the checkbox is automatically enabled and the job becomes visible on the Schedule Board. 
  • Website Visibility: Jobs with the checkbox disabled are excluded from the Route Sheet and all applicable Schedule Board views. 
  • Mobile App Visibility: Jobs with the checkbox disabled are excluded from the Mobile App Job Listing and Mobile App Route Sheet
  • Dashboard Count: The Mobile App Dashboard job count now accurately matches the jobs displayed on the Job Listing page and excludes jobs with Show in Schedule disabled. 
  1. Core Charge and Core Part Management 

The Purchase Order and Job workflows have been enhanced to provide comprehensive support for core-charge items, including core part creation, pricing, tracking, return processing, and synchronization between Purchase Orders and Jobs. 

Core-charge parts can now be properly managed throughout the complete lifecycle, from adding a part with a core charge to returning the core part to the distributor. 

The Core Parts feature automatically manages core-returnable parts by linking a parent inventory item with its associated Core Part

The enhancement includes the following capabilities: 

  1. An inventory item can be marked Has Core and have a defined Core Cost.  
  1. If Has Core is enabled, the system automatically creates/adds the associated Core Part.  
  1. The parent item is added first, and the Core Part is added as the second line item.  
  1. Core Parts are system-generated and cannot be manually created from the Job page.  
  1. Marcone: Automatically provides Core information through its response/Get Status.  

When Marcone returns Core information, the system: 

  • Updates the parent inventory item.  
  • Sets Has Core to True.  
  • Updates Core Cost.  
  • Creates the Core Part if necessary.  
  • Automatically includes the Core Part in future jobs. 
  1. Other Integrated Distributors: Core information is not automatically updated; existing Core configuration is retained.  
  1. Non-Integrated Distributors: Users must manually specify Has Core and Core Cost for new items. 

Purchase Orders 

  1. A parent item marked Has Core automatically includes its Core Part in the PO.  
  1. Parent and Core Part share the same PO Number.  
  1. For non-Marcone distributors, existing Core information is not automatically changed based on the distributor response.  

Core Part Return 

When a Core Part is returned: 

  1. Mark the Core Part as Return to Vendor.  
  1. Create a Return PO.  
  1. Submit the Return PO.  
  1. System validates the Core Part.  
  1. vendor credit equal to the Core Cost is generated upon successful processing. 
     
  1. PO From POS 

In ServiceWorks Purchase Orders (POs) can now be created and managed from the Customer Order (POS). The Purchase Orders can be created for in stock or out-of-stock items, either as one quantity or multiple, from the POS itself, using the Edit mode. Only those items and quantities that have been chosen by the user are included in the Purchase Orders. 

Another benefit of this enhancement is the increased efficiency in inventory and items tracking in the POS and PO process. Once a PO is created, all the tracking IDs or serial numbers get released and the inventory is made available for use. After the completion or partial receipt of the PO, the POS gets synchronized and the received items are made available in the inventory with correct tracking IDs and serial numbers. 

Other enhancements made are the proper recording of POS ReturnsVoid transactionsSerial Number Changes/ExchangesItem DispositionPO Assignment and Release, and Allocation. The PO Order Number is also appropriately attached to the POS and Job once there is a Delivery Ticket. 

The Item History & Tracking Log gives a complete overview of the history of the item with respect to its allocation, PO creation, receipt, return, void transaction, and inventory transactions. This makes for an improved accuracy in tracking the inventory quantities at various stages of the item’s cycle.  

Example 

Suppose you create a POS for a serialized item and create a regular Purchase Order (PO). After receiving the PO, open the POS in Edit mode and click Assign PO.  

In PO Details popup window select the Distributor and the required Purchase Order, then click Save.  

The PO is tagged to the POS, and a Tracking ID is generated as shown below. 

Go to the Item section to view the Tracking ID allocated to the POS associated with the Delivery Ticket. Because the Tracking ID is linked to both the POS and the Delivery Ticket, both the Job Number and POS Number are displayed against the Tracking ID.  

The same Tracking ID and Serial Number are also displayed on the Job page also. 

Creating another PO from POS page 

To create another PO from the POS, click Create PO (Beta). Create and submit the new Purchase Order. After the PO is submitted, a PO Invoice is generated. When the new PO is received, it is automatically tagged to the POS, and the previously assigned PO is released. 

The Tracking ID and Serial Number associated with the previous PO will also be released.  

After the new PO is received, the previously allocated Serial Number is released back to inventory, and a new Serial Number and Tracking ID are allocated as shown below. 

Reassigning the Previous PO 

If you want to assign the previous PO again, first click Release PO to release the currently assigned PO.  

Then click Assign PO, select the appropriate Distributor and Purchase Order, and click Save

Exchanging a Serial Number 

If you exchange the allocated Serial Number with another Serial Number, the new Serial Number is associated with the PO that is assigned to the POS at that time. The PO association is updated automatically based on the current assignment. 

Example 

Select Serial option from 3 dot menu in the POS page. 

Select Exchange from Action drop down and select the serial number to which you want to exchange and save. 

Now as the PO gets changed, the serial number also gets changed. 

The New PO gets attached with the serial numbers also. 

  1. Remove automated messages from inbox 

The message icon count has been updated to display the cumulative count of unread messages. Previously, clicking the message icon reset the universal count to zero, even when unread messages were still available. With this update, the universal count now reflects the total number of unread messages across the inbox, providing a more accurate view of pending messages. 

  1. Marcone SSB For Purchase Order  

SB (Self-Service Branch) is a specific warehouse/location option provided by Marcone for eligible customers. Instead of shipping a PO to a regular Marcone location, the order is placed against the customer’s designated SSB warehouse. 

How it is used for a Purchase Order 

In ServiceWorks, when creating a PO for Marcone

  1. Select Marcone as the distributor.  
  1. Select SSB (Self-Service Branch) as the ordering option.  
  1. Enter the customer’s SSB Warehouse ID/Number. This number is specific to the customer’s Marcone account.  
  1. Continue with the normal PO process, including selecting the required products and quantities.  
  1. ServiceWorks uses the configured warehouse ID to identify the correct SSB location when placing the order with Marcone.  

Example: If a customer’s SSB warehouse ID is 201, that ID is configured for the customer’s Marcone account. When a PO is created for that customer, the order is directed to SSB warehouse 201 rather than a standard Marcone location. 

Important setup requirement 

The customer must provide the SSB Warehouse ID along with their Marcone account credentials during setup. If the warehouse ID is unknown, it can potentially be identified from the Marcone ordering page by selecting the SSB location and inspecting the page element that contains the warehouse ID. 

In short: Marcone SSB allows a customer to place a Purchase Order through ServiceWorks and have it associated with their specific Marcone Self-Service Branch/warehouse. 

  • There is a specific permission for Marcone SSB, similar to the existing permissions for Sandberg and Reliable.  
  • An administrator needs to enable this permission for the appropriate user or role.  
  • The permission is managed from the Company Settings → Permissions page.  
  • Once the permission is enabled, the user can access and use the Marcone SSB option when creating a Purchase Order. 

Bottom of Form 

Enhancements done in the Integration Part 

  1. Quo Integration – Integrated Text Messaging Enhancement 

A new Quo integration has been introduced to provide integrated text messaging capabilities within the application. Users can now view incoming and outgoing text messages through a dedicated Integrated Text tab and access message details directly from the interface. 

  • Quo Integration: Quo is now available in the Integrations app list. 
  • Integrated Text Tab: A new Integrated Text tab is available under Switch for viewing integrated text messages. 
  • Message Grid: The Integrated Text grid includes the following columns: 
  • Date & Time 
  • From 
  • To 
  • Source 
  • Direction 
  • Message 
  • Send Text Link: User can send direct text message by clicking the Airplane icon and writing text message in the modal popup. 
  • Date Range Filtering: Messages are filtered correctly based on the selected date range. 
  • Incoming and Outgoing Messages: The grid displays both incoming and outgoing text messages. 
  • Existing Customer Messages: When an existing customer sends a message, the customer’s name is displayed in the Integrated Text grid, and the message is also available in the Message Inbox
  • Non-Existing Customer Messages: When a message is received from a non-existing customer, the sender’s phone number is displayed in the Integrated Text grid, and the message is not added to the Message Inbox. 
  • Long Message Handling: Long messages are truncated with an ellipsis () in the grid. Clicking the message opens a pop-up displaying the complete text. 
  • Image Preview: Clicking an image in the Message section enlarges the image for easier viewing. 
  1. Warranty flag added in LG Dispatch Ticket Detail 

             Warranty flag for LG tickets is now available. 

Warranty Flags and their Descriptions:  

  1. AHS DispatchMe Mapping 

The AHS DispatchMe Mapping enhancement improves how job, warranty, product, and billing information is mapped from AHS into ServiceWorks.  

The Problem Description in the DispatchMe Ticket is coming in the Job Description part in the Job in ServiceWorks.  

When the Warranty Status is Active, the is Job Type mapped as OEM Warranty in ServiceWorks. 

The warranty coverage details are added to the Job Notes.  

Unit links and knowledge base all are mapped as clickable links.  

Labour Expiration date, and warranty dates mapped to the corresponding ServiceWorks fields.  

Part Billing and Labor Billing information is mapped. 

The integration also maps Brand, Product Type as Product Details, Model number, 

  1. Comprehensive Data Mapping & Integration Specification 

Table of Contents 

A. Executive Summary 

B. Provider Inbound Mappings to Common Model 

1. NewLeaf Models Mapping 

2. ORHP Models Mapping 

C. Target Mapping: Common Model to PostNewJobData 

D. System Defaults & Generated Metadata 

1. Execution Metadata & Timestamps 

2. Populated Child Collections 

E. Unmapped Property Audit 

1. Unmapped Source Properties 

2. Unassigned Target Collections (PostNewJobData) 

  1. Executive Summary 

This document outlines the complete data lineage for service job ingestion. The system ingests payload structures from multiple dispatch providers (NewLeaf, ORHP, DispatchMe), normalizes them into a unified intermediate structure (CommonJobInputModel), and finally maps them to the system target entity (PostNewJobData). 

  1. Provider Inbound Mappings to Common Model 

1. NewLeaf Models Mapping 

(Applies to NewLeafServiceOrderModel and NewLeafServiceModel) 

Mapped Fields 

Source Property (NewLeaf) Intermediate Target (CommonJobInputModel) Mapping Rule / Notes 
CompanyId CompanyId Direct assignment. 
AssociationId AssociationId Direct assignment. 
ServiceOrderNumber DispatchNumber Primary order reference number. 
Contract ServiceContractNumber Service contract identifier. 
DealerGroupName Dealer Retailer/Dealer group name. 
CustomerFirstName FirstName Customer first name. 
CustomerLastName LastName Customer last name. 
PrimaryPhone ContactPhone Primary contact number. 
CustomerEmail ContactEmail Customer email. 
AddressLine1 Address Street address. 
City City City name. 
State State State code. 
ZipCode Zip Zip / Postal code. 
Manufacturer Brand Appliance manufacturer. 
ModelNumber ModelNumber Appliance model number. 
ProductSerialNumber SerialNumber Appliance serial number. 
ProductPurchaseDate DateOfPurchase Fallback to DateTime.UtcNow if empty/null. 
MfwExpirationDate WarrantyExpirationDate Expiration date timestamp. 
MfwCoverage IsWarranty Evaluated: true if equals “yes” / “YES”. 
UnderMFGLimitedCoverage IsOemWarranty Evaluated: true if IsWarranty is true AND value equals “yes” / “YES”. 
FailureDescription IssueDescription Summary of issue/failure. 
CoverageDescription, Status, Category CoverageDetailsNotes, WarrantyCoveragePlan Formatted string (API Method)
CoverageDescription, PolicySKU CoverageDetailsNotes, WarrantyCoveragePlan Formatted string (UI Method)
Hardcoded Value ProviderType Set to “NewLeaf”. 
Hardcoded Value ProductFamily Set to “Appliance”. 

 

  1. ORHP Models Mapping 

(Applies to ORHPEmailModel and ORHPEmailDataModel) 

Mapped Fields 

Source Property (ORHP) Intermediate Target (CommonJobInputModel) Mapping Rule / Notes 
CompanyId CompanyId Direct assignment. 
AssociationId AssociationId Direct assignment. 
WorkOrderNumber DispatchNumber Work order reference. 
FirstName / CallerName FirstName Prefers FirstName, falls back to CallerName. 
LastName LastName Customer last name. 
Phone ContactPhone Contact phone number. 
AddressLine1 Address Street address. 
City City City. 
State State State. 
ZipCode Zip Zip code. 
Brand Brand Product brand. 
ProductType ProductType Specific product type. 
ModelNumber ModelNumber Model number. 
SerialNumber SerialNumber Serial number. 
TradeCallFee PartsBilling Financial trade fee amount. 
PreferredDate PreferredDate Requested date. 
PreferredTime PreferredTime Requested time. 
CoverageStatus ServiceContractNumber Primary coverage status. 
EffectiveDate IsWarranty Evaluated: true if EffectiveDate + 1 year > Today. 
IssueDescription / Symptoms / Issue IssueDescription Evaluates IssueDescription -> Symptoms -> Issue. 
PlanVersion, CoverageStatus, Options CoverageDetailsNotes Formatted string (API Method)
CoverageStatus, AuthorizationLimit CoverageDetailsNotes Formatted string (UI Method)
Hardcoded Value ProviderType Set to “ORHP”. 
Hardcoded Value ProductFamily Set to “Appliance”. 
Hardcoded Value IsOemWarranty Set to false. 

 

  1. American Home Shield DispatchMe Models Mapping 

(Applies to DispatchMeModel and DispatchMeEmailDataModel) 

Mapped Fields 

Source Property (DispatchMe) Intermediate Target (CommonJobInputModel) Mapping Rule / Notes 
CompanyId CompanyId Direct assignment. 
AssociationId AssociationId Direct assignment. 
Company / Source ProviderType Derived from Company -> Source -> “DispatchMe”. 
TicketNumber DispatchNumber Falls back to JSON Job.DispatchConfirmationNumber. 
FirstName / CustomerName FirstName Prefers FirstName, falls back to CustomerName. 
LastName LastName Customer last name. 
Phone ContactPhone Primary phone. 
Email ContactEmail Customer email. 
AddressLine1 Address Street address. 
City City City. 
State State State. 
ZipCode Zip Zip code. 
Brand Brand Brand name. 
ModelNumber / ModelName ModelNumber Evaluates ModelNumber -> ModelName -> JSON Product.ModelNumber. 
SerialNumber SerialNumber Falls back to JSON Product.SerialNumber. 
ProductType ProductType Product category details. 
ProblemDescription / ProblemFullText IssueDescription Prefers ProblemDescription, falls back to ProblemFullText. 
UnitHistory UnitHistoryUrl External link string. 
KnowledgeBase KnowledgeBaseUrl External link string. 
Date PreferredDate Preferred calendar date. 
WarrantyStatus IsWarranty true if active or if JSON Product.MfgWarranty == “Yes”. 
WarrantyStatus IsOemWarranty true if active or if JSON Product.MfgWarranty == “Yes”. 
PartsWarranty / ServiceWarranty IsPartsWarrantyOnly true if PartsWarranty is active AND ServiceWarranty is not active. 
PartsWarranty / ServiceWarranty PartsBillingDate, LaborBillingDate Parsed as dates; falls back to JSON Contract.ExpirationDate. 
ObjectAsJson Dynamic Fields Extracted keys: Job.VendorId, Contract.CoveragePlanName, Coverage.AdditionalProvisions, Payment.Total, Payment.Paid, Contract.ContractId, Links.AuthorizationLink. 

 

C. Target Mapping: Common Model to PostNewJobData 

This table outlines how the unified CommonJobInputModel maps to the final destination entity (PostNewJobData). 

Target Property (PostNewJobData) Source Property / Expression Business Logic / Rules 
DispatchNumber input.DispatchNumber Primary dispatch identifier. 
serviceBenchId input.DispatchNumber Secondary service bench identifier duplicate. 
IssueDescription input.IssueDescription Cleaned short description of problem. 
Note Composite Function Formatted string containing CoverageDetailsNotes, UnitHistoryUrl, and KnowledgeBaseUrl. 
ServiceContractNumber input.ServiceContractNumber Contract or warranty reference. 
CompanyName input.CompanyName Defaults to string.Empty for third-party providers. 
ThirdPartyApiType input.ProviderType Defaults to “DispatchMe” if unassigned. 
CompanyId input.CompanyId Tenant ID. 
AssociationId input.AssociationId Association ID. 
FirstName input.FirstName Customer first name. 
LastName input.LastName Customer last name. 
ContactPhone input.ContactPhone Primary contact number. 
ContactEmail input.ContactEmail Primary email address. 
Address input.Address Street location address. 
Zip input.Zip Zip code. 
customerAddressCity input.City Customer city. 
customerAddressState input.State Customer state. 
Brandname input.Brand Primary brand string. 
Brand input.Brand Secondary brand string. 
ModelNumber input.ModelNumber Model number. 
SerialNumber input.SerialNumber Serial number. 
Dealer input.Dealer Dealer or retail origin. 
ProductFamily input.ProductFamily Defaults to “Appliance”. 
ProductDetails input.ProductType Detailed product categorization. 
serviceBenchApplianceName input.ProductType Appliance category for ServiceBench integration. 
IsWarranty input.IsWarranty System warranty status flag. 
JobTypeId Expression Assigned 1 if input.IsOemWarranty == true, otherwise 0. 
DateOfPurchase input.DateOfPurchase Date of purchase timestamp. 
AuthorizationNumber input.AuthorizationNumber Pre-approval authorization reference. 
PartsBilling input.PartsBilling Financial amount allocated for parts. 
LaborBilling input.LaborBilling Set to null if IsPartsWarrantyOnly == true, otherwise maps labor amount. 
SelectedCalendarDate input.PreferredDate Preferred appointment calendar date. 
SelectedTime input.PreferredTime Preferred appointment time slot. 
SourceOfCallId Lookup Function Resolved dynamically via _IMD.GetCallSource(input.CompanyId) using input.ProviderType. 

 

D. System Defaults & Generated Metadata 

These fields are programmatically created inside the binding method during mapping and do not originate directly from provider payloads: 

  1. Execution Metadata & Timestamps 
  • DateOfCallReceived: DateTime.UtcNow 
  • SelectedDateOfCallReceived: DateTime.UtcNow.ToString(“yyyy-MM-dd”) 
  • SelectedDateOfCallReceivedHour: DateTime.UtcNow.Hour 
  • SelectedDateOfCallReceivedMinute: DateTime.UtcNow.Minute 
  • CallReceivedDate: DateTime.UtcNow.ToString(“yyyy-MM-dd”) 
  • CallReceivedTime: DateTime.UtcNow.ToString(“HH:mm”) 
  • LocalDateTime: DateTime.UtcNow.ToString(“yyyy-MM-dd HH:mm:ss”) 
  • ScheduleDate: DateTime.UtcNow 
  • CallStatusId: 0 
  • TypeOfCallId: 0 
  • Duration: 0 
  • IsPublic: false 
  • optOutOptimization: false 
  • IsSoonerService: false 
  1. Populated Child Collections 
  1. lstNotes (GetNotes)
  1. notes: Contains combined job notes formatted string. 
  1. createUserName: “System Binder” 
  1. timeStamp: DateTime.UtcNow formatted as “yyyy-MM-dd HH:mm:ss” 
  1. SecBrandApplianceDetailList (SecBrandApplDtls)
  1. Populated conditionally when IsWarranty is true and valid model/serial/dispatch numbers exist. 
  1. Maps: ModelNumber, SerialNumber, IsWarranty, AuthorizationNumber, DispatchNumber, Group, WarrantyEnddate, LaborExpirationDate, AssociationId, IsActive = true. 
  1. ListAddressBookTicket (AddressBookTicketAll)
  1. Maps: FirstName, LastName, Email, Address, PrimaryPhone, ZipCode, IsParent = “Y”, CountryCode = “US”, IsActive = true. 

E. Unmapped Property Audit 

The following model properties exist within the inbound DTOs or destination entities but are not mapped within this specific binder pipeline: 

  1. Unmapped Source Properties 
  • NewLeaf Models: UniqueID, ModelSerialNumber, CreatedBy, StartedOn, LastPrintedTimestamp, ServicerNumber, ServicerName, ServicerPhoneNumber, ServicerFax, ServicerEmail, DealerName, DealerCode, DealerGroupNumber, IsSelfServicing, SellingRetailer, BuyingGroup, CallerType, DispatchMethod, PhoneTypeCode1, SecondaryPhone, PhoneTypeCode2, AddressLine2, Country, ContractsId, ProductNo, ContractUniqueId, Model, SubcategoryCode, Subcategory, CategoryCode, TierCode, Tier, InstallDate, ProductPurchasePrice, ProductRetailAmount, PartsTermMonths, LaborTermMonths, MajorComponentTermMonths, OtherTermMonths, ServiceLocation, IsFulfilled, IsDeleted, IsNew, SaleDate, DeductibleCollectedBy, Condition, CoverageType, CoverageSegment, CoverageMethod, CoverageTermMonths, CoverageStartDate, CoverageEndDate, IsCovered, FailureLossDate, ReportedDate, FunctionalityStatus, FailureType, MFGCoverageChecked, CODPayor, ProductDetailsCorrect, LeakCausingDamage, ShippingParts, PartsETA, EmailsReferenced, NewLeafTicketStatus, EmailInterceptionDetailsId. 
  • ORHP Models: Subject, From, To, CC, Date, ServiceCallDateTime, CompanyName, ServicerAddressLine1, ServicerCity, ServicerState, ServicerZipCode, CustomerName, AddressLine2, PhoneType, Relation, Style, ErrorCode, ORHPEmailDataStatus. 
  • DispatchMe Models: Subject, From, To, JobType, Priority, FullWarranty, ForwardedBy, DispatchMeStatus, EmailInterceptionDetailsId, JobStatus. 
  1. Unassigned Target Collections (PostNewJobData) 
  • lstParts: Initialized as empty List<GetParts>(). 
  • lstAttach: Initialized as empty List<NsaAttachments>(). 
  • lstComm: Initialized as empty List<GetCommunication>(). 
  1. Duplicate Customer Handling for Auto-Accept Dispatch Jobs 

Improved customer matching for auto-accepted dispatch jobs received from ServiceBenchServicePowerNSALG and FAHW. ServiceWorks now performs customer searches in the following order to identify an existing customer before creating a new record: 

  1. Name + Phone + Email + Address 
  1. Name + Phone + Email 
  1. Phone + Email 
  1. Phone only 

Phone numbers and email addresses are also searched within the Address field to improve customer matching. This enhancement helps ServiceWorks identify existing customers more accurately and prevents unnecessary duplicate customer records when auto-accepting dispatch jobs from the supported integrations. 

Enhancements done in the Mobile App 

  1. Mobile App Role Switching Enhancement 

The mobile application has been enhanced to provide the same role-switching functionality available in the web application. 

Users can now easily switch between available roles directly from their profile in the mobile app. By tapping the logged-in user’s name or profile, users can access the role dropdown and select Switch to Admin or Switch to Billing

The selected role is applied successfully, allowing users to access the mobile application based on the permissions and functionality associated with that role. 

  1. Added Explanation of Service (EOS) in Route page Note section 

The Mobile App has been enhanced to introduce Explanation of Service (EOS) along with Customer Note, Job Note, and Trip Note, providing technicians with quick access to the most recent service explanation recorded for a job. 

A new EOS option is now available in the dropdown list within the Mobile App. When the user selects EOS, the application displays the last Explanation of Service added by the most recent technician

The previous EOS is also displayed directly on the Job page, along with the other job notes, making it easier for users to review important service information without navigating away from the job. 

  1. Return PO option in Mobile App 

A new Return PO option has been added to the Mobile App under Inventory Management, allowing users to return items from a Purchase Order (PO) to the distributor from whom the items were originally received. 

Users can now initiate a PO return directly from the Mobile App. Within PO Return, users can use the filter to select the distributor to whom the items need to be returned. 

When processing the return, the Disposition must be selected as “Return to Vendor”. This ensures that the selected PO items are correctly identified as items being returned to the respective distributor. The tracking ID is also there, by clicking it is showing Tracking Details of the Item as shown below. 

If you want to return any item, select the item and tap the ‘Return’ button. It will successfully return the part to the vendor. 

  1. Enhanced Parts Pick List Scan Pop-Up 

The Parts Pick List barcode scanning pop-up has been enhanced to display additional item and transfer information. 

When a user scans an Item # barcode on the Parts Pick List, the pop-up now provides more detailed information about the scanned item and the transfer destination. 

The pop-up displays: 

Item # – Identifies the scanned part. 

Transfer Location – Displays the location where the item is being transferred. 

This enhancement provides users with greater visibility and confirmation of the item and destination before proceeding with the transfer. 

  1. Core Part Creation and Distributor Return 

The Parts module has been enhanced to support the identification and return of core parts associated with distributor items.  

When adding a part for a distributor, users can now designate the part as having a core by selecting the “Has Core” checkbox in the Quantity & Pricing section and entering the applicable amount in the “Core Cost” field.    

Once the part is saved, two part records are created on the Part Detail page: 

  • The original part record. 
  • A corresponding core part with the “EXCR” suffix with Core Cost

The EXCR part represents the core associated with the original part and should be returned to the distributor after the applicable service or replacement process. 

Author

Leave a Reply

Discover more from ServiceWorks Academy

Subscribe now to keep reading and get access to the full archive.

Continue reading