These features are available on your Test site as of the evening of March 27, on your Preproduction site in the evening of March 28 and on your Production site in the evening of April 3rd.


Internal users can no longer modify the price from the Dispatch Board Order Details. The ability to edit is now a link that will open the Order in the Back Office where the internal user will be able to make changes.




New Features in This Release

  • Order Profiles i.e. workflows, reference fields, Account-related specifics, etc. can now vary by Order (rather than Account)
  • Enhanced Driver's ability to create new orders on-the-fly
  • Improvements to Search capabilities throughout the system
  • Improved automation processes for Multi-Segment Orders
  • More security permission controls for Extra Fees
  • Additional configurability of default values for Customer Portal to improve accuracy and the user experience
  • Other Dispatch Board, Invoicing, ODATA, and API enhancements



TABLE OF CONTENTS



Definitions

The release notes refer to different sections of the application:

Back Office: Where Customer Service Representatives (CSR) create and edit orders, create accounts, review drivers, etc.

Dispatch Board: Where Dispatchers assign orders to drivers, get notifications for invalid orders, etc.

Auto-Dispatch: This section refers to the automated order assignment setup and its process.

Administration: This section is in the Back Office but refers to sections only an administrator will use like Settings and Pricing.

Customer Portal: Where account users log in to create orders, view their order history, enter a credit card, etc.

Tracking site: Where customers enter a tracking number like the order ID or a reference number to view the status of their order.

OData: Data fields and variables saved in OData

Account API: API provided to your accounts to create, update and get orders. For documentation, please follow this link: https://api.dispatchscience.com/
Tenant API: API provided to you to create orders for your accounts, retrieve invoices and change invoice status. For documentation, please follow this link: https://api.dispatchscience.com/  

Scripting: Custom script building abilities and functions within Dispatch Science

 

Driver App Version 1.64

Prevent Multiple Logins on Different Devices

In this version, concurrent logins by the same driver from different devices using the same credentials will be prohibited. 

The last login will take precedence with the previous user user receiving a message on the Driver App letting them know that they are disconnected:

Clicking Ok will return the user to the Login page. 


Creating Orders with Contact with Geofence

Orders can be manually created by a driver using the Create Manual Order. When selecting the Delivery Contact from the list, if the contact is associated with a geofence, the geofence will automatically be added to the Order 


Scanning On Orders

In the Account, in Order Options, if the validation is set and the option Skip Grouped Orders With No Items Scanned is checked, a new message will now show when Driver attempts to close the stop while no items are scanned on an order:

TAP Ok if you want to continue or Cancel to return to the scan.


When scanning an Order with only one Item, in previous version, this was not considered a partial order since nothing was scanned. It is now considered partial and Driver will be asked if they want to Report the Order as partial:

Tap No to return and scan the missing item or tap Yes to continue. If you tap Yes, the Order's stop will be closed and the item will be marked as Missing.


User Interface Modification

Lists

On the following lists, the  showing the list of fields that can be used to search has been moved within the search bar  for easier access:

  • Back Office:
    • Order List
    • Recurrence List
    • Order Template List
    • Driver List
    • Driver Settlement List
    • Account List
    • Transaction List
    • Pricing Discount/Surcharges
    • Dynamic Views
    • Companies



Back Office

Orders

Order List

Two new columns have been added to the Back Office Order List: 

Pickup Company

Delivery Company

The information which was contained in Pickup and Delivery address will now display on those 2 columns and is searchable via the Search bar.


Order History

The invoice generation and cancellation actions display on the Order History with the invoice number:


Multi-Segment Order

Automatically Set Multi-Segment as Picked Up  

When the first segment of a Multi-segment Order is set to picked up, the Multi-segment is automatically set to picked up. In some cases, if the first segment was not set as picked up, if any segment other than the last segment is set to delivered and the Multi-segment is not yet picked up, the delivery event will automatically set the Multi-segment as picked up. 


Order Profile on Segments

The Multi-Segment Order Profile will be copied to the Segments upon Segment creation. Once created, the Segment Order Profile can be modified. 



Order Profile Selection on Order

The Order Profile has been separated into Order Profile and Self-Serve Profile. For more information about this change, please see Order Profile.

This change now allows multiple Order Profiles to be associated to a single Account. This allows an internal user to select the profile needed during Order creation or a profile can be selected automatically according to Order Rules.



Order Profile Selection During Order Creation:

The Order Profile selection, as based on Order Rules, occurs exclusively during Order Creation. If there’s a need to modify the Order Profile while editing an existing Order, it can be manually changed in the Additional Info tab.

