Solve warehouse bottleneck for any ERP using Warehouse management only mode in D365

Solve warehouse bottleneck for any ERP using Warehouse management only mode in D365


Background

Warehouse operations are heart and soul of all supply chain operations. Efficient supply chains are built on warehouses which are efficient and do not suffer from bottlenecks in material handling within the warehouses. Many times, its seen that the issue is not in the Enterprise resource planning (ERP) system but the warehouse management system which is not able to cater and handle an organizations operation anymore for genuine reasons such as obsolete WMS system.

Organizations which find themselves in such situations realize that the only way to improve warehouse operations is to start looking for new ERP when the issue is only with the warehouse operations and its module.

Will not make sense to have an option where organizations can continue to take advantage of their existing investments in third party ERP and at the same time take advantage of the advanced warehouse capabilities of the D365.

Microsoft has made this a reality and now organizations can quickly deploy the advanced warehouse capabilities of the D365 regardless of the ERP. This not only means replacing the module that requires attention but also avoiding marathon warehouse implementation projects and that too when there was no need for it.

Solution details

With the warehouse management only, mode deployed an organization can manage all their business operations such as order and financial processing in existing ERP and use D365 advance warehouse management module to handle warehouse operations.

The warehouse management only mode in D365 can be implemented in two scenarios

1 - Integrate Warehouse Management Only Mode with an External ERP System:

Utilize the core WMS functionality in Supply Chain Management while leveraging existing third-party ERP and order management systems. Benefits include automation integration, carrier integration, and the Warehouse Management mobile app.

2 - Set Up an External Shared Warehouse for Other Legal Entities:

Run logistic operations in a separate legal entity that shares warehousing services with other legal entities handling order and financial processing.

In this article I will cover the scenario 1 which is integrating the D365 WMS to an external ERP as this in my mind solves lot of issues for many customers.

Demo

Warehouse management only mode in D365 can handle the inbound operations using the Inbound shipment order. External ERP stores all purchase orders and the warehouse operations for the purchase orders are handled in the D365 WMS.

Below is a high-level overview of D365 Warehouse management only mode working with an external ERP for inbound operations.

Inbound Operations


Inbound operations overview using D365 Warehouse management only mode


Process description

1 - Purchase order is created and maintained in the External ERP and on the confirmation of the purchase order external ERP sends Inbound shipment order message to D365 to create an inbound shipment order. Inbound shipment order is what is used to receive the purchase orders in D365 warehouse.

2 - The inbound shipment order message has three components

  • Header message - Contains the header information such as Source system, data area ID, PO number, Message ID and Warehouse (We will see this in more detail later)
  • Line message - Contains the line information such as item number, qty and units.
  • Complete message - This message is used to mark completion of the inbound shipment order message, and it means no more information can be received for the inbound shipment order.

3 - D365 Supply chain receives these messages and creates an inbound shipment order message.

4 - D365 later processes the inbound shipment order message using the message processor and as a result inbound shipment order is created.

5 - Depending on the setups Loads are either created automatically or manually.

6 - Goods arrive in the warehouse and the warehouse worker uses the mobile device to perform the inbound shipment order receiving.

7 - Shipment receipt batch job updates the load as "Received" and generate shipment receipts which are a trigger for the external ERP system.

8 - External ERP reads the shipment receipts data and updates the purchase order and on hand inventory,

Now let's see this in action

1 - We will now simulate the process where External ERP submits inbound shipment order messages. I will use Postman to send messages to D365. As shared above the inbound shipment order messages have 3 parts.

Make sure you generate and establish the authentication via bearer token

a - Header message for the inbound shipment order as below

{
"MessageId": "M004",
"dataAreaId": "USMF",
"SourceSystemId": "OXOLLOXO",
"OrderNumber": "PO-04",
"ReceivingWarehouseId": "51"
}        

Now post the message using the POST command like below

POST {{resource}}/data/InboundShipmentOrderMessages


As we can see below the header message is successfully created in D365.

Inbound shipment order header message in Postman


Now let's take a look inside D365 in the inbound shipment order message list page and we can see our record is created, we can see that it has a status Receiving which means that we are still in process of receiving this message and it is not fully received.

Inbound shipment order message in D365

b- Line message for inbound shipment order as below

