Decision logs

This page is outdated. Please go to our new documentation under https://docs.fulfillmenttools.com/documentation.

Sometimes you need to understand why an order was routed to a certain facility and not somewhere else. Crucial for this decision is how the DOMS was configured, meaning which fences and ratings are activated. However, for every single routing we log which decisions led to the routing result. The decision log is connected to the routing plan which ID you can find when getting the Process.

Get a routing plan with the given ID

get
Authorizations
Path parameters
routingplanIdstringRequired

ID of the routing plan want to get

Responses
200
Routing plan was found & you were allowed to access it. The result is in the body.
application/json
get
GET / HTTP/1.1
Host: %%HOST%%
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "deliveryPreferences": {
    "collect": [
      {
        "facilityRef": "text",
        "paid": false,
        "supplyingFacilities": [
          "928f3730-bc48-4d85-b83f-3fd86b776178"
        ],
        "supplyingFacilitiesConfigurations": []
      }
    ],
    "shipping": {
      "preferredCarriers": [
        "text"
      ],
      "preferredCarriersWithProduct": [],
      "preselectedFacilities": [
        {
          "facilityRef": "text"
        }
      ],
      "serviceLevel": "DELIVERY",
      "carrierProductCategory": "STANDARD"
    },
    "supplyingFacilities": [
      "928f3730-bc48-4d85-b83f-3fd86b776178"
    ],
    "targetTime": "2020-02-03T09:45:51.525Z"
  },
  "anonymized": false,
  "decisionLogs": [
    {
      "routingRun": 1,
      "url": "/api/routingplans/{routingPlanId}/decisionlogs/{routingRun}"
    }
  ],
  "facilityBlackList": [
    "text"
  ],
  "facilityRef": "Esb20gpHBL94X5NdMp3C",
  "finalizeRun": 5,
  "firstRoutingAttempt": "2020-02-03T08:45:50.525Z",
  "id": "text",
  "orderDate": "2020-02-03T08:45:50.525Z",
  "orderLineItems": [
    {
      "article": {
        "customAttributes": {},
        "imageUrl": "text",
        "tenantArticleId": "4711",
        "title": "Cologne Water",
        "weight": 1,
        "attributes": [
          {
            "category": "descriptive",
            "key": "%%subtitle%%",
            "priority": 100,
            "value": "585er Gold"
          }
        ]
      },
      "customAttributes": {},
      "measurementUnitKey": "liter",
      "quantity": 21,
      "secondaryMeasurementUnitKey": "liter",
      "secondaryQuantity": 21,
      "scannableCodes": [
        "text"
      ],
      "measurementValidation": {
        "shortPickSoftTolerancePercentage": 10,
        "shortPickHardTolerancePercentage": 15,
        "overPickSoftTolerancePercentage": 15,
        "overPickHardTolerancePercentage": 20
      },
      "shopPrice": 1200,
      "tags": [],
      "id": "LGMl2DuvPnfPoSHhYFOm"
    }
  ],
  "orderRef": "LGMl2DuvPnfPoSHhYFOm",
  "parentRoutingPlanRef": "text",
  "pickJobRef": "Esb20gpHBL94X5NdMp3C",
  "priority": 1,
  "reRouteReason": "PROCESSREROUTE",
  "rerouteDescription": {
    "id": "LGMl2DuvPnfPoSHhYFOm",
    "version": 42,
    "reason": "Rerouted because of an issue in the Facility.",
    "reasonLocalized": {
      "de_DE": "Wert",
      "en_US": "Value",
      "ru_RU": "значение"
    },
    "created": "2020-02-03T08:45:51.525Z",
    "lastModified": "2020-02-03T09:45:51.525Z"
  },
  "reRoutedFacilityRef": "1DEYZgmfAcXRVYv6KEka36",
  "reRoutedPickJobRef": "Eghhj20878dhbd989NdMp3C",
  "reRoutedRoutingPlanRef": "Eghhj20878dhbd989NdMp3C",
  "routingRun": 1,
  "runType": "DEFAULT",
  "splitCount": 5,
  "status": "INITIAL",
  "consolidatedStatus": "ROUTED",
  "targetAddress": {
    "companyName": "Speedy Boxales Ltd.",
    "firstName": "Maxine",
    "lastName": "Muller",
    "salutation": "Frau",
    "email": "[email protected]",
    "addressType": "POSTAL_ADDRESS",
    "additionalAddressInfo": "to care of: Mrs. Müller",
    "city": "Langenfeld",
    "country": "DE",
    "province": "NRW",
    "customAttributes": {},
    "houseNumber": "42a",
    "phoneNumbers": [
      {
        "customAttributes": {},
        "label": "text",
        "type": "MOBILE",
        "value": "text"
      }
    ],
    "postalCode": "40764",
    "street": "Hauptstr.",
    "facilityRef": "Esb20gpHBL94X5NdMp3C"
  },
  "targetAddressesByDeliveryEvent": [
    {
      "facilityRef": "text",
      "targetAddress": {
        "companyName": "Speedy Boxales Ltd.",
        "firstName": "Maxine",
        "lastName": "Muller",
        "salutation": "Frau",
        "email": "[email protected]",
        "addressType": "POSTAL_ADDRESS",
        "additionalAddressInfo": "to care of: Mrs. Müller",
        "city": "Langenfeld",
        "country": "DE",
        "province": "NRW",
        "customAttributes": {},
        "houseNumber": "42a",
        "phoneNumbers": [
          {
            "customAttributes": {},
            "label": "text",
            "type": "MOBILE",
            "value": "text"
          }
        ],
        "postalCode": "40764",
        "street": "Hauptstr.",
        "facilityRef": "Esb20gpHBL94X5NdMp3C"
      },
      "deliveryEvent": {
        "deliveryTarget": "SHIP_TO_STORE",
        "deliveryTrigger": "DEFAULT"
      }
    }
  ],
  "processId": "text",
  "targetTimeBaseDate": "2020-02-03T08:45:50.525Z",
  "customServices": [
    {
      "customServiceDefinition": {
        "customServiceRef": "text",
        "additionalInformation": [
          {
            "additionalInformationRef": "text",
            "value": "text"
          }
        ]
      },
      "articleItems": [
        {
          "tenantArticleRef": "text",
          "quantity": 1
        }
      ],
      "customServiceItems": [
        {
          "customServiceDefinition": {
            "customServiceRef": "text",
            "additionalInformation": [
              {
                "additionalInformationRef": "text",
                "value": "text"
              }
            ]
          },
          "articleItems": [
            {
              "tenantArticleRef": "text",
              "quantity": 1
            }
          ],
          "customServiceItems": [
            "[Circular Reference]"
          ]
        }
      ]
    }
  ],
  "provisioningTime": "2020-02-03T08:45:50.525Z",
  "created": "2020-02-03T08:45:51.525Z",
  "lastModified": "2020-02-03T09:45:51.525Z",
  "version": 42
}

