I've tried to create a booking rule and trying to get the Work Order ID.
It executes fine but it doesn't seem to be retrieving the Work Order ID from my WebAPI query. I tested it using the RESTBuilder so I know its a good query. Does anyone with some more advanced JS knowledge know whats wrong with this code?
function newBookingRule(sbContext) { debugger; var ctx = sbContext; var clientUrl = Xrm.Page.context.getClientUrl(); var ruleResult = { IsValid: false, Message: '', Type: 'error' }; var WorkOrderID; var req = new XMLHttpRequest(); req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/msdyn_resourcerequirements(" + sbContext.newValues.ResourceRequirementId + ")?$select=_msdyn_workorder_value", true); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json;charset=utf-8"); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Prefer", "odata.include-annotations=OData.Community.Display.V1.FormattedValue"); console.log(Xrm.Page.context.getClientUrl() + "/api/data/v8.2/msdyn_resourcerequirements(" + sbContext.newValues.ResourceRequirementId + ")?$select=_msdyn_workorder_value"); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 200) { var result = JSON.parse(this.response); var WorkOrderID = result["_msdyn_workorder_value"]; console.log(WorkOrderID); } } }; req.send(); if (WorkOrderID != null) { ruleResult.IsValid = true; ruleResult.Message = 'Success'; ruleResult.Type = 'success'; } else { ruleResult.IsValid = false; ruleResult.Message = 'Work order needs team leader approval.'; ruleResult.Type = 'error'; //also you can use 'warning' - gives you a choice to proceed or not and 'success' } return ruleResult; }