{
"MessageId": "M004",
"dataAreaId": "USMF",
"SourceSystemId": "OXOLLOXO",
"OrderNumber": "PO-04",
"OrderLineNumber": 1,
"ItemNumber": "OXOLLOXO 11",
"ExpectedQuantity": 110,
"ExpectedUnitSymbol": "EA"
}        

Now post the message using Post command like below in Postman

POST {{resource}}/data/InboundShipmentOrderLineMessages

Now we can see that line message is successfully created in the D365 and we got a success in postman.

"201 Created is happiness" ;)

Inbound shipment order lines message in Postman


Now let's take a look inside D365 in the inbound shipment order message details page and we can see our record is created, we can see that it has a status Receiving which means that we are still in process of receiving this message and it is not fully received. In the below image we can see all the data highlighted in blue which was shared via external ERP (We simulated this using Postman)

The status of the inbound shipment order message is still receiving because we have still not received the complete message for the header and lines yet. Only after receiving the complete message the status of the inbound shipment order message changes to Received.


Inbound shipment order message with header and lines data in D365


c - Complete message for the inbound shipment order

The complete message does not have any body, and all the details are added to the post url itself.

Post complete message using the post command in the postman

POST {{resource}}/data/InboundShipmentOrderMessages(MessageId='{{MessageId}}', dataAreaId='{{dataAreaId}}',SourceSystemId='{{SourceSystem}}', OrderNumber='{{OrderNumber}}')/Microsoft.Dynamics.DataEntities.Complete?cross-company=true

Make sure you update all the details in the url. See below the same url now filled with the details

Complete message for inbound shipment order url details

Now let's post this message using postman. We got a success message 204 No content as there is no data in the body or the complete message.

Complete message in Postman for inbound shipment order

Now if we check the impact in D365 we can see that the inbound shipment order message is not updated to Received

Inbound shipment order message received fully


2 - Now the inbound shipment order message will be processed by the message processor in D365. In the below screenshot we can see that the message is in the queue.

Message in the message processor queue

3 - The message is processed, and an inbound shipment order is created. Below we can see that the message is processed.


inbound shipment order message processed.

4- Inbound shipment order message status changes to Accepted

Now we can see that an inbound shipment order is created.


Inbound shipment order created

5 - Now once goods arrive in the warehouse, we will use the mobile device to perform the receiving. Let's receive the items using mobile device (Below steps 1-9)


Receiving of inbound shipment order in warehouse app


6 - Now we can see that the items are registered in the D365.

Inbound shipment order

7 - Receiving completed job will be running in the background. I will run it manually.


8 - Now we can see below that the status of the inbound shipment order is changed to received and shipment receipt records are also generated. We can check the generated shipment receipts in the shipment receipts form.

Inbound shipment order status


Shipment receipts generated

9 - The generated shipment receipts act as a trigger for the business events for the External ERP. External ERP reads the data in the shipment receipts and process the purchase order which leads to inventory updating in the External ERP.

10 - Later D365 will run the post shipment receipt batch job will finalize the inbound shipment order in D365. This completes a simple inbound receiving cycle using warehouse management only mode when it is connected to an External ERP or ordering system.

Now let's take a look into the outbound cycle using warehouse management only mode.

Outbound operations


Outbound operations overview using warehouse management only mode when connected to an External ERP

Process description

1 - Sales order is created and maintained in the External ERP and the external ERP sends outbound shipment order message to D365 to create an outbound shipment order. outbound shipment order is what is used to ship the Sales orders in D365 warehouse.

2 - The outbound shipment order message has three components

  • Header message - Contains the header information such as Source system, data area ID, SO number, Message ID and Warehouse (We will see this in more detail later)
  • Line message - Contains the line information such as item number, qty and units.
  • Complete message - This message is used to mark completion of the outbound shipment order message, and it means no more information can be received for the outbound shipment order and it is received fully.

3 - D365 Supply chain receives these messages and creates an outbound shipment order message.

4 - D365 later processes the outbound shipment order message using the message processor and as a result outbound shipment order is created.

5 - Depending on the setup's reservations are either created automatically or manually. The outbound shipment order is released to the warehouse. Release to warehouse of the outbound shipment order creates warehouse picking work depending on your setups.

6 - Items are picked in the warehouse using the mobile device and the picking work is closed.