However, it’s essential to note that if the Order Profile is altered after Order creation—once data has been entered in the Reference and User fields, and the workflow has commenced—only the fields and workflow steps aligned with the new Order Profile will be retained. Validation will then be performed on these fields, which may potentially result in data loss



Select an Order Profile while creating or editing an Order

1) During Order Creation, click the Additional Info tab or when editing, click on Edit in the Additional Info:

2) From the Order Profile, either select Use Configuration to use Order Rules to determine the correct Order Profile or select specific Order Profile from the drop-down field.

During the Order entry process, when matching rules are found, the Additional Info tab will automatically change to have the correct Order Profile selected.
If no matching Order Rule is found, the Default Order Profile will be selected.


3) When the Order Profile is selected, the Reference fields, user fields and workflows will change. 

If data was already entered in the Reference and/or User fields but these fields do not existing in the new Order Profile, the data will be deleted.


Creating an Order from an Order Template

When an Order is created from an Order Template, either manually or through a Recurrence or a Recurring Route, depending on the selection of the Order Profile drop-down, the Order Profile selection will either be calculated through a rule if set as Use Configuration or selected regardless of rules.

If the Order Profile is set as Use Configuration and the Account is using Rules on the Order Profile, the Order profile may change during Order creation if the user changes preselected values.
If the Order Profile is set as a specific Order Profile, it will remain as selected unless it is manually modified by the user during Order creation.


Adding Restricted Extra Fees to an Order

Extra Fees can be set as restricted, previously hidden. These Extra Fees could only be added by an internal user from the Order Details on the Dispatch Board. This behaviour is changed and pricing can now only be updated from the Back Office Order Details. If user has access to the Restricted Extra Fee permission as part of their role, they will be able to add it otherwise it will be hidden. Clicking on the Edit Pricing from the Dispatch Board Order Details will open a new window with the Back Office Order Details. 


For more information about the restricted Extra Fee modification, please see Restricted Extra Fees.

For more information about the new permission that will give access to the restricted Extra Fee, please see Roles.


Add a Restricted Extra Fee from the Dispatch Board Order Details

1) Open an Order on the Dispatch Board and scroll down to Pricing section and click on the pencil:

2) You are redirected to the Back Office Order Details. In Pricing Items section, click on Edit button:

3) Click on Add Pricing Item to open the list of Extra Fees including restricted Extra Fees if user has permission for restricted Extra Fees. Select the Extra Fees to be added and click on Save. Enter quantity, change pricing if needed.

4) To add a Delivery Price if one is not available on the Order, click on Add Delivery Charge:

This will add the Delivery Charge field and the amount can be entered.

5) Click on Save


Order Profile Selection on Order Templates

On the Order Template, the Order Profile will be selectable if setup on the Account. 

1) Create or Edit an Order Template.

2) Navigate to the Additional Info tab. If editing, click on Edit button.

3) Select the Order Profile. 


Drivers

Settlements for Archived Drivers

Archived Drivers with orders that were not settled are now included in the list of Drivers that can be settled. 

Archived Drivers cannot login to the Driver App to retrieve Settlement reports.


Driver History Legacy View

The Driver History Legacy view has been removed but you can still download the information.

1) Open Drivers, then click the View History link (found at the far right of the Driver in the Driver table)

2) In the Driver history, set the filter and click on Apply Filters. 

3) If there is a workload for that driver, you will be able to download the history legacy information by clicking download:




Accounts

Order Profile

The Order Profile has been separated into an Order Profile and a Self-Serve Profile.

The Order Profile contains the References, User Fields, Workflows and Grouping Options. 

The Self-Serve Profile contains the Web Options (previously found under Order Profile, Self-Serve Options).
The Overridable Driver Options are now found in the Account details.

On the Account, the Profiles are in the Profile Options section, the Order Options contain the information about the Orders, the Overridable Driver Options are in the Overridable Driver Options section:

When Order Profiles were deleted, they were replaced with the Default Order Profile. With the new multiple Order Profile, Order Profiles used in Accounts can no longer be deleted. They must first be removed from the Accounts before they can be deleted.



Account Order Options Order Profile

Multiple Order Profiles can be associated to the Account. 

One Self-Serve Profile can be associated to the Account. 

On deployment, the Self-Serve Profiles will be created from the association of the Order Profile and the Order Creation Profile. These will be associated to the existing Account automatically.
The Overridable Driver Options will be setup on each Account automatically.


