Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :

Integrating Products / Product Master data with Dynamics 365 Supply Chain Management

Muhammad Aurangzeb Profile Picture Muhammad Aurangzeb

In this article we will cover how to integrate / exchange Product / Product Master data in Product Information Management module of D365 SCM, D365 Commerce and D365 F&O (Finance & Operations). Going forward in this article we will refer to all above applications collectively as D365 SCM as it applies to all these application versions.

D365 SCM offer many options to integrate / connect and exchange data with 3rd party applications.   In this article we will cover CRUD (Create, Read, Update & Delete) operations using OData protocol and talk about Data Entities involved in creation of Products and Product Master.  In case you like to understand difference between Products and Product Master in D365 SCM. Please refer to Concept of Product and how to create Products & Product Master in D365 SCM.

Pre-requisites

This article assumes you already have a D365 F&O trial license and tier-1 development sandbox available.

  • Acquire D365 SCM Trial License: If you are new to ISV development with D365 SCM or learning D365 SCM development. You can sign up for trial license to kick off your development journey with D365 SCM. Once you signed up for trial account you can spin off a cloud VM to host your D365 SCM sandbox following the article here. Kindly note the environment (VM) hosted on Azure will be charged to partner’s azure subscription use auto shutdown scripts to control consumption based on need.
  •  Have familiarity with OData data exchange concepts and familiar with nomenclature of API URIs and supported operations. The following article can serve for quick refresher on OData Capabilities of D365 Finance & Operations APIs.
  •  Please refer to Register a web application with AAD & this article to register an application in Azure Active Directory to allow authentication and token to exchange data between 3rd party application and D365 SCM application.
  •  For testing and mimicking 3rd party applications for integration. We will be using Postman with D365 SCM

Postman Variables & Parameters:

Let’s start with understanding some over the variables defined in Postman calls and their purpose.

 Picture showing variables used in Postman collection calls

  • client_id, client_Secret: It is the ID you get when registering your application in AAD during pre-requisite step 2.
  • tenant_id: The tenant ID of AAD on which the Application is registered as part of pre-requite step 2.
  • resource: The base URL of the instance without the trailing '/' e.g., https://YourInstance.sandbox.operations.dynamics.com
  • TokenAAD and resourceForToken: I am using to get token for authentication. TokenAAD represent https://login.microsoftonline.com/[tenant_id]  and ResourceForToken is same as resource i.e., https://YourInstance.sandbox.operations.dynamics.com.
  •  tokenSalt:  It’s a token of authentication please refer to query OData by using Postman to get token or my example below (Token request & response sections) in response see value of access_token copy its value without “”.
  • ProduID_Salt, ProductName_Salt, ProductMasterID_Salt: These are variable placeholders for some products we will create in D365 SCM and will pass as variables in our OData requests for creation of products etc.

Token Request:

Please find below Post request to get oauth token as body we are sending grant_type, client_id, client_secret and D365 base url (as resource).

 Postman call to get a OAuth Token along with its operation, URL path and body parameters

Token Response:

In response see value of access_token copy its value without “” this the bearer token value for subsequent calls.

 Postman call to response of  a OAuth Token call along with its operation, URL path and body parameters

  Read Products / Product Master Request:

We will call get operation on DistinctProducts to get product data. I had put a filter to get just product whose productNumber = 0001. If we remove filter it will bring all products. Please note that authorization is taking the Bearer Token from Environment variables which we set based on access token in Token Response we received in above example.

 Postman call to get a Distinct Product request along with its operation, URL path and body parameters

 For Product Master we will call get operation on ProductMasters to get data. I had put a filter to get just product whose productNumber = 81129. If we remove filter, it will bring all products. Please note that authorization is taking the Bearer Token from Environment variables which we set based on access token in Token Response we received in above example.

 Postman call to get a Distinct Product response  along with its operation, URL path and body

OData Call Sequence for Create Request:

First, we must create the product / product master and its relevant base information than as a second step we release these products to relevant legal entities so to have proper product data created in D365 SCM you have to follow call sequencing of POST operation in following sequence and data entities. 