7 - The outbound shipment order load is manually outbound ship confirmed which generates the shipment packing slip for the outbound shipment order. The shipment packing slip trigger business event for the external ERP.

8 - External ERP reads the shipment packing slip data and updates the sale order and on hand inventory,

Now let's see this in action in D365.

1 - We will now simulate the process where External ERP submits outbound shipment order messages. I will use Postman to send messages to D365. As shared above the outbound shipment order messages have 3 parts.

a - Header message for outbound shipment order message-


{
"MessageId": "OUT-07",
"dataAreaId": "USMF",
"SourceSystemId": "OXOLLOXO",
"OrderNumber": "SO07",
"ShipFromWarehouseId": "51",
"ConsigneeName": "CUSTOMER 07",
"ConsigneeCountryRegionId": "IND"
}        

Now post this message is using the post command in the postman using below url

POST {{resource}}/data/OutboundShipmentOrderMessages

We can see below that the outbound shipment order message is successfully sent to D365.

Outbound shipment order header message

b - Line message for outbound shipment order message


{
"MessageId": "Out-07",
"dataAreaId": "USMF",
"SourceSystemId": "OXOLLOXO",
"OrderNumber": "SO07",
"OrderLineNumber": 1,
"ItemNumber": "OXOLLOXO 11",
"OrderedQuantity": 110,
"OrderedUnitSymbol": "Pcs"
}        

Now post the line message using the post command in the postman using below url

POST {{resource}}/data/OutboundShipmentOrderLineMessages

We can see that the line message is successfully received in D365.


Outbound shipment order line message

Now if we take a look into D365 we will find that a outbound shipment order message will be created with status receiving as we have still not shared the complete message for the outbound shipment order.

Outbound shipment order message in D365

c - Complete message for outbound shipment order as below.


https://Resource/data/OutboundShipmentOrderMessages(MessageId='OUT-07', dataAreaId='USMF', SourceSystemId='OXOLLOXO', OrderNumber='SO07')/Microsoft.Dynamics.DataEntities.Complete?cross-company=true

We can see below that the complete message is successfully processed in D365 and as a result we got a success message in Postmand "204 No content"


Complete message for outbound shipment order message in postman

In D365 we can see that the outbound shipment order message is received and its status changes to received,


Outbound shipment order message received fully

2 - Message processor will now process this message and will create an outbound shipment order, and the status of the outbound shipment order message will change to "Accepted". Message processor is scheduled to run every 10 mins.


Outbound shipment order message with status Accepted
outbound shipment order created after the message processing

3 - Now we will release the outbound shipment order to the warehouse. outbound shipment order picking work will be generated, NOTE - how reservation will happen depends on setup of the source system. In my demo I have configured it to reserve automatically when order is created,


Outbound shipment order released to warehouse

4 - Below we can see the picking work, which is generated,

Warehouse picking work

5 - Now let's complete the picking in the warehouse app.

Warehouse picking using mobile device

6 - Warehouse picking work is closed and the outbound shipment order transactions gets updated to "Picked"


7 - Now as we have picked all the quantity of the load linked to the outbound shipment order we will mark it outbound ship confirm.


Load shipped

8 - The update to the load generates shipment packing slip records and business events for external ERP.


Shipment packing slip record for the outbound shipment order

9 - The external ERP will read the data in the shipment packing slip and will update the sales order and inventory.


Conclusion


In this article I have tried to give an overview of how a simple inbound and outbound process will look like using warehouse management only mode when it is connected to an external ERP. I have not covered any setups as that would have made the article very lengthy. Microsoft docs clearly state all the setups required.

it is also important to note that the warehouse management only mode does not cover all scenarios which are supported normally in warehouse module when D365 is acting as the ERP and WMS.

Also note that the message data used by me in this article is the bar minimum required as part of integration between External ERP and D365. There is lot more data which can be exchanged between the systems. So, this will be a design data mapping exercise for your organization to find what data is needed for your eternal ERP to work with D365 warehouse management only mode.

In the end I can say that it is very promising initiative, and many businesses can evaluate D365 warehouse management capabilities to solve existing ERP warehouse challenges.

Cheers ;)




要查看或添加评论,请登录

Sagar Suman的更多文章

社区洞察

其他会员也浏览了