Setup the Order Profile on the Account

1) Open an Account and edit the Profiles Options:

2) You can select one Self-Serve Profile.

3) You can select a default Order Profile. 

If you only select a Default Order Profile, there will be no change to the behavior on the Order and Order Templates and the same Order Profile will be used for all Orders and Order Templates created for this Account. 

4) Click on Add Order Profile link:

Select the 2nd Order Profile that should be made available for this Account. 

5) Select an Order Rule if the Order Profile should be associated according to the information on the Order.

The first Order Profile's Order Rule that returns a true value, in the current sort order on the screen, will be the one that will be selected on the Order and Order Template.
Select Selectable if the Order Profile should be part of a drop-down field that can be selected by the Internal User when creating Orders and Order Templates.

6) Repeat steps 4 and 5 for each new Order Profile.

7) Click Save.


Self Serve Profile

The Self-Serve Profile contains the options that are used for Account users when they are on the Self-Serve Portal. 

It is divided into 3 sections:

Name and Description: Section where the name and description of the Mobile profile is stored.

Web Options: Section where options for Self-Serve users are setup when working in the Self-Serve Portal.

Mobile Sections: Sections that are required, optional when creating Orders through the Delivery App.

The rules apply to Orders created on the Self-Serve Portal as well as Order created through import and the Integration API as well as when items are added by the Self-Serve user or through the API.
Rules also apply to the Order Templates except the Require Parcel on Order. Order templates can always be created without Parcels.


Web Options Rules for Parcels


New Web Options for Parcel Rules: Beyond Blank Parcels


Now, apart from the default Blank Parcel type, there are fresh Web options available for setting up rules related to parcels. These options allow more flexibility and customization when dealing with parcel data. 

  • Empty Parcel Weight by Default
  • Empty Parcel Dimension by Default
  • Require Parcel on Order
  • Require Parcel Description
  • Require Non Zero Value for Parcel Weight and Dimension


A combination of these options can be setup and when more than one option is selected, error messages will be displayed in the same box when trying to create an Order without the required information.


To learn about Empty Parcel Type by Default, please review Order Entry section in this article.
When Empty Parcel Type by Default is checked, no parcel type is selected by default and the dimension and weight are taken from the lowest ranked parcel type in the schedule.

If trying to create an Order without a parcel type, the following error message will be displayed and the Order will not be created:


Empty Parcel Weight By Default

When you add a parcel type to an order, the weight is initially set automatically based on the value stored for that parcel type. However, you have the option to change this behavior. By default, the weight field will be left blank, prompting the Self-Serve user to manually enter the correct weight instead of relying on the default value.


When a parcel type is selected, the weight field will be empty, and the user must input the weight before proceeding to create the order.

Dimensional and minimum weights will be calculated by default and when user enters a weight the icon will be displayed if the weight entered is less than the calculated dimensional weight or minimum weight set on the parcel type.


If trying to create an Order without a weight, the following error message will be displayed and the Order will not be created:


Empty Parcel Dimension by Default

When you add a parcel type to an order, the dimensions are initially set automatically based on the value stored for that parcel type. However, you have the option to change this behavior. By default, the dimensions field will be left blank, prompting the Self-Serve user to manually enter the correct dimensions instead of relying on the default value.


When a parcel type is selected, the dimensions field will be empty, and the user must input the dimensions before proceeding to create the order.

Parcels that are not customizable will not be blank, they will show the default values on the parcel type and the fields will be locked.


If trying to create an Order without a dimension, the following message will be displayed and the Order will not be created:


Require Parcel on Order

When trying to create an order without a parcel, the following message will be displayed and the Order will not be created:


Require Parcel Description

When a parcel type is added to an order, the description can be made required. 

When a parcel type is selected, the description field is always blank:

If trying to create an Order without a description, the following message will be displayed and the Order will not be created:


Require Non Zero Value for Parcel Weight and Dimension

When you add a parcel type to an order, the Self-Serve user may need to specify a non-zero value before creating the Order. The specific behavior depends on the other rules selected.


If an attempt is made to create an Order with any dimension set to 0 or the weight set to 0, an error message will be shown, and the Order creation process will be halted.


Notifications

Recipient Property

A new Recipient property was added to the Content Template:

This will provide you with the recipient information:

Recipient's name:  @Model.Recipient.Name

Recipient's phone number: @Model.Recipient.PhoneNumber

Recipient's email address: @Model.Recipient.EmailAddress


Transactions

Invoice Generated with Errors

