Monday, December 23, 2024

Batch API for D365FO

Using Batch API for D365FO 
        


  • You can send requests for multiple operations in a single HTTP request.
  • Batch requests can include up to 1000 individual requests but cannot contain other batch requests.

Without Change Sets :

  • If you send 10 requests in a batch and 2 fail, the remaining requests will not be stopped and will continue to be processed.
              "Prefer": "odata.continue-on-error" - Need to add this in header to continue the process

Using Change Sets :

  • In addition to individual requests, a batch request can include change sets:
  • When multiple operations are included in a change set, if any one operation fails, all completed operations are rolled back.


1. Batch URL for request.

{{resource}}/data/$batch

2. Include the following keys and values in the header:

    Content-Type : multipart/mixed; boundary="batch_22975cad-7f57-410d-be15-6363209367ea"


3. Batch number: Must be unique for the entire request. 

        If you use the same batch ID for multiple requests, there will be no issue. However, if you change it, make sure to cross-check it once.

batch_22975cad-7f57-410d-be15-6363209367ea

4. Content-ID: Must be unique for each step.

5. While starting the batch or change set use -- as prefix.

6. While ending use -- as suffix.

 

7. The 200 OK response indicates the status of the entire batch request. To find the response for each individual request, you need to review the responses within the batch response separately. 

Success Response:                                                                        Failed Response:

Success ResponseFailed Response

8. The below part is considered as one request.


Batch API for Insert

    This example will insert a vendor group and a customer group using the Batch API. 
Request : 

--batch_22975cad-7f57-410d-be15-6363209367ea
Content-Type: multipart/mixed; boundary="changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a"

--changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 1

POST VendorGroups?cross-company=true HTTP/1.1
Content-Type: application/json; type=entry

{
    "dataAreaId": "USMF",
"VendorGroupId": "Test01", "Description": "Test 1" } --changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a Content-Type: application/http Content-Transfer-Encoding: binary
Content-ID: 2 POST VendorGroups?cross-company=true HTTP/1.1 Content-Type: application/json; type=entry { "dataAreaId": "USMF",
"VendorGroupId": "Test02", "Description": "Test 2" } --changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a Content-Type: application/http Content-Transfer-Encoding: binary
Content-ID: 3 POST CustomerGroups?cross-company=true HTTP/1.1 Content-Type: application/json; type=entry { "dataAreaId": "USMF", "CustomerGroupId": "TestC01", "Description": "Test 1" } --changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a-- --batch_22975cad-7f57-410d-be15-6363209367ea--


Request:
       1. Added Vend group record and customer group record.




Response:







Batch API for Update

--batch_22975cad-7f57-410d-be15-6363209367ea
Content-Type: multipart/mixed; boundary="changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a"

--changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 1

PATCH VendorGroups(dataAreaId='USMF',VendorGroupId= 'Test01')?Cross-company=true HTTP/1.1
Content-Type: application/json; type=entry { "Description": "Test 1111" } --changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a Content-Type: application/http Content-Transfer-Encoding: binary Content-ID: 2 PATCH CustomerGroups(dataAreaId='USMF',CustomerGroupId= 'TestC01')?Cross-company=true HTTP/1.1
Content-Type: application/json; type=entry { "Description": "Test C1111" } --changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a-- --batch_22975cad-7f57-410d-be15-6363209367ea--

Response:

Batch API for Delete

--batch_22975cad-7f57-410d-be15-6363209367ea
Content-Type: multipart/mixed; boundary="changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a"

--changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 1

DELETE VendorGroups(dataAreaId='USMF',VendorGroupId= 'Test01')?Cross-company=true HTTP/1.1
Content-Type: application/json; type=entry --changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a Content-Type: application/http Content-Transfer-Encoding: binary Content-ID: 2 DELETE CustomerGroups(dataAreaId='USMF',CustomerGroupId= 'TestC01')?Cross-company=true HTTP/1.1
Content-Type: application/json; type=entry --changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a-- --batch_22975cad-7f57-410d-be15-6363209367ea--
Response:

Batch API for Insert, update and Delete

--batch_22975cad-7f57-410d-be15-6363209367ea
Content-Type: multipart/mixed; boundary="changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a"

--changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 1

POST VendorGroups?cross-company=true HTTP/1.1
Content-Type: application/json; type=entry

{
    "dataAreaId": "USMF",
"VendorGroupId": "Test03", "Description": "Test 3" } --changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a Content-Type: application/http Content-Transfer-Encoding: binary Content-ID: 2 PATCH CustomerGroups(dataAreaId='USMF',CustomerGroupId= 'TestC01')?Cross-company=true HTTP/1.1
Content-Type: application/json; type=entry { "Description": "Test C1111" } --changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a Content-Type: application/http Content-Transfer-Encoding: binary Content-ID: 3 DELETE VendorGroups(dataAreaId='USMF',VendorGroupId= 'Test01')?Cross-company=true HTTP/1.1
Content-Type: application/json; type=entry --changeset_246e6bfe-89a4-4c77-b293-7a433f082e8a-- --batch_22975cad-7f57-410d-be15-6363209367ea--
Response:

     1. Create record response.
 
         
       2. Update and Delete responses.


MS Link.

Keep Daxing!!

Tuesday, December 17, 2024

Dequeue Process in D365FO

API for export (Dequeue) Process in D365FO. By using this we can export the file to other system.

1.Create the Export project and select the Data entity and file type.

2.Click on the three dots, select 'Manage,' and then 'Manage recurring data jobs.'

3.Click on 'New,' give the project a name, provide the application ID, and set 'Enabled' to true.

4.Click on 'Set processing recurrence' and select the batch time. Set 'Is recurring job enabled' to 'Yes.'

5.Copy the generated ID from the ID field, which will be used in the deque URL.

6.Replace the placeholder activity ID in the deque URL with the ID copied from the data project.

{{resource}}/api/connector/dequeue/{activity ID}?company=USMF

7.If you click 'Send,' you will receive a 200 OK message and a download location in the response JSON.

8.If a record is not available, it will return a 204 No Content status.

9.Once the batch job is processed, the message status will be in the 'Processed' state. After triggering the URL, the message status changes to 'Dequeued.'

 

Keep Daxing!!