/// <summary>
        /// Creates a CdsService Client Exception from a httpOperationResult.
        /// </summary>
        /// <param name="httpOperationException"></param>
        public static DataverseOperationException GenerateClientOperationException(HttpOperationException httpOperationException)
        {
            string errorDetailPrefixString           = "@Microsoft.PowerApps.CDS.ErrorDetails.";
            Dictionary <string, string> cdsErrorData = new Dictionary <string, string>();

            JObject contentBody = JObject.Parse(httpOperationException.Response.Content);
            var     ErrorBlock  = contentBody["error"];

            if (ErrorBlock != null)
            {
                string errorMessage = DataverseTraceLogger.GetFirstLineFromString(ErrorBlock["message"]?.ToString()).Trim();
                int    HResult      = ErrorBlock["code"] != null?Convert.ToInt32(ErrorBlock["code"].ToString(), 16) : -1;

                string HelpLink = ErrorBlock["@Microsoft.PowerApps.CDS.HelpLink"]?.ToString();

                foreach (var node in ErrorBlock.ToArray())
                {
                    if (node.Path.Contains(errorDetailPrefixString))
                    {
                        cdsErrorData.Add(node.Value <JProperty>().Name.ToString().Replace(errorDetailPrefixString, string.Empty), node.HasValues ? node.Value <JProperty>().Value.ToString() : string.Empty);
                    }
                }
                return(new DataverseOperationException(errorMessage, HResult, HelpLink, cdsErrorData, httpOperationException));
            }
            else
            {
                return(new DataverseOperationException("Server Error, no error report generated from server", -1, string.Empty, cdsErrorData, httpOperationException));
            }
        }