Product

Product Master (PM)

Purpose

DistinctProducts

ProductMasters

To create Product / Product Master base record

 

ProductMasterColors

Optional use only if PM has Color dimension

 

ProductMasterColorTranslations

 

ProductMasterConfigurations

Optional use only if PM has Configuration dimension

 

ProductMasterConfigurationTranslations

 

ProductMasterSizes

Optional use only if PM has Size dimension

 

ProductMasterSizeTranslations

 

ProductMasterStyles

Optional use only if PM has Style dimension

 

ProductMasterStyleTranslations

ReleasedProductsV2

ReleasedProductMastersV2 (To release the PM to specific

Release the Product / Product Master to specific legal entity

 

ReleasedProductVariantsV2

Release the Product Master variants to specific legal entity

 Note: There are some other translation / product tables specific to Retail as applicable in the case same above concept of OData can be populated in subsequent calls to those data entities as well.

 Create Distinct Product Request & Response:

 Postman call to create  a Distinct Product request along with its operation, URL path and body parameters

Update / Delete Requests:

In case we must update certain fields, we can use Patch operation. In the above case let us use the same newly created product and update its description, in below example notice operation is changed from POST to PATCH and filter is applied in the request for conditional update. The request will be as follows and if we read the product data afterwards, we will get the updated information in the request. 

Result in D365 SCM -> Product Information Management -> Released Products.

 Postman call to PATCH  a Distinct Product request along with its operation, URL path and body parametersD365 product image showing created product with updated data in description field

In case we must delete newly created product we can use DELETE operation along with filter criteria as follows. Kindly note deleting will only be successful if no transactions exist on the product. In case it is released and if some inventory / sales orders or purchase order transactions already created in the D365 SCM. It will not allow to delete the product.

 Postman call to Delete   a Distinct Product request along with its operation, URL path

 Release Distinct Product Request & Response:

Once we created the product with right values, we can release the product to applicable legal entity with more fields specific to legal entity such as its sales price, sales unit, purchase price, purchase unit and costing information so this released product is ready to be used in the SCM transactions onwards.

In the example below we used ReleasedProductsV2 data entity to create released product in USRT legal entity. One tip here is you can read an existing product to get list of attributed and pick and chose appropriate values to be sent in creation body as applicable to your product.

 Postman call to create  a Released  Product request & response along with its operation, URL path and body parameters

Sample Request:

{
            "dataAreaId": "usrt",
            "ItemNumber": "{{ProduID_Salt}}",
            "IsPurchasePriceIncludingCharges": "No",
            "IsPhantom": "No",
            "ItemFiscalClassificationCode": "",
            "SeventhProductFilterCode": "",
            "ServiceAccountingCode": "",
            "MarginABCCode": "None",
            "IsICMSTaxAppliedOnService": "No",
            "ShippingAndReceivingSortOrderCode": 0,
            "ProductionConsumptionWidthConversionFactor": 0,
            "AlternativeProductSizeId": "",
            "CatchWeightItemHandlingPolicyName": "",
            "RawMaterialPickingPrinciple": "Staging",
            "ProductionConsumptionDepthConversionFactor": 0,
            "DefaultProductConfigurationId": "",
            "ItemModelGroupId": "MOV_AVG",
            "GrossProductHeight": 0,
            "AlternativeProductVersionId": "",
            "IsSalesWithholdingTaxCalculated": "No",
            "ScaleIndicator": "Relevant",
            "ProductVolume": 0,
            "TrackingDimensionGroupName": "None",
            "PurchaseSalesTaxItemGroupCode": "RP",
            "CustomsExportTariffCode": "",
            "PlanningFormulaItemNumber": "",
            "UpdateProductVariantLifecycleState": "No",
            "WarehouseMobileDeviceDescriptionLine1": "",
            "InventoryCountingReasonCodePolicyName": "",
            "WarehouseMobileDeviceDescriptionLine2": "",
            "SalesItemWithholdingTaxGroupCode": "",
            "IsUnitCostProductVariantSpecific": "No",
            "IsPOSRegistrationQuantityNegative": "No",
            "UpperWarrantablePriceRangeLimit": 0,
            "POSRegistrationPlannedBlockedDate": "1900-01-01T12:00:00Z",
            "SellEndDate": "1900-01-01T12:00:00Z",
            "SADGroup": "",
            "IsPurchaseWithholdingTaxCalculated": "No",
            "DefaultLedgerDimensionDisplayValue": "006--",
            "WarrantyDurationTimeUnit": "Day",
            "CommissionProductGroupId": "",
            "IsExemptFromAutomaticNotificationAndCancellation": "No",
            "TaxSubstitutionCode": "",
            "ProductionType": "None",
            "NetProductWeight": 0,
            "ProductionPoolId": "",
            "SalesSupplementaryProductProductGroupId": "",
            "WarrantablePriceRangeBaseType": "None",
            "StorageDimensionGroupName": "SiteWH",
            "PurchasePricingPrecision": 0,
            "BOMUnitSymbol": "",
            "SalesPriceCalculationContributionRatio": 0,
            "CatchWeightUnitSymbol": "",
            "VendorInvoiceLineMatchingPolicy": "NotSet",
            "SellStartDate": "1900-01-01T12:00:00Z",
            "PhysicalDimensionGroupId": "",
            "CarryingCostABCCode": "None",
            "SalesRetailInventoryAvailabilityLevelProfile": "",
            "TransferOrderOverdeliveryPercentage": 0,
            "TenthProductFilterCode": "",
            "UnitConversionSequenceGroupId": "",
            "WillPickingWorkbenchApplyBoxingLogic": "No",
            "FixedSalesPriceCharges": 0,
            "IsDeliveredDirectly": "No",
            "IsScaleProduct": "No",
            "AlternativeProductColorId": "",
            "FixedPurchasePriceCharges": 0,
            "IsUnitCostIncludingCharges": "No",
            "ShipStartDate": "1900-01-01T12:00:00Z",
            "SalesPrice": 69.99,
            "SalesPriceCalculationModel": "None",
            "CustomsImportTariffCode": "",
            "ArrivalHandlingTime": 0,
            "SATCode": "",
            "IntrastatCommodityCode": "",
            "AreTransportationManagementProcessesEnabled": "No",
            "WarehouseReleaseSalesUnitRestricted": "All",
            "IsShipAloneEnabled": "No",
            "ProductionConsumptionDensityConversionFactor": 0,
            "PurchasePriceDate": "2016-10-06T12:00:00Z",
            "SalesPricingPrecision": 0,
            "PurchaseChargesQuantity": 0,
            "ValueABCCode": "None",
            "UnitCostDate": "2016-10-06T12:00:00Z",
            "VariableScrapPercentage": 0,
            "MaximumPickQuantity": 0,
            "AlternativeProductStyleId": "",
            "BarcodeSetupId": "",
            "IsSalesPriceIncludingCharges": "No",
            "PurchasePriceQuantity": 1,
            "PurchaseChargeProductGroupId": "",
            "ContinuityScheduleId": "",
            "FixedCostCharges": 0,
            "CostGroupId": "",
            "EighthProductFilterCode": "",
            "SalesLineDiscountProductGroupCode": "",
            "POSRegistrationActivationDate": "1900-01-01T12:00:00Z",
            "MaximumCatchWeightQuantity": 0,
            "ProductLifeCycleValidToDate": "1900-01-01T12:00:00Z",
            "WarrantyDurationTime": 0,
            "ServiceFiscalInformationCode": "",
              "IsTenderDiscountPOSRegistrationProhibited": "No",
            "PurchaseSupplementaryProductProductGroupId": "",
            "InventoryUnitSymbol": "Ea",
            "WillTotalPurchaseDiscountCalculationIncludeProduct": "Yes",
            "PackSizeCategoryId": "",
            "SalesChargesQuantity": 0,
            "SalesMultilineDiscountProductGroupCode": "",
            "BatchMergeDateCalculationMethod": "Manual",
            "SalesChargeProductGroupId": "",
            "PurchasePrice": 41.994,
            "SecondProductFilterCode": "",
            "IsIntercompanyPurchaseUsageBlocked": "No",
            "AlternativeProductConfigurationId": "",
            "SalesOverdeliveryPercentage": 0,
            "IsDiscountPOSRegistrationProhibited": "No",
            "BestBeforePeriodDays": 0,
            "PurchaseOverdeliveryPercentage": 0,
            "ProductLifecycleStateId": "",
            "PurchaseUnitSymbol": "Ea",
            "SalesUnderdeliveryPercentage": 0,
            "BuyerGroupId": "",
            "IsManualDiscountPOSRegistrationProhibited": "No",
            "ServiceType": "NotSpecified",
            "NecessaryProductionWorkingTimeSchedulingPropertyId": "",
            "ApprovedVendorCheckMethod": "NoCheck",
            "SalesRebateProductGroupId": "",
            "InventoryReservationHierarchyName": "",
            "HSNCode": "",
            "FlushingPrinciple": "Start",
            "SalesPriceQuantity": 1,
            "YieldPercentage": 0,
            "TareProductWeight": 0,
            "ApproximateSalesTaxPercentage": 0,
            "PackingDutyQuantity": 0,
            "PurchaseLineDiscountProductGroupCode": "",
            "WillInventoryIssueAutomaticallyReportAsFinished": "No",
            "Exempt": "No",
            "FourthProductFilterCode": "",
            "ProductFiscalInformationType": "",
            "PackageHandlingTime": 0,
            "GrossProductWidth": 0,
            "NinthProductFilterCode": "",
            "ShelfLifePeriodDays": 0,
            "DefaultProductVersionId": "",
            "SalesRetailInventoryAvailabilityBuffer": 0,
            "TransferOrderUnderdeliveryPercentage": 0,
            "DefaultReceivingQuantity": 0,
            "POSRegistrationBlockedDate": "1900-01-01T12:00:00Z",
            "MustKeyInCommentAtPOSRegister": "No",
            "DefaultProductStyleId": "",
            "ConstantScrapQuantity": 0,
            "PotencyBaseAttributeValueEntryEvent": "PurchProdReceipt",
            "KeyInPriceRequirementsAtPOSRegister": "NotMandatory",
            "IntrastatChargePercentage": 0,
            "ProductCoverageGroupId": "",
            "PotencyBaseAttibuteTargetValue": 0,
            "IsIntercompanySalesUsageBlocked": "No",
            "PackingMaterialGroupId": "",
            "PurchaseRebateProductGroupId": "",
            "CNPJ": "",
            "PrimaryVendorAccountNumber": "1004",
            "ThirdProductFilterCode": "",
            "SearchName": "{{ProductName_Salt}}",
            "IsRetailDiscountPOSRegistrationProhibited": "No",
            "ProjectCategoryId": "",
            "OriginCountryRegionId": "",
            "AlternativeItemNumber": "",
            "NonGST": "No",
            "PurchaseItemWithholdingTaxGroupCode": "",
            "IsZeroPricePOSRegistrationAllowed": "No",
            "CostChargesQuantity": 0,
            "IsUnitCostAutomaticallyUpdated": "No",
            "DefaultDirectDeliveryWarehouse": "",
            "ProductTaxationOrigin": "National",
            "IsVariantShelfLabelsPrintingEnabled": "No",
            "UnitCost": 41.994,
            "DefaultProductColorId": "",
            "SalesPriceDate": "2016-10-06T12:00:00Z",
            "AlternativeProductUsageCondition": "Never",
            "WillTotalSalesDiscountCalculationIncludeProduct": "Yes",
            "PurchasePriceToleranceGroupId": "",
            "IsInstallmentEligible": "No",
            "BaseSalesPriceSource": "PurchPrice",
            "SixthProductFilterCode": "",
            "SerialNumberGroupCode": "",
            "ProductLifeCycleValidFromDate": "1900-01-01T12:00:00Z",
            "ItemFiscalClassificationExceptionCode": "",
            "NGPCode": 0,
            "FirstProductFilterCode": "",
            "FifthProductFilterCode": "",
            "SalesUnitSymbol": "Ea",
            "TaxRateType": "",
            "LowerWarrantablePriceRangeLimit": 0,
            "KeyInQuantityRequirementsAtPOSRegister": "NotMandatory",
            "ProductionGroupId": "",
            "DefaultOrderType": "Purch",
            "ProductGroupId": "ActionSpor",
            "IsCatchWeightProduct": "No",
            "ProductionConsumptionHeightConversionFactor": 0,
            "ContinuityEventDuration": 0,
            "PKWiUCode": "",
            "IsPOSRegistrationBlocked": "No",
            "BatchNumberGroupCode": "",
            "DefaultProductSizeId": "",
            "ProductDimensionGroupName": "",
            "PurchaseUnderdeliveryPercentage": 0,
            "GrossDepth": 0,
            "RevenueABCCode": "None",
            "PackageClassId": "",
            "SalesPriceCalculationChargesPercentage": 0,
            "PurchaseMultilineDiscountProductGroupCode": "",
            "WillWorkCenterPickingAllowNegativeInventory": "No",
            "ProductLifeCycleSeasonCode": "",
            "SalesSalesTaxItemGroupCode": "RP",
            "IsRestrictedForCoupons": "No",
            "IsSalesPriceAdjustmentAllowed": "No",
            "IsPurchasePriceAutomaticallyUpdated": "No",
            "MinimumCatchWeightQuantity": 0,
            "WillInventoryReceiptIgnoreFlushingPrinciple": "No",
            "ProductNumber": "{{ProduID_Salt}}",
            "UnitCostQuantity": 1,
            "FreightAllocationGroupId": "",
            "ComparisonPriceBaseUnitSymbol": "",
            "CostCalculationGroupId": "",
            "ShelfAdvicePeriodDays": 0,
            "OriginStateId": "",
            "ItemOverUnderdeliveryToleranceGroupId": "",
            "CustomsDescription": "",
            "TransferOrderLandedCostGroupId": "",
            "VoyageArrivalGroupId": "",
            "LandedCostTypeGroupId": "",
            "CommodityCodeId": "",
            "RevRecBundle": "No",
            "RevRecMedianPriceMaximumTolerance": 0,
            "RevRecMedianPrice": "No",
            "RevRecDefaultRevenueRecognitionSchedule": "",
            "RevRecExcludeFromCarveOut": "No",
            "RevRecMedianPriceMinimumTolerance": 0,
            "RevRecRevenueRecognitionEnabled": "No",
            "RevRecRevenueType": "Essential"
        }

 Result in D365 SCM -> Product Information Management -> Released Products:

 D365 image showing released product created in legal entity

Create Product Master Request & Response:

 Postman call to create  a Product Master request & response along with its operation, URL path and body parameters

Sample Request:

{
    "ProductNumber": "9x002",
    "NMFCCode": "",
    "ProductType": "Item",
    "ProductStyleGroupId": "",
    "STCCCode": "",
    "IsProductVariantUnitConversionEnabled": "No",
    "AreIdenticalConfigurationsAllowed": "No",
    "StorageDimensionGroupName": "SiteWH",
    "IsAutomaticVariantGenerationEnabled": "Yes",
    "ProductSizeGroupId": "",
    "VariantConfigurationTechnology": "PredefinedVariants",
    "ProductDimensionGroupName": "SizeColStl",
    "IsProductKit": "No",
    "IsCatchWeightProduct": "No",
    "ProductDescription": "When you need to be a bit on the business casual side, to not too formal, our selection of pants will have you covered.",
    "ProductColorGroupId": "",
    "RetailProductCategoryName": "Pants",
    "ProductSearchName": "Flat Front Pants",
    "TrackingDimensionGroupName": "None",
    "ProductName": "Flat Front Pants",
    "HarmonizedSystemCode": ""
}

 Create Product Master Color & Translation:

 Postman call to create  a Product Color request along with its operation, URL path and body parameters

You must create product color translations for all the applicable languages in which customers require invoices / company users work globally and require country specific translations for products in transactions and reporting.  So, create translations of the same color into all required languages.

 Postman call to create  a Product Color Translation request along with its operation, URL path and body parameters

Create Product Master Size & Translation:

 Postman call to create  a Product Size request along with its operation, URL path and body parametersPostman call to create  a Product Size  Translation request along with its operation, URL path and body parameters

Create Product Master Style & Translation:

 Postman call to create  a Product Style request along with its operation, URL path and body parametersPostman call to create  a Product Style Translation request along with its operation, URL path and body parameters

 Release Product Master Request & Response:

Once we created the product master along with its configurations like Size / Color / Style or Configuration as applicable with right values, we can release the product master to applicable legal entity with more fields specific to legal entity such as its sales price, sales unit, purchase price, purchase unit and costing information so this released product is ready to be used in the SCM transactions onwards.

In the example below we used ReleasedProductMastersV2data entity to create released product master in USRT legal entity. One tip here is you can read an existing product to get list of attributed and pick and choose appropriate values to be sent in creation body as applicable to your product.

 Postman call to create  a Released Product Master request and response along with its operation, URL path and body parameters

Sample Request:

 

{
    "dataAreaId": "usrt",
    "ItemNumber": "9x002",
    "FixedSalesPriceCharges": 0,
    "IsDiscountPOSRegistrationProhibited": "No",
    "ProductTaxationOrigin": "National",
    "TrackingDimensionGroupName": "None",
    "BOMUnitSymbol": "",
    "MinimumCatchWeightQuantity": 0,
    "PurchasePriceToleranceGroupId": "",
    "VariableScrapPercentage": 0,
    "CostCalculationBOMLevel": 0,
    "UnitCostQuantity": 1,
    "TareProductWeight": 0,
    "ShelfLifePeriodDays": 0,
    "NetProductWeight": 0,
    "ProjectCategoryId": "",
    "DefaultDirectDeliveryWarehouse": "",
    "MarginABCCode": "None",
    "FixedPurchasePriceCharges": 0,
    "ContinuityScheduleId": "",
    "CommissionProductGroupId": "",
    "IsSalesWithholdingTaxCalculated": "No",
    "PurchaseOverdeliveryPercentage": 0,
    "IsPurchaseWithholdingTaxCalculated": "No",
    "SellStartDate": "1900-01-01T12:00:00Z",
    "SalesMultilineDiscountProductGroupCode": "",
    "POSRegistrationActivationDate": "1900-01-01T12:00:00Z",
    "SalesChargeProductGroupId": "",
    "DefaultProductSizeId": "",
    "PrimaryVendorAccountNumber": "1002",
    "ProductFiscalInformationType": "",
    "ProductLifeCycleSeasonCode": "",
    "ProductionGroupId": "",
    "IsIntercompanyPurchaseUsageBlocked": "No",
    "WillInventoryReceiptIgnoreFlushingPrinciple": "No",
    "MaximumCatchWeightQuantity": 0,
    "VendorInvoiceLineMatchingPolicy": "NotSet",
    "BaseSalesPriceSource": "PurchPrice",
    "WillInventoryIssueAutomaticallyReportAsFinished": "No",
    "PurchaseChargeProductGroupId": "",
    "PackageHandlingTime": 0,
    "DefaultProductVersionId": "",
    "PlanningFormulaItemNumber": "",
    "ProductionConsumptionWidthConversionFactor": 0,
    "SearchName": "Flat Front Pants",
    "StorageDimensionGroupName": "SiteWH",
    "IsICMSTaxAppliedOnService": "No",
    "UnitConversionSequenceGroupId": "",
    "RevenueABCCode": "None",
    "PurchaseUnitSymbol": "ea",
    "WillTotalSalesDiscountCalculationIncludeProduct": "Yes",
    "PurchaseLineDiscountProductGroupCode": "",
    "AlternativeProductUsageCondition": "Never",
    "DefaultProductColorId": "",
    "SalesRebateProductGroupId": "",
    "PurchaseRebateProductGroupId": "",
    "MustKeyInCommentAtPOSRegister": "No",
    "IsIntercompanySalesUsageBlocked": "No",
    "ValueABCCode": "None",
    "SalesUnitSymbol": "ea",
    "PurchasePricingPrecision": 0,
    "IsPurchasePriceIncludingCharges": "No",
    "ApprovedVendorCheckMethod": "NoCheck",
    "PurchasePriceDate": "2022-05-20T12:00:00Z",
    "ProductionConsumptionDepthConversionFactor": 0,
    "PackingMaterialGroupId": "",
    "GrossDepth": 0,
    "WillPickingWorkbenchApplyBoxingLogic": "No",
    "SalesChargesQuantity": 0,
    "NecessaryProductionWorkingTimeSchedulingPropertyId": "",
    "PurchasePriceQuantity": 1,
    "IsUnitCostIncludingCharges": "No",
    "POSRegistrationPlannedBlockedDate": "1900-01-01T12:00:00Z",
    "KeyInQuantityRequirementsAtPOSRegister": "NotMandatory",
    "ProductionPoolId": "",
    "ServiceFiscalInformationCode": "",
    "PurchaseItemWithholdingTaxGroupCode": "",
    "PhysicalDimensionGroupId": "",
    "FlushingPrinciple": "Start",
    "PackSizeCategoryId": "",
    "ShipStartDate": "1900-01-01T12:00:00Z",
    "IsPurchasePriceAutomaticallyUpdated": "No",
    "PurchaseSalesTaxItemGroupCode": "RP",
    "GrossProductHeight": 0,
    "NGPCode": 0,
    "TransferOrderUnderdeliveryPercentage": 0,
    "CostChargesQuantity": 0,
    "YieldPercentage": 0,
    "OriginStateId": "",
    "CostGroupId": "",
    "UnitCost": 45,
    "ItemFiscalClassificationExceptionCode": "",
    "ProductType": null,
    "IsExemptFromAutomaticNotificationAndCancellation": "No",
    "SalesPriceCalculationChargesPercentage": 0,
    "CatchWeightUnitSymbol": "",
    "BuyerGroupId": "",
    "IsUnitCostAutomaticallyUpdated": "No",
    "CostCalculationGroupId": "",
    "ProductGroupId": "Fashion",
    "POSRegistrationBlockedDate": "1900-01-01T12:00:00Z",
    "DefaultProductConfigurationId": "",
    "InventoryGSTReliefCategoryCode": "",
    "ProductSearchName": "",
    "TransferOrderOverdeliveryPercentage": 0,
    "SalesUnderdeliveryPercentage": 0,
    "RawMaterialPickingPrinciple": "Staging",
    "SalesLineDiscountProductGroupCode": "",
    "SalesPriceCalculationContributionRatio": 0,
    "SalesPriceDate": "2022-05-20T12:00:00Z",
    "DefaultReceivingQuantity": 0,
    "WillWorkCenterPickingAllowNegativeInventory": "No",
    "FreightAllocationGroupId": "",
    "IsDeliveredDirectly": "No",
    "SalesPriceCalculationModel": "None",
    "ProductLifeCycleValidToDate": "1900-01-01T12:00:00Z",
    "ArrivalHandlingTime": 0,
    "WarehouseMobileDeviceDescriptionLine1": "",
    "WarehouseMobileDeviceDescriptionLine2": "",
    "IsScaleProduct": "No",
    "IsShipAloneEnabled": "No",
    "BOMLevel": 0,
    "BestBeforePeriodDays": 0,
    "SerialNumberGroupCode": "",
    "ContinuityEventDuration": 0,
    "ApproximateSalesTaxPercentage": 0,
    "IntrastatChargePercentage": 0,
    "ProductionConsumptionDensityConversionFactor": 0,
    "PotencyBaseAttibuteTargetValue": 0,
    "ConstantScrapQuantity": 0,
    "UnitCostDate": "2022-05-20T12:00:00Z",
    "DefaultProductStyleId": "",
    "PurchasePrice": 45,
    "ProductionConsumptionHeightConversionFactor": 0,
    "WillTotalPurchaseDiscountCalculationIncludeProduct": "Yes",
    "PackageClassId": "",
    "SalesPrice": 79.99,
    "SellEndDate": "1900-01-01T12:00:00Z",
    "MaximumPickQuantity": 0,
    "PurchaseUnderdeliveryPercentage": 0,
    "IsSalesPriceIncludingCharges": "No",
    "IsInstallmentEligible": "No",
    "ShelfAdvicePeriodDays": 0,
    "ProductionType": "None",
    "IsZeroPricePOSRegistrationAllowed": "No",
    "SalesSupplementaryProductProductGroupId": "",
    "IsRestrictedForCoupons": "No",
    "BarcodeSetupId": "",
    "AlternativeProductStyleId": "",
    "ItemFiscalClassificationCode": "",
    "IsSalesPriceAdjustmentAllowed": "No",
    "ProductNumber": "9x002",
    "IntrastatCommodityCode": "",
    "DefaultLedgerDimensionDisplayValue": "",
    "PurchaseMultilineDiscountProductGroupCode": "",
    "SalesItemWithholdingTaxGroupCode": "",
    "ProductLifeCycleValidFromDate": "1900-01-01T12:00:00Z",
    "CarryingCostABCCode": "None",
    "SalesGSTReliefCategoryCode": "",
    "ShippingAndReceivingSortOrderCode": 0,
    "InventoryReservationHierarchyName": "",
    "GrossProductWidth": 0,
    "IsPhantom": "No",
    "IsUnitCostProductVariantSpecific": "No",
    "ProductCoverageGroupId": "",
    "FixedCostCharges": 0,
    "IsPOSRegistrationQuantityNegative": "No",
    "KeyInPriceRequirementsAtPOSRegister": "NotMandatory",
    "SalesSalesTaxItemGroupCode": "RP",
    "AlternativeItemNumber": "",
    "SalesPricingPrecision": 0,
    "OriginCountryRegionId": "",
    "SalesOverdeliveryPercentage": 0,
    "ProductVolume": 0,
    "BatchNumberGroupCode": "",
    "PurchaseGSTReliefCategoryCode": "",
    "SalesPriceQuantity": 1,
    "PotencyBaseAttributeValueEntryEvent": "PurchProdReceipt",
    "ItemModelGroupId": "MOV_AVG",
    "DefaultOrderType": "Purch",
    "BatchMergeDateCalculationMethod": "Manual",
    "PurchaseChargesQuantity": 0,
    "AlternativeProductVersionId": "",
    "AlternativeProductConfigurationId": "",
    "IsVariantShelfLabelsPrintingEnabled": "No",
    "PackingDutyQuantity": 0,
    "AlternativeProductSizeId": "",
    "IsPOSRegistrationBlocked": "No",
    "AlternativeProductColorId": "",
    "ComparisonPriceBaseUnitSymbol": "",
    "AreTransportationManagementProcessesEnabled": "No",
    "PurchaseSupplementaryProductProductGroupId": "",
    "InventoryUnitSymbol": "ea"
}

Release Product Master Variants Request & Response:

One important step is to generate & release the combinations of Color, Size and Style which are applicable for the product into the legal entity for this product master.  We can generate 1 by 1 or in the example below we can batch multiple creation in one request. For that we will use POST Data Batch operation. Notice in below request the use is changed to batch operation as well the content type is changed from application/json to multipart/mixed;boundary=batch_xxxx-xxxx-xxxx (where xxxx can be any unique identifier)

 Postman call to create  a Product Master Variants released  request along with its operation, URL pathPostman call to create  a Product Master Variants released  request along with its operation, URL path and body parameters

 Result in D365 SCM ->Product Information Management -> Released Products

 D365 image showing released product master in legal entity

 D365 image showing released product master variants in legal entity

 Conclusion:

In this post we have seen how to sequence the OData calls to create and release Product and Product Master in D365 SCM legal entities so that can be used in further transactions. We have also seen how to update (Patch) and Delete using OData operations. The request formats / fields can be used from any 3rd party application to communicate and exchange data with PIM module of D365 SCM.

Full Blog Series Links:

 

Comments

*This post is locked for comments