D365FO oData PATCH URL limitation

There is ItemCoverageSettingsV2 data entity with a lot of key fields. And therefore when you try to update it with PATCH request it will fail:

PATCH https://environment.dynamics.com/data/ItemCoverageSettingsV2(dataAreaId='vk', ItemNumber='BRO0001', CoverageWarehouseLocationId='', CoverageItemBatchNumber='', CoverageProductColorId='0SZ', CoverageProductSizeId='000', CoverageProductStyleId='', CoverageProductVersionId='', CoverageWarehouseId='STORE', CoverageItemSerialNumber='', CoverageSiteId='VK', CoverageInventoryStatusId='', CoverageProductConfigurationId='')?cross-company=true

Error: HTTP Error 400. The request URL is invalid.

The part after last slash (which begins from ItemCoverageSettingsV2) should not exceed 260 characters.

The only way to overcome this issue is to use batch reuqest. This way the long PATCH URL can be put in the body part.

Example:

POST https://environent.cloudax.dynamics.com/data/$batch HTTP/1.1
OData-Version: 4.0
OData-MaxVersion: 4.0
Content-Type: multipart/mixed; boundary=batch_boundary
Accept: multipart/mixed
Accept-Charset: UTF-8
Authorization: Bearer AuthToken

--batch_boundary
Content-Type: multipart/mixed; boundary=changeset_boundary

--changeset_boundary
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 1

PATCH https://environent.cloudax.dynamics.com/data/ItemCoverageSettingsV2(dataAreaId='vk',ItemNumber='BRO0001',CoverageWarehouseLocationId='',CoverageItemBatchNumber='',CoverageProductColorId='0SZ',CoverageProductSizeId='000',CoverageProductStyleId='',CoverageProductVersionId='',CoverageWarehouseId='STORE',CoverageItemSerialNumber='',CoverageSiteId='VK',CoverageInventoryStatusId='',CoverageProductConfigurationId='')?cross-company=true HTTP/1.1
OData-Version: 4.0
OData-MaxVersion: 4.0
Content-Type: application/json;odata.metadata=minimal
Accept: application/json;odata.metadata=minimal
Accept-Charset: UTF-8
Authorization: Bearer AuthToken

{
   "@odata.type":"#Microsoft.Dynamics.DataEntities.ItemCoverageSettingsV2",
   "dataAreaId":"vk",
   "ItemNumber":"BRO0001",
   "CoverageWarehouseLocationId":"",
   "CoverageItemBatchNumber":"",
   "CoverageProductColorId":"0SZ",
   "CoverageProductSizeId":"000",
   "CoverageProductStyleId":"",
   "CoverageProductVersionId":"",
   "CoverageWarehouseId":"STORE",
   "CoverageItemSerialNumber":"",
   "CoverageSiteId":"VK",
   "CoverageInventoryStatusId":"",
   "CoverageProductConfigurationId":"",
   "CoveragePeriodDays":0,
   "VendorAccountNumber":"",
   "ApprovedRequisitionTimeFenceDays":0,
   "LastPlanningFormulaPriorityChangedDate":"1900-01-01T12:00:00Z",
   "ProcurementLeadTimeDays":0,
   "DefaultPlanningFormulaPriority":99,
   "IsProcurementLeadTimeOverridden":"No",
   "AutomaticFirmingTimeFenceDays":0,
   "IsConsumeOnHandOverridden":"No",
   "ProductionLeadTimeDays":0,
   "MinimumOnHandFulfillmentMethod":"TodaysDate",
   "PlanningFormulaItemNumber":"",
   "MaximumOnHandInventoryQuantity":0,
   "AreTimeFencesOverridden":"No",
   "FreezeTimeFenceDays":0,
   "IsTransferLeadTimeOverridden":"No",
   "CapacitySchedulingTimeFenceDays":0,
   "NegativeDays":0,
   "MinimumOnHandInventoryQuantity":0,
   "MaximumOnHandInventorySafetyKeyId":"",
   "PositiveDays":0,
   "CoverageTimeFenceDays":0,
   "CurrentPlanningFormulaPriority":99,
   "ProductCoverageGroupId":"",
   "MinimumOnHandInventorySafetyKeyId":"",
   "AreCoverageGroupSettingsOverridden":"No",
   "IsTransferLeadTimeUsingWorkingDays":"No",
   "IsProcumentLeadTimeUsingWorkingDays":"No",
   "BOMOrFormulaExplosionTimeFenceDays":0,
   "AreGeneralSettingsOverridden":"No",
   "DefaultPlannedTransferOrderFromWarehouseId":"",
   "CoverageMethod":"Period",
   "ConsumeOnHandInventoryMethod":"BeforeAllOtherSupply",
   "TransferLeadTimeDays":0,
   "PlannedOrderType":"Purch",
   "IsPlannedOrderTypeOverridden":"No",
   "IsProductionLeadTimeOverridden":"No",
   "IsProductionLeadTimeUsingWorkingDays":"No",
   "IsMinimumOnHandSafetyPeriodUsed":"No",
   "ReorderPoint":0
}
--changeset_boundary--
--batch_boundary--



Support The Author

 If you found value in what I share, I've set up a Buy Me a Coffee page as a way to show your support.

Buy Me a Coffee

Post a Comment


All Comments


Mötz Jensen 29 June 2022

This is also an issue when trying to fetch single records via odata, where the key combination is exceeding the 260 char limit. Never thought about the batch request - that is a brilliant move! Would it be possible for you to investigate a batch request could be used to fetch a record by key - which normally fails with the non-batch mode?


Search

About

DaxOnline.org is free platform that allows you to quickly store and reuse snippets, notes, articles related to Dynamics 365 FO.

Authors are allowed to set their own "buy me a coffee" link.
Join us.

Blog Tags