As you can see above, the routing plan contains an array with references to the URL where you can get the decision logs for this routing plan. Each decision log contains information on how a facility performed in the routing process. Let's look at an example:

{
    "facilityDecisions": [
        {
            "facility": {
                "name": "Facility A",
                "facilityRef": "e02dab98-95dc-4951-b54c-31ff4f7bb58f"
            },
            "availabilities": [
                {
                    "articleTitle": "Shoulder Bag",
                    "requestedQuantity": 1,
                    "stockInformation": {
                        "stock": 6,
                        "stockConsideringOfflineStock": 6,
                        "reserved": 0,
                        "available": 6
                    },
                    "tenantArticleId": "SHOULDER_BAG",
                    "bundleInformation": [
                        {
                            "customServiceNodeId": "UNBUNDLED",
                            "requestedQuantity": 1
                        }
                    ]
                }
            ],
            "orderFences": [
                {
                    "name": "Internal - BlacklistFence",
                    "decision": "PASSED",
                    "details": []
                },
                {
                    "name": "Preselected facilities",
                    "decision": "PASSED",
                    "details": []
                },
                {
                    "name": "Service type",
                    "decision": "PASSED",
                    "details": []
                },
                {
                    "name": "Ensure minimum picking",
                    "decision": "PASSED",
                    "details": []
                }
            ],
            "orderRatings": [
                {
                    "name": "Geodistance",
                    "maxPenalty": 20,
                    "score": 664133.7479457706,
                    "normalizedScore": 0,
                    "details": []
                },
                {
                    "name": "Stock availability",
                    "maxPenalty": 200,
                    "score": 1,
                    "normalizedScore": 0,
                    "details": []
                }
            ],
            "orderLineItemFences": [],
            "rank": 1,
            "totalPenalty": 0,
            "isBestRated": true,
            "isBestAvailable": true,
            "isBestReassignmentCandidate": null
        },
        {
            "facility": {
                "name": "Facility B",
                "facilityRef": "b3fc73b2-df0e-4705-8034-85b2697ea308"
            },
            "availabilities": [],
            "orderFences": [
                {
                    "name": "Internal - BlacklistFence",
                    "decision": "PASSED",
                    "details": []
                },
                {
                    "name": "Preselected facilities",
                    "decision": "PASSED",
                    "details": []
                },
                {
                    "name": "Service type",
                    "decision": "PASSED",
                    "details": []
                },
                {
                    "name": "Ensure minimum picking",
                    "decision": "FAILED",
                    "details": [
                        {
                            "actualValue": "0",
                            "contextReference": {
                                "reference": "SHOULDER_BAG",
                                "routingDecisionContext": "LISTING"
                            },
                            "expectedValue": "1",
                            "decisionType": "FENCE",
                            "reactiveErrorReason": null
                        }
                    ]
                }
            ],
            "orderRatings": [],
            "orderLineItemFences": [],
            "rank": null,
            "isBestRated": null,
            "isBestAvailable": null,
            "isBestReassignmentCandidate": null
        },
        {
            "facility": {
                "name": "Facility C",
                "facilityRef": "c83350ac-371e-4ad3-b2af-3771f3a4a193"
            },
            "availabilities": [],
            "orderFences": [
                {
                    "name": "Internal - BlacklistFence",
                    "decision": "PASSED",
                    "details": []
                },
                {
                    "name": "Preselected facilities",
                    "decision": "PASSED",
                    "details": []
                },
                {
                    "name": "Service type",
                    "decision": "PASSED",
                    "details": []
                },
                {
                    "name": "Ensure minimum picking",
                    "decision": "FAILED",
                    "details": [
                        {
                            "actualValue": "0",
                            "contextReference": {
                                "reference": "SHOULDER_BAG",
                                "routingDecisionContext": "LISTING"
                            },
                            "expectedValue": "1",
                            "decisionType": "FENCE",
                            "reactiveErrorReason": null
                        }
                    ]
                }
            ],
            "orderRatings": [],
            "orderLineItemFences": [],
            "rank": null,
            "isBestRated": null,
            "isBestAvailable": null,
            "isBestReassignmentCandidate": null
        },
        {
            "facility": {
                "name": "FACILITY D",
                "facilityRef": "e49fc721-01b4-40cb-b4cf-dfa36d3d9770"
            },
            "availabilities": [],
            "orderFences": [
                {
                    "name": "Internal - BlacklistFence",
                    "decision": "PASSED",
                    "details": []
                },
                {
                    "name": "Preselected facilities",
                    "decision": "PASSED",
                    "details": []
                },
                {
                    "name": "Service type",
                    "decision": "PASSED",
                    "details": []
                }
            ],
            "orderRatings": [],
            "orderLineItemFences": [],
            "rank": null,
            "isBestRated": null,
            "isBestAvailable": null,
            "isBestReassignmentCandidate": null
        }
    ],
    "results": {
        "assignedItems": [
            {
                "articleTitle": "Shoulder Bag",
                "quantity": 1,
                "tenantArticleId": "SHOULDER_BAG"
            }
        ],
        "bestRatedFacility": {
            "name": "Facility A",
            "facilityRef": "e02dab98-95dc-4951-b54c-31ff4f7bb58f"
        },
        "bestAvailableFacility": {
            "name": "Facility A",
            "facilityRef": "e02dab98-95dc-4951-b54c-31ff4f7bb58f"
        },
        "bestReassignmentFacility": null,
        "routingPlanStatus": "PLANNED"
    },
    "routingPlanRef": "f5ea2d1c-e613-4533-a919-0b2f6faf0337",
    "statistics": {
        "fenceStatistics": [
            {
                "durationMs": 2.6547759999521077,
                "name": "Internal - BlacklistFence",
                "passedAmount": 233,
                "rejectedAmount": 0,
                "passedPercentage": 100
            },
            {
                "durationMs": 2.729102000128478,
                "name": "Internal - GeoDistanceFence",
                "passedAmount": 233,
                "rejectedAmount": 0,
                "passedPercentage": 100
            },
            {
                "durationMs": 37.36173000000417,
                "name": "Preselected facilities",
                "passedAmount": 233,
                "rejectedAmount": 0,
                "passedPercentage": 100
            },
            {
                "durationMs": 18.877612999873236,
                "name": "Service type",
                "passedAmount": 233,
                "rejectedAmount": 0,
                "passedPercentage": 100
            },
            {
                "durationMs": 883.5412559998222,
                "name": "Ensure minimum picking",
                "passedAmount": 1,
                "rejectedAmount": 232,
                "passedPercentage": 0.4291845493562232
            }
        ],
        "ratingStatistics": [
            {
                "name": "Geodistance",
                "maxPenalty": 20,
                "durationMs": 0.5270390000659972,
                "maxScore": 664133.7479457706,
                "minScore": 664133.7479457706
            },
            {
                "name": "Stock availability",
                "maxPenalty": 200,
                "durationMs": 0.19809900014661252,
                "maxScore": 1,
                "minScore": 1
            }
        ],
        "durationMs": 10.137880000052974
    },
    "version": 1,
    "routingRun": 1,
    "lastModified": "2024-07-04T13:06:15.539Z",
    "id": "8375a514-1152-40b2-8873-7bde493bd738",
    "created": "2024-07-04T13:06:15.539Z"
}

The array facility contains the decisions made for every facility. For facility A you can see that all fences were passed and in the ratings it also was the best rated facility. The other facilities did not have enough stock, in the details you can see that 1 item was expected, while they had no items available. The result quickly summarises which was the best rated facility and which was the best facility available.

In the statistics object you can find statistics for each fence and rating, e.g. how many facility passed or were rejected for a certain fence or which was the maximum or minimum Score a facility received in the routing process.

Last updated

Was this helpful?