Occasionally, the invoice report may fail to generate. In such cases, a URL to the invoice will be included in the Invoice email. This allows the recipient to access and view the invoice online by simply clicking the link.


Orders with Negative Total

You are able to create Orders that would have a negative total however, the total is then set to $0 since you should not have an Order that has a negative value. 

These Orders should not be added to the Invoices since their individual line items would not balance the total that is set to $0. 


Orders, where the total is set to $0 but would amount to a negative total, will be set as non-billable and will not be added to the invoice. This will result in the individual line item on the Order to not appear on the GL reports to ensure GL accounts are balanced.


Pricing

Restricted Extra Fees

Restricted Extra Fees, Hidden in previous releases, can be setup on the Extra Fee Schedule. 

When a restricted Extra Fee is on an Extra Fee Schedule, it can only be added by a user associated to the default Administrator Role or a Role that has the new Restricted permission on the Extra Fee. 


Dispatch Board

Routes

Archived Drivers on Routes

There has been some changes when dispatching Routes to archived Drivers. To clarify that an archived Driver is being associated to a Route, the colored circle beside the driver icon will now show RED and on hover, you will get the notification that the driver is archived:


When dispatching a Route associated to an archived Driver, you will now also have an error message letting you know that the Driver is archived.

https://apcurium.atlassian.net/browse/DP-13059


Grid Boards

Mass Update Exception Codes

On the Grid Board, you can now add Exception Codes on one or more Orders through the mass update menu. 

Only Exceptions Codes that are common to all selected Orders' Accounts will be displayed in the Mass Update list and only Exception Codes of type Pickup, Delivery and Checkpoints will be available to be added.
Exception Codes associated to Items cannot be updated from the Grid Board, they need to be udpated through the

1) On a Grid Board, select one or more Orders in the Order section and click on ... menu:

2) Click on Add Exception Codes and select the code for each of the different types.

Only Exception Codes that are shared by all selected Orders' Accounts will be displayed.
This allows to add Exception Codes only, to remove, Orders need to be edited individually.



Administration

Roles

Can be found under Settings, Configurations, System, Roles.


New Restricted Extra Fee permission

A new Restricted Extra Fee permission was added to the list of permissions available to internal users and administrators:

This new permission will allow internal users to add restricted Extra Fees, previously known as hidden extra fees, on an Order in the Back Office Order Details.

This permission was automatically added to the following roles:

  • Default Admin role
  • Dispatcher (Limited Access)
  • Dispatcher (No Price and Commission)
  • Dispatcher ( No Price)

It can be added to the Roles where this is needed.


Add Restricted Extra Fee Permission  to a Role

1) Open the Role (Settings, Configurations, System, Roles)

2) Search or filter for Extra Fee

3) Enable the permission by clicking on Access:

4) Click Save.


Debit Notes and Invoices Creation Permissions

The permission to create a Debit Note and an Invoice has been split into 2 permissions:

Role with the Create Invoices and Debit Notes have automatically be set as selected for the 2 new permissions.


Users

In the Internal User details, 2 new checkboxes were added to set the Communication Preferences of each user. This will determine the type of emails that will be sent from Dispatch Science:

On deployment, users who were already receiving release notes will have this checkbox checked. 



Scripts

Script Rules

In Release 1.63, a rank was added to the Script Rules (for more information see Script Rule Rank). For ease of use, the Rank and the Stop processing were added in the Script Rule List:


Activate/Deactivate Workflow Step

Workflow steps can be activated/deactivated through an Order update. 

For more information please review IWorkflowReader


Order Type

In IOrderReader, you will now be able to extract the Order type to know how an Order was created:

 OrderType Type { get; }


Order types:

{

Unknown = -1,
APISelfServe = 0,
APICSR,
UISelfServe,
UICSR,
DeliveryApp,
DriverApp,
ImportSelfserve,
ImportCSR,
RecurringOrders,
RecurringRoutes
}


Order Update Script

Attachment Update

In the Order update script, you will be able to modify the Attachment information and the Attachment:

Task UpdateAttachment(string attachmentId, string note, bool includeWithInvoice)


Package Validation Update

In the Order update script, you are able to modify the order validation rule:

Task UpdatePackageValidationOptions(PackageValidationOptions packageValidationOptions)



OData

Orders Table

Attribute Field

Attributes were returned in a serialized list but will now also be returned in an array.

You will find the array in the following field: AttributeIdsArray.

"AttributeIdsArray": ["attributeid1","attributeid2"]


