If you use staging journals, you can set up the applicable journal validations. For each staging journal-related table, you can define the applicable validation rules.

For several tables, predefined validation rules are standard available.
 

Table

Validation class

Description

BisEdiPurchaseTrans

 

 

 

 

 

 

BisCheckBisEdiPurchaseTrans

Base validation class. Do not use as validation rule.

BisEdiCheckPurchaseLineDiscPercent

Checks if the discount percentage is equal to the discount percentage of the related PurchLine. On the journal validation setup, you can use a parameter to allow a small difference.

BisEdiCheckPurchaseLineDiscAmount

Checks if the discount amount is equal to the discount amount of the related PurchLine. On the journal validation setup, you can use the validation parameter to allow a small difference.

BisEdiCheckPurchItemEanCode

Checks if the BarCode exists in the InventItemBarcode table.

BisEdiCheckPurchPrice

Checks if the PurchPrice is equal to the PurchPrice of the related PurchLine. The related PurchLine is found using the PurchId and the LineNumber.

BisEdiCheckPurchLineAmount

Checks if the LineAmount is equal to the LineAmount of the related PurchLine. The related PurchLine is found using the PurchId and the LineNumber.

BisEdiCheckPurchDeliveryDate

Checks if the DeliveryDate of the PurchLine is equal to the ConfirmedDlv of the journal line.

BisEdiCheckPurchQty

Checks if the PurchQty is equal to the PurchQty of the related PurchLine. The related PurchLine is found using the PurchId and the LineNumber.

BisEDICheckPurchaseLineNumberUsage

Checks if the same purchase line number is used more than once.

BisEdiCheckPurchItemId

Checks if the ItemId exists in the InventTable.

BisEdiPurchaseJour

BisCheckBisEdiPurchaseJour

Base validation class. Do not use as validation rule.

BisEdiCheckOriginIdPurchase

Checks if a party setup exists for this VendAccount and OriginId.

BisEdiCheckPurchJourDeliveryDate

Checks if the DeliveryDate of the PurchTable is equal to the ConfirmedDlv of the journal header.

BisEdiCheckPurchaseDiscPercent

Checks if the discount percentage is equal to the discount percentage of the related purchase order. On the journal validation setup, you can use the validation parameter to allow a small difference.

BisEdiCheckPurchPurchId

Checks if the PurchId exists in the PurchTable.

BisEdiSalesTrans

BisCheckBisEdiSalesTrans

Base validation class. Do not use as validation rule.

BisEdiCheckATPItemAvailableQty

Checks the ATP for each EDI sales order line:
  - Item is determined using the BarCode field. If the BarCode field is empty, the check uses the ItemId field.
  - Delivery date is determined using the ReceiptDateRequested from the line. If the ReceiptDateRequested is empty, the check uses the ReceiptDateRequested from the header. If the ReceiptDateRequested from the header is empty, the current date is used.

BisEdiCheckExternalItem Checks in D365 FO if the external item ID exists for the item.

BisEdiCheckItemBarcode

Checks if the OriginalBarCode exists. The check uses the item setup from the party setup.

BisEdiCheckItemCanBeConverted

Checks if the UnitId field can be converted to the unit defined in the  InventTableModule for sales.

BisEdiCheckItemEanCode

Checks if the BarCode exists in the InventItemBarcode table.

BisEdiCheckItemGTIN

Checks if the BarCode exists in the InventItemGTIN table.

BisEdiCheckItemHighestQty

Checks if the SalesQty field is less than the HighestQty defined in the InventTableModule for sales.

BisEdiCheckItemId

Checks if the ItemId exists in the InventTable.

BisEdiCheckItemInPricelist

Checks if the ItemId exists in the PriceDiscTable.

BisEdiCheckItemLowestQty

Checks if the OrderedQty is greater than the LowestQty defined in the InventTableModule for sales.

BisEdiCheckItemLowestsalesQty

Checks if the SalesQty is greater than the LowestQty defined in the InventTableModule for sales.

BisEdiCheckItemMultiplyQty

Checks if the SalesQty is less than the MultipleQty defined in the InventTableModule for sales.

BisEdiCheckItemRestrictedForCountry

Checks if the item is restricted for sale to the country of the delivery address. This validation rule uses the Restricted products setup as defined for the Released products.

BisEdiCheckItemStopped

Checks if the Stopped field is disabled in the InventTableModule for sales.

BisEdiCheckSalesInventOnHand

Checks if the inventory on-hand is enough for the sum of the RemainInventPhysical per ItemId in this journal.

BisEdiCheckSalesLinePrice

Checks and calculates the expected sales line amount and compares it with the EDI sales line amount. It checks if the EDI sales line amount is different from the calculated amount.

You can allow a difference between the calculated amount and the EDI sales line amount. To do so, on the Journal validation setup, in the Validation parameter field, define the desired percentage. This percentage indicates the maximum allowed difference between the EDI sales line amount and the calculated amount.
Note: The expected sales line amount is calculated based on the trade agreements or default sales price.

