Decision logs

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.

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