FulfillmentType Field

Field FulfillmentType was added to the Orders table to indicate if the Order is of type Standard, MultiSegment or Segment.


Drivers Table

Attributes were returned in a serialized list but will now also be returned in an array.

You will find the array in the following field: AttributeIdsArray.

"AttributeIdsArray": ["attributeid1","attributeid2"]


OrderTemplates Table

Attributes were returned in a serialized list but will now also be returned in an array.

You will find the array in the following field: AttributeIdsArray.

"AttributeIdsArray": ["attributeid1","attributeid2"]



Integration Tenant

Update Pickup and Delivered Date

As part of the PATCH/api /v1 /orders /{orderId},  the picked up and delivered date on an Order can be updated.


Update Pickup Up Date:

[
{
"op": "replace",
"path": "/StatusPickedUpDate",
"value": "YYYY-MM-DDTHH:mm:ss-00:00"
}
]


Update Delivered Date:

[
{
"op": "replace",
"path": "/StatusDeliveredDate",
"value": "YYYY-MM-DDTHH:mm:ss-00:00"
}
]


The seconds in the date-time stamp is required.



Order Profile

You can change the Order Profile on an existing Order. 

Using:

POST/api /v1 /orders /{orderId} /order-profile

Use the orderProfileId in the body to update the Order Profile selected on the Order.

If the new Order Profile selected has different validation on the Reference and User fields or different User fields, the existing value on the Order may be deleted.


You can create an Order with a predefined Order Profile.

Using:

POST/api /v1 /orders

Use the field in the body to send the Order Profile that should be selected on the Order.

If the Order Profile is not setup to be selectable, the default Order Profile will be used.


Update Fuel Price

Using  POST/api /v1 /fuelsurcharges /{fuelPriceScheduleId} /fuel-price, you can now update the fuel price.


fuelPriceScheduleId is the Fuel Price Id that can be found in the URL:



{

  "currencySymbol": "",

  "startDate": "2024-03-30T14:05:27.963Z",

  "baseFuelPrice": 1,

  "referenceFuelPrice": 2

}


where:
currencySymbol: not required and can be omitted or can use the following: $, MX$, €

startDate: can be entered as just a date in format YYYY-MM-DD. If a time is added, it will be ignored

baseFuelPrice: this can be entered as 0 if not used.

referenceFuelPrice: value of the new fuel price.

startDate must be later than the last startDate in the Fuel Price.



Drivers

Get Drivers

In the GET/api /v1 /drivers and GET/api /v1 /drivers /{id} endpoints have 3 more fields:

"reportsToUserId": MasterDriverId,
"preventReporteesFromViewingSettlements": true or false,
"allowViewingReporteesSettlements": true or false


Update Driver

A new update driver endpoint is now available:

PATCH/api /v1 /drivers /{id}

Fields available to be updatable through this endpoint are:


A new update driver information is now available:

PATCH/api /v1 /drivers /{id} /employee-information


Recurrences

Get Recurrences for a Date and Account

The GET/api /v1 /recurring-orders /recurring-orders-for-date endpoint allows you to get the Recurrences and their Order templates for a specified day.

This returns the Recurrences and associated Order Templates that have already generate and will generate on the specified day.  Additionally, this can also be filtered by the Account Id.


Properties:

Account Id: This is optional. If no Account Id is specified, all Recurrences and associated Order Templates will be retrieved.

Ready At date: This is required and in format YYYY-MM-DD. If a time is added, it will be ignored.

Example fo result:

[
{
"recurringOrderId": RecurrenceID,
"templates": [
{
"orderTemplateId": OrderTemplateID,
"accountId": "AccountId",
"readyAt": "2024-03-28T23:27:00-05:00"
}
]
}
]

 

Recurring Routes

Get Recurring Routes for a Date

The GET/api /v1 /recurring-routes /recurring-routes-for-date endpoint allows you to get the Recurring Routes and their Order templates for a specified day.

This returns the Recurring Route and associated Order Templates that have already generate and will generate on the specified day.  


Properties:

Ready At date: This is required and in format YYYY-MM-DD. If a time is added, it will be ignored.

Example fo result:

[
{
"routePlanId": RoutePlanId,
"schedules": [
{
"scheduleId": ScheduleId,
"recurringRoutes": [
{
"recurringRouteId": RecurringRouteId,
"templates": [
{
"orderTemplateId": OrderTemplateId,
"readyAt": "2023-03-28T06:00:00-05:00"
}
]
}
]
}
]
}

]