BisEdiCheckSalesLinePriceUnitConversion Checks and calculates the expected sales line amount and compares it with the EDI sales line amount. It checks if the EDI sales line amount is different from the calculated amount, taking into account unit conversions. 
You can allow a difference between the calculated amount and the EDI sales line amount. To do so, on the Journal validation setup, in the Validation parameter field, define the desired percentage. This percentage indicates the maximum allowed difference between the EDI sales line amount and the calculated amount.
Note: The expected sales line amount is calculated based on the trade agreements or default sales price.

BisEdiCheckSalesPriceLineAmount

Checks if the LineAmount is equal to the expected LineAmount, considering discounts.

BisEdiCheckSalesUnit Checks if the sales unit exists.

BisEdiCheckSalesQuantity

Checks if the SalesQty is not 0.

BisEdiSalesJour

BisCheckBisEdiSalesJour

Base validation class. Do not use as validation rule.

BisEdiCheckCustomerExist

Checks if the customer exists, using the CustAccount field.

BisEdiCheckCustomerIsBlocked

Checks if the field CustTable.Blocked is 'Yes'. The customer is found using the CustAccount field.

BisEdiCheckLinesExist

Checks if the journal has lines.

BisEdiCheckOrderAlreadyExist

Checks if CustomerRref or the PurchOrderFormNum exists in the SalesTable.

BisEdiCheckOrderAlreadyExistsForCustomer

Checks if the PurchOrderFormNum exists in the SalesTable for the customer.

BisEdiCheckOrderAlreadyExistsForCustomerAndReference

Checks if the CustomerRef exists in the SalesTable for the customer.

BisEdiCheckOrderDeliveryDate

Checks if the ReceiptDateRequested field is in the past.

BisEdiCheckOrderWeightLimit

Checks if the sum of the NetWeight (InventTable) for this journal does not exceed the maximum weight. The maximum weight is defined as a parameter in the validation line.

BisEdiCheckOriginIdSales

Checks if a party setup exists for this CustAccount and OriginId.

BisEdiCheckSalesPool

Checks if the SalesPoolId exists in the SalesPool table.

BisEdiCheckWarehouseExist

Checks if the InventLocationId exists in the InventLocation table.

BisEdiSalesAddresses

BisCheckBisEdiSalesAddresses

Base validation class. Do not use as validation rule.

BisEdiCheckAddressEanCode

Checks if the addresses exist, using the field BisEanCodeId (GLN).

BisEdiInventoryOrderTrans

BisCheckBisEdiInventoryOrderTrans

Base validation class. Do not use as validation rule.

BisEdiCheckInventoryInventtransIdAlreadyReceived

Checks if one purchase receipt was made on this inventory transaction Id.

BisEdiCheckInventoryInventTransIdExists

Checks if the current inventory transaction ID exists.

BisEdiCheckInventoryOrderItemEanCode

Checks if the BarCode exists in the InventItemBarCode table. The check is not applied if the ItemId field is filled.

BisEdiCheckInventoryOrderItemGTIN

Checks if the BarCode exists in the InventItemBarGTIN table. The check is not applied if the ItemId field is filled.

BisEdiCheckInventoryOrderTransBatch

Checks if the InventBatchId or EndJob field exists on the journal line.

BisEdiCheckInventoryOrderTransBatchExp

Checks if the ExpirationDate (including the PdsBestBefore from the InventTable) is equal to the ExpDate from the InventBatch table.

BisEdiCheckInventoryOrderTransId

Checks if the InventTransId exists for sales or purchase orders.

BisEdiCheckInventoryOrderTransInventOK

Checks if the TransInvent is OK:
  - Open transactions for the item and location.
  - Batch exists for the item.
  - Batch expiry date is different.
  - License plate exists.
  - Physical quantity.
  - Batch unavailable.

BisEdiCheckInventoryOrderTransItemId

Checks if the ItemId exists in the InventTable. In case of production orders, the ProdTable is also used.

BisEdiCheckInventoryOrderTransLP

Checks if the LicensPlateId is according to the rules.

BisEdiCheckInventoryOrderTransLPShipped

Checks if the TransLPShipped is OK.

BisEdiCheckInventoryOrderTransNoSplitLP

Checks if enough inventory on-hand is available for a specific license plate to avoid splitting the sales or transfer order.

BisEdiCheckInventoryOrderTransPurchConfirmed

Checks if the purchase order is confirmed.

BisEdiCheckInventoryOrderTransQtyOnHand

Checks if enough inventory on-hand is available for this inventory order journal.

BisEdiCheckInventoryOrderTransQtyPositiv

Checks if the InventQty is positive.

BisEdiCheckInventoryOrderTransTotalQty

Checks if enough inventory on-hand is available for all the journals with MessageStatus 'To be processed'.

BisEdiCheckTransferHasShipped

Checks if the InventQty is less than the QtyRemainReceive on the InventoryOrderTrans. This check only applies to InventTransType 'Transfer order receive'.

BisEdiCheckWMSJournal

Checks if a WMSJournalTrans exists for this ItemId, LicensePlateId, InventBatchId, InventLocationId.

BisEdiInventoryOrderJour

BisCheckBisEdiInventoryOrderJour

