Inventory Reservation Process Microsoft Dynamics 365 Data Model
Inventory reservation process in Microsoft Dynamics D365 data model tutorial 19 explains about data model functionality & ERD tables to simplify the process for end users. Today, we’re going to look at one of the most frequently used processes in the application – Inventory Reservation Process.
Learning the functional and technical processes for Inventory Reservation may seem difficult; therefore we are going to break it down into a step-by-step guide and make it easier for you with this tutorial.
Beginning with the basic functional processes, we will guide you through data model functionality, ERD and tables to simplify the process as much as possible.
Let’s start with the Inventory Reservation Process.
How to Begin Inventory Reservation Process through Sales Order Manually: Dynamics 365 F&SC Functional Walk-through
Step 1: Navigate to All Sales Orders
Navigate to ‘All sales orders’ by clicking on ‘Modules’ > ‘Accounts receivable’ > ‘Orders’ > ‘All sales orders.’ Open any Sales Order having status ‘Open Order’ and Check for on-hand inventory for product added in sales order line before reservation.
Step 2: Make a Reservation
Click on Inventory to select the Reservation button to Make a Reservation.
Step 3: Enter Reservation Quantity
Enter Reservation Quantity on Reservation Form.
Step 4: Check On-Hand Reservation
Check On-hand Inventory after Reservation.
Now, let us move on to the technical aspect of Inventory Reservation Process.
The Data Model behind Inventory Reservation Process: MS Dynamics 365 F&SC Technical Walk-through
Entity Relationship Diagram (ERD):
Below we have added some of the important tables involved in Inventory Reservation Process in Dynamics 365.
Additionally, you can see the primary tables and the cardinality constraints with ‘InventTable’ and ‘InventTrans’ and ‘InventSum’.
Below you will see a Runnable Class (job) for the Inventory Reservation Process:
[sourcecode language=”c-sharp”] class ibCreateSalesOrderReserveInventory{
///
/// Runs the class with the specified arguments.
///
///
public static void main(Args _args)
{
SalesTable salesTable;
SalesLine salesLine;
InventTrans inventTrans;
InventTransOrigin inventTransOrigin;
InventMovement inventMovement;
InventUpd_Reservation inventUpd_Reservation;
SalesId salesId = ‘001360’; // Sales Order Number
int64 reserveQuantity = 2; //Quantity that need to be reserved
// Reserve an item
salesTable = SalesTable::find(salesId);
// retrieved the first sales order line of selected sales order
select firstonly salesline exists join salesLine
where salesLine.SalesId == salesTable.SalesId;
//Find InventTrans from salesLine.InventTransId
inventTrans = InventTrans::findTransId(salesLine.InventTransId);
if(inventTrans.RecId)
{
Inventmovement = inventTrans.inventmovement(true);
inventUpd_Reservation = InventUpd_Reservation::newInventDim(inventmovement,salesline.inventDim(), -1*reserveQuantity, false);
inventUpd_Reservation.updatenow();
}
}
}
Although there are many tables included in this process, we are going to focus on two major tables.
InventTrans:
InventTrans table contains information about inventory transactions.
When order lines (such as sales order lines or purchase order lines) are created, they generate a related record in inventTrans table.
These records represent the flow of material that goes in and out of inventory. This table is extremely useful in Dynamics 365; all things considered.
Let’s have a look at some types of data InventTrans contains:
- It has customer account details, which include customer balances and transactions.
- The return orders (including updates) are processed through this table.
- These tables contain all the details of transactions related to inventory; which is why this table is very useful for making inventory-related reports.
- These tables contain all the information of financial and physical transactions; not only that but we can also get open sales orders and posted sales orders information through it.
Below we have listed other significant fields of the InventTrans along with their respective descriptions:
Field | Data Type | Description |
ItemId | string | Item number for sales order |
Qty | real | Quantity for items which are added in sales order line |
StatusIssues | Enum | StatusIssues stored in this table |
SalesReceipt | Enum | Receipt Status of sales order line |
Now let’s take a look at InventSum.
InventSum:
InventSum table contains information about the present and expected on-hand stock of items.
Let’s have a look at some characteristics of the InventSum table:
- Contains the information related to summaries data (related to inventory) which is very helpful for making reports.
- InventSum contains information of OnHand inventory per dimension e.g. site, color, config Id, warehouse etc.
Next, we will show you a few of the important fields of this table along with their description.
Field | Data Type | Description |
ItemId | string | Unique numeric Item Id |
AvailPhysical | real | Physical available quantity on hand quantity |
ReservOrder | real | Reserve order quantity which are ordered |
ReservPhysical | real | Physical reserve quantity on sales order line |
Overview: Inventory Reservation Process MS Dynamics 365 Data Model
In this blog post Inventory Reservation Process MS Dynamics 365 Data Model, we have covered the technical and functional aspects of Inventory Reservation.
You can create policies on Inventory and Warehouse Management. In hindsight, every organization creates their own policies as per their needs.
In our case, we manually reserved (10) as the quantity for the sales order.
The purpose of reservation is to ‘save some quantity which will not be used in any other business processes’. Reservation is a reversible process; you can reverse the quantity if it is no longer needed by a customer.
In addition, we sincerely hope that you enjoyed part 19 of our exciting series on Microsoft Dynamics 365 Data Model. In short we aim to provide quality service at all times. Moreover, if you need to reach me, you know how to get in touch by reaching out to me here. – Brandon Ahmad, founder of Instructor Brandon and Dynatuners.