Route Creation and Cost Calculation for Different Types of Transportation in D365 SCM

By Pavel Novikov, Senior Functional Consultant, Industry Consulting Service (ICS)

In this article, I will discuss route creation for different types of transportation (truckload, less-than-load and parcel) and transportation cost calculation in the TMS module of Microsoft Dynamics 365 Supply Chain Management (D365 SCM), while focusing on some important details.

The Rate route workbench functionality of the TMS module allows to search for available routes for your load and calculate costs for them. The route (the physical path of a transport from origin to destination) can be simple, consisting of one segment of the route (departure address of the shipping warehouse, arrival address of the consignee), and complex, consisting of several segments. In the TMS module, routes serve two purposes:

  • To define a transportation route, and
  • To calculate transportation costs.

There are certain peculiarities in performing these two tasks for different types of transportation, which are discussed below.

The first type of transportation is truckload. Truckload (FTL) shipping is when a shipment will take up an entire truck by itself. FTL shipments are typically used when there are ten or more pallets or if the pallets are oversized and/or overweight. Transportation of this type includes one consignee. For such transportations, a route can be created using the rate shop and the route with rate functions of the Rate route workbench functionality. The rate shop function calculates route/transportation costs for all suitable carriers. The route and costs are calculated assuming that the route consists of one segment. You can then select and assign the best possible route in terms of time/cost from all the offers of the carriers configured in the system. The route with rate function selects routes of the configured route plan with the set number of segments and calculates costs for the selected carriers on the segments of the route plan. If no carrier and carrier service are set for route segments, the route with rate function does not calculate transportation costs for all suitable carriers like the rate shop function does. Since there is only one consignee in the transportation, all route segments are used to transport the shipment to this consignee. For this transportation type, both route tasks can be accomplished.

The second type of transportation is less-than-load (LTL). LTL is the transportation of freight that combines shipments from multiple customers in a single truck. LTL cargo is usually packed in pallets. Let’s look at a scenario where the transportation is intended to deliver shipments to each consignee. In our example, let’s consider a cost calculation for a load with three consignees (US-001, US-002, US-003). D365 SCM assigns the delivery address of one of the consignees as an arrival address for the load.




Weight of shipments:




The route for such transportation consists of different segments with the delivery address of each consignee. For such transportations, the route is created using the route with rate function of the Rate route workbench functionality. The route with rate function selects routes according to the configured route guides and route plan. The subtlety of the route plan setting is how the costs per segment should be calculated:

  • If costs are calculated along the path of the route, then a route must be created with segments in which, starting with the second one, the departure address has the arrival address of the previous segment. It should be noted that the system calculates costs for all goods of the load per segment, in our example the weight is 29 units. For this case, the route performs both of its tasks.



  • If transportation costs are to be calculated for each consignee between the shipping warehouse address and the consignee address, all route segments will include the warehouse address in the departure address and the consignee address in the arrival address. In this case, as in the previous one, the system does not allow shipments to be identified with the arrival address of the segment and the cost calculation is performed for all goods of the load per segment. In my opinion, such a route would only be useful for transportation cost calculation – it would not be logical to use it to track the execution of the route, as all segments would have the same departure address of the shipping warehouse.



The rate shop function cannot be used for this type of transportation, as it calculates the route and costs assuming there is only one consignee whose delivery address is specified for the load when it is created in the system.




The third type of transportation is parcel. Parcel shipping has historically involved packages that are below 150 pounds and can be lifted without assistance. This means that packages are typically smaller than what LTL shipping handles. The parcel type of transportation can be executed in different ways. Let’s consider two commonly used options:

    Option 1. The company fulfills each order individually and sends a delivery request to an express delivery company. This transportation option is implemented with the functionality of the Small parcel shipping feature. To interact with the carrier’s system, a new rate engine needs to be developed. The rate engine will retrieve the shipping label, shipping rate, and tracking number from the carrier’s system. The return transportation cost is added to the applicable sales order as a miscellaneous charge. For this option, the system does not generate a route and does not calculate costs for it.

    Option 2. The company generates its own last mile delivery loads for parcels delivered to different consignees and calculates a required delivery route. To calculate the route and its costs, the route with rate function should be used, as in the case of the less-than-load transportation type. The peculiarity of this option is that in most cases the route is unique for each load and route plan and route guide will be used once, so it is necessary to somehow mark the load and route guide to perform cost calculation using the route with rate function. To calculate the optimal route for the delivery of parcels, a solution to the Traveling salesman problem (TSP) needs to be implemented in the system, but this topic is outside the scope of this article. The creation of an optimal route can be made easier by implementing integration with cartographic search services. Different regions and countries may have their own preferred services, depending on their specific parameters. When creating route segments in the system, one needs to understand which departure address is to be specified – the previous consignee’s address or the origin departure address. This problem is described above for the less-than-load transportation type.

In non-standard cases where a one-time route needs to be created for transportation, the TMS functionality provides the possibility to manually create a route on the Routes form and specify hub masters for departure and arrival on route segments. The created route can be assigned to an inbound load via the 'Add to an existing route' function. For manually created routes the Rate route workbench functionality does not calculate costs, costs can be manually entered via the Route rate details form. But for outbound loads there is no possibility to assign a manually created route on the Routes form, it is only possible to manually enter costs via the Manual rating function and the system will create a route with one segment.

In my opinion, the cost calculation in the TMS module is implemented under the assumption that all cargo is delivered to the endpoint of the route, as there is no possibility in the system to link shipments to segments. For cases where the transportation is intended to deliver goods to different consignees, not in all cases the route can fulfil both of its tasks, and we have examined above why this is the case for the less-than-load type of transportation. An alternative way of how to implement a solution of these two tasks in the TMS module is to use two entities as it is done in the Landed cost module: Jorney to create the route, and Autocost to calculate costs, but only using two types of routes – one for cost calculation and another for movement along the route points.