Base validation class. Do not use as validation rule.

BisEdiCheckPurchPackingSlip Base validation class. Do not use as validation rule.

BisEdiCheckInventoryOrderJourCustHold

Checks if the CustTable.Blocked is 'All', 'Invoice', or 'Requisition' for the OrderType 'Sales order'. The check searches the related sales order using the InventTransRefId field on the header.

BisEdiCheckInventoryOrderJourHasOpenLine

Checks the status and the open lines for the different order types:
  - Production order
: ProdStatus is not 'Completed'.
  - Purchase order
: PurchStatus is not 'Invoiced', DocumentState is not 'Confirmed', and the purchase order line RemainInventPhysical is greater than or equal to the InventQty from the journal line.
  - Sales order
: SalesStatus is not 'Invoiced', and the sales order line RemainInventPhysical is greater than or equal to the InventQty from the journal line.
  - Transfer order
: TransferStatus is not 'Received', and the transfer order line QtyRemainReceive is greater than or equal to the InventQty from the journal line.

BisEdiCheckInventoryOrderJourHold

This check always returns false to avoid automatically processing the journal.

BisEdiCheckInventoryOrderJourPending

Checks if pending journals exist using the InventTransRefId, OrderType, and TransDateTime field. The journal is pending if the messageStatus is 'To be processed' or 'Error'.

BisEdiCheckInventoryOrderJourPeriodOpen

Checks if an open period exists in the LedgerFiscalCalendarPeriod, using the TransDateTime field from the journal header.

BisEdiCheckInventoryOrderJourQty

Checks if the sum of the InventQty is less than the Qty in the InventTrans table for the current InventTransId. This check is only applied if the ReferenceType is 'Sales order delivery', 'Sales order return', or 'Transfer order shipment'.

BisEdiCheckInventoryOrderJourReqRef

Checks the existence of purchase orders or sales orders:
  -
Checks for a sales order using the InventTransRefId, RequisitionReference, and CustAccount. The RequisitionReference is compared to the PurchOrderFormNum on the SalesTable.
  -
Checks for a purchase order using the InventTransRefId, RequisitionReference, and CustAccount. The RequisitionReference is compared to the VendorRef field on the PurchTable.

BisEdiCheckInventoryOrderJourReserveOK

Checks if enough inventory on-hand is available to reserve. This check is only applied to OrderType 'Sales order' or 'Transfer order'

BisEdiCheckInventoryOrderJourTransDate

Checks if the TransDateTime is defined and is not in the future.

BisEdiCheckInventoryOrderJourTransRefId

Checks if the InventTransRefId exists.

BisEdiCheckProdStarted

Checks if the ProdStatus of the ProdTable is 'Started' or 'Finished'.

BisEdiCheckPurchaseConfirmed

Checks if the DocumentState of the PurchTable is 'Confirmed'.

BisEdiTransferOrderTrans

BisCheckBisEdiTransferOrderTrans

Base validation class. Do not use as validation rule.

BisEdiCheckTransferLineItemId

Checks if the ItemId exists in the InventTable.

BisEdiCheckTransferLineQty

Checks if the InventQty is not 0.

BisEdiTransferOrderJour

BisCheckBisEdiTransferOrderJour

Base validation class. Do not use as validation rule.

BisEdiCheckTransferOrderDeliveryDate

Checks if the InventTransferReceiveDate deviates from other journals with the same TransferId.

BisStagingJournal

BisCheckBisEdiPurchaseTransDelivery

Base validation class. Do not use as validation rule.

BisEdiCheckPurchSplitDeliveryDate

Checks if the ConfirmedDlv differs from the related records in the BisEdiPurchaseTransDelivery.

BisEdiCheckPurchSplitDeliveryQty

Checks if the PurchQty differs from the related records in the BisEdiPurchaseTransDelivery.

BisEdiPurchaseMarkupTrans

BisCheckBisEdiPurchaseMarkupTrans Base validation class. Do not use as validation rule.
  BisEdiCheckPuchaseMarkupCode Checks if the charges code of the purchase confirmation line exists in the Charges codes (MarkupTable) table.

 

BisEdiCheckPuchaseMarkupTaxGroup

Checks if the sales tax group of the purchase confirmation line exists in the Sales tax groups (TaxGroup) table.

 

BisEdiCheckPuchaseMarkupTaxItemGroup

Checks if the tax item group of the purchase confirmation line exists in the Item sales tax groups (TaxItemGroup) table.

BisEdiSalesMarkupTrans

BisCheckBisEdiSalesMarkupTrans

Base validation class. Do not use as validation rule.

  BisEdiCheckSalesMarkupCode Checks if the charges code of the sales order line exists in the Charges codes (MarkupTable) table.

 

BisEdiCheckSalesMarkupTaxGroup

Checks if the sales tax group of the sales order line exists in the Sales tax groups (TaxGroup) table.

 

BisEdiCheckSalesMarkupTaxItemGroup

Checks if the tax item group of the sales order line exists in the Item sales tax groups (TaxItemGroup) table.

Related to Notes

Set up validation rules

 

Provide feedback