<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Databricks API JSON Result to Collection in Product Forum</title>
    <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124329#M54301</link>
    <description>&lt;P&gt;Thank you so much sharing this, let me try this&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 12 Jan 2026 10:56:46 GMT</pubDate>
    <dc:creator>naveed_raza</dc:creator>
    <dc:date>2026-01-12T10:56:46Z</dc:date>
    <item>
      <title>Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123843#M54178</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;Does anybody get a chance to work on Databricks API ?&lt;/P&gt;&lt;P&gt;Databricks API result comes in JSON and the JSON format is different compare to other API results as here in Databricks API we are getting columns in different array of object and actual data in different array of object.&lt;/P&gt;&lt;P&gt;What is the best way to convert this into proper data table (collection) with headers ?&lt;/P&gt;&lt;P&gt;Example:&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;{
"schema": {
   "columns": 
      [
        {
          "name": "headername",
          "type": "string"
        },
        {
          "name": "headername2",
          "type": "date"
        }
      ]
  },
 "result": 
   {
     "data_array":[
           [
             "row1header1value",
             "row1header2value"
           ],
           [
             "row2header1value",
             "row2header2value"
           ]
         ]
   }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;#API, #databricks, #json&lt;/P&gt;</description>
      <pubDate>Mon, 08 Dec 2025 11:52:22 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123843#M54178</guid>
      <dc:creator>naveed_raza</dc:creator>
      <dc:date>2025-12-08T11:52:22Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123845#M54179</link>
      <description>&lt;P&gt;i reviewed other options like OLEDB and ODBC,&lt;/P&gt;&lt;P&gt;Looks like using OLEDB we can't connect to Databricks, and using ODBC , we have to do some work around and for that looks like we have install Databricks odbc driver and do setup in bots to make this callable so that will get data in proper table format.&lt;BR /&gt;&lt;BR /&gt;by seeing this , i have to go with Databricks API only and have to found a way to convert that JSON in proper table format&lt;/P&gt;</description>
      <pubDate>Mon, 08 Dec 2025 12:08:25 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123845#M54179</guid>
      <dc:creator>naveed_raza</dc:creator>
      <dc:date>2025-12-08T12:08:25Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123865#M54186</link>
      <description>&lt;P&gt;i thought of storing columns collection and data collection separately and doing loop for data , but thinking looping is not the good idea here.&lt;/P&gt;&lt;P&gt;i am writing VB.Net code to convert this into proper table format, will share the code here once its done&lt;/P&gt;</description>
      <pubDate>Tue, 09 Dec 2025 11:25:16 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123865#M54186</guid>
      <dc:creator>naveed_raza</dc:creator>
      <dc:date>2025-12-09T11:25:16Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123892#M54187</link>
      <description>&lt;P&gt;Hi &lt;a href="https://community.blueprism.com/t5/user/viewprofilepage/user-id/2425"&gt;@naveed_raza&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Have you tried Utility - JSON VBO-&amp;gt;JSON to Collection&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Sayeed Bin Abdullah&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Dec 2025 16:51:55 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123892#M54187</guid>
      <dc:creator>SayeedBinAbdullah</dc:creator>
      <dc:date>2025-12-09T16:51:55Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123895#M54188</link>
      <description>&lt;P&gt;Using JSON Utility , it convert in table, however one column we have nested collection and another column will have data collection.&lt;/P&gt;&lt;P&gt;One Table will have 2 columns , and each column will have nested collection, headers in one column, actual data in another&lt;/P&gt;</description>
      <pubDate>Tue, 09 Dec 2025 19:33:10 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123895#M54188</guid>
      <dc:creator>naveed_raza</dc:creator>
      <dc:date>2025-12-09T19:33:10Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123897#M54189</link>
      <description>&lt;P&gt;&lt;a href="https://community.blueprism.com/t5/user/viewprofilepage/user-id/1799"&gt;@SayeedBinAbdullah&lt;/a&gt;&amp;nbsp;- this is how its showing , if we use JSON utility&amp;nbsp;&lt;/P&gt;&lt;P&gt;schema column will have columns , and result column will have actual data row. i am done with coding, testing , will share the code shortly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="naveed_raza_0-1765309734727.png" style="width: 400px;"&gt;&lt;img src="https://community.blueprism.com/t5/image/serverpage/image-id/41789i18712629C74C9949/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="naveed_raza_0-1765309734727.png" alt="naveed_raza_0-1765309734727.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="naveed_raza_2-1765309850239.png" style="width: 400px;"&gt;&lt;img src="https://community.blueprism.com/t5/image/serverpage/image-id/41791iA765185ECD782143/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="naveed_raza_2-1765309850239.png" alt="naveed_raza_2-1765309850239.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="naveed_raza_3-1765309878077.png" style="width: 400px;"&gt;&lt;img src="https://community.blueprism.com/t5/image/serverpage/image-id/41792i7FBA644E66F09F26/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="naveed_raza_3-1765309878077.png" alt="naveed_raza_3-1765309878077.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Dec 2025 19:51:26 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123897#M54189</guid>
      <dc:creator>naveed_raza</dc:creator>
      <dc:date>2025-12-09T19:51:26Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123901#M54190</link>
      <description>&lt;P&gt;finally i have written the code to convert into table format,&lt;/P&gt;&lt;P&gt;here is sample Databricks API JSON output ( i have removed un wanted columns from JSON and kept only required one)&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;{
    "manifest": {
        "schema": {
            "columns":
            [{
                    "name": "headername",
                    "type_name": "string"
                }, {
                    "name": "headername2",
                    "type_name": "string"
                }
            ]
        }
    },
    "result": {
        "data_array": [
            [
                "row1header1value",
                "row1header2value"
            ],
            [
                "row2header1value",
                "row2header2value"
            ]
        ]
    }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;here is my vb.net code, which i have written as a Global Code and using code staging calling this code by passing entire Databricks API JSON string as an input , and in output fetching Datatable and record count.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; make sure to add all necessary DLLs and namespace&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;Public Function ConvertDatabricksResultToDataTable(jsonStr As String) As DataTable

	Dim dt As New DataTable()

 ' Parse the JSON
	Dim jObj = JObject.Parse(jsonStr)

 ' Get Columns from manifest.schema.columns and adding to data table
	 Dim cols = jObj("manifest")("schema")("columns")

	 For Each col In cols
		 Dim colName As String = col("name").ToString()
		 Dim colType As String = col("type_name").ToString()

		' map Databricks type to VB.NET type
		 Select Case colType.ToUpper()
			Case "LONG", "BIGINT"
				dt.Columns.Add(colName, GetType(Long))
			Case "INTEGER", "INT"
				dt.Columns.Add(colName, GetType(Integer))
			Case "DECIMAL", "DOUBLE", "FLOAT"
				dt.Columns.Add(colName, GetType(Decimal))
			Case "DATE", "TIMESTAMP", "DATETIME"
				dt.Columns.Add(colName, GetType(Date))
			Case "BOOLEAN", "BOOL"
				dt.Columns.Add(colName, GetType(Boolean))
			Case Else
				dt.Columns.Add(colName, GetType(String))
		 End Select
	 Next

 ' Looping each record and addings rows from result.data_array
	Dim rows = jObj("result")("data_array")

	For Each r In rows
		Dim arr As New List(Of Object)

		For i = 0 To dt.Columns.Count - 1
			Dim value = r(i).ToString()

			' Convert data types per column
			Dim colType = dt.Columns(i).DataType

			If colType Is GetType(Long) Then
				arr.Add(Long.Parse(value))
			ElseIf colType Is GetType(Integer) Then
				arr.Add(Integer.Parse(value))
			ElseIf colType Is GetType(Decimal) Then
				arr.Add(Decimal.Parse(value))
			ElseIf colType Is GetType(Date) Then
				Dim d as Date
				If Date.TryParseExact(value,{"yyyy-MM-dd","yyyy-MM-ddTHH:mm:ss","yyyy-MM-ddTHH:mm:ssZ"},System.Globalization.CultureInfo.InvariantCulture,Globalization.DateTimeStyles.None,d) then
					arr.Add(d)
				else
					arr.Add(DBNull.Value)
				End if
			ElseIf colType Is GetType(Boolean) Then
				Select Case value.ToString().Trim().ToLower()
					Case "true", "1", "yes"
						arr.Add(True)
					Case "false", "0", "no"
						arr.Add(False)
					Case Else
						arr.Add(DBNull.Value)
				End Select
			Else
				arr.Add(value) ' fallback string
			End If
		Next

		dt.Rows.Add(arr.ToArray())
	Next

	Return dt

End Function&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;Please do let us know, if this solution is best to go or can we do it in any other better way. Hope this will help for others also.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Mohammad Naveed&lt;/P&gt;</description>
      <pubDate>Tue, 09 Dec 2025 20:09:25 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123901#M54190</guid>
      <dc:creator>naveed_raza</dc:creator>
      <dc:date>2025-12-09T20:09:25Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123911#M54191</link>
      <description>&lt;P&gt;Hi Naveed,&lt;/P&gt;&lt;P&gt;Can you please list down all the dll's required?&lt;/P&gt;</description>
      <pubDate>Wed, 10 Dec 2025 01:00:51 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123911#M54191</guid>
      <dc:creator>SayeedBinAbdullah</dc:creator>
      <dc:date>2025-12-10T01:00:51Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123918#M54193</link>
      <description>&lt;P&gt;Hi Sayeed,&lt;/P&gt;&lt;P&gt;for me its hard to tell , as here i have created a reusable object (RPA Utility) which has all the actions which is not there in regular VBOs and i have added all possible DLLs to my object by default.&lt;/P&gt;&lt;P&gt;mostly NewtonJSON and other basic DLLs, here is my list of DLLs which i added.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="naveed_raza_0-1765363349974.png" style="width: 400px;"&gt;&lt;img src="https://community.blueprism.com/t5/image/serverpage/image-id/41795iF6F42FC1C66CCAC2/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="naveed_raza_0-1765363349974.png" alt="naveed_raza_0-1765363349974.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 10 Dec 2025 10:42:46 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/123918#M54193</guid>
      <dc:creator>naveed_raza</dc:creator>
      <dc:date>2025-12-10T10:42:46Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124326#M54299</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;If it helps, I created a reusable object that runs a query on Databricks (there are two actions, one for a personal token, the other for a token generated by Service Principal). Here is the code:&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&amp;lt;process name="VBO - Databricks" version="1.0" bpversion="7.1.0.62280" narrative="" byrefcollection="true" type="object" runmode="Exclusive" preferredid="a89c02ea-a295-4848-b504-a2afe92a5e7e"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;appdef&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;element name="Application Root"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;id&amp;gt;a1fcd9f9-3d26-4f70-bcc0-8406d53a2f05&amp;lt;/id&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;type&amp;gt;Application&amp;lt;/type&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;basetype&amp;gt;Application&amp;lt;/basetype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;unknown&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;diagnose&amp;gt;False&amp;lt;/diagnose&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/element&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/appdef&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;0&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;0&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;preconditions /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;endpoint narrative="" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="7d7495b5-ea2b-424a-aae0-3c029b92f2a9" type="CleanUp" published="True"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Clean Up&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;0&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;0&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="9cb7bf9b-8ba4-45f2-b334-fc34ba39707a" type="Normal" published="False"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Authentication&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;0&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;21&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="8e5d6e27-2067-4108-a3de-c6d32385476c" type="Normal" published="True"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Execute Query&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;-111&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;243&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="fa900c6f-ef74-4b80-a2e5-f70e341de476" type="Normal" published="True"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Execute Query - Using Token&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;-111&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;96&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ea40e4ef-0578-444a-93d6-cf433c09b609" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="-105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;1fba778b-777b-4bb2-8996-1fc62fc8fcd2&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="1fba778b-777b-4bb2-8996-1fc62fc8fcd2" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="f34ba72c-ee5c-4e66-9417-d7196dd2134a" name="Stage1" type="ProcessInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;references&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Data.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Xml.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Drawing.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.Http.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;EPPlus.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;ClosedXML.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;netstandard.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Core.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.Http.Json.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;Newtonsoft.Json.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Windows.Forms.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.Http.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/references&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;imports&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Drawing&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Data&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Net.Http&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Text&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;ClosedXML.Excel&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;OfficeOpenXml&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Collections.Generic&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Linq&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.IO&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;Newtonsoft.Json&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;Newtonsoft.Json.Linq&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Windows.Forms&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Net.Http.Headers&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/imports&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;language&amp;gt;csharp&amp;lt;/language&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;globalcode&amp;gt;&amp;lt;![CDATA[]]&amp;gt;&amp;lt;/globalcode&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[public class DataTableToExcel&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public void ExportToExcel(DataTable dataTable, string filePath, string sheet)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Configura EPPlus per usare la licenza non commerciale&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (var package = new ExcelPackage())&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var worksheet = package.Workbook.Worksheets.Add(sheet);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Aggiungi le intestazioni delle colonne&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int col = 0; col &amp;lt; dataTable.Columns.Count; col++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; worksheet.Cells[1, col + 1].Value = dataTable.Columns[col].ColumnName;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Aggiungi i dati delle righe&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; worksheet.Cells["A2"].LoadFromDataTable(dataTable, false);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Salva il file Excel&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var fileInfo = new FileInfo(filePath);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; package.SaveAs(fileInfo);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public class Column&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public string name { get; set; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public class Row&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;string&amp;gt; values { get; set; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public class JsonResponse&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;Column&amp;gt; columns { get; set; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;Row&amp;gt; rows { get; set; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public static DataTable GenerateDataTableFromJson(string json)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject jsonObject = JObject.Parse(json);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JArray columns = (JArray)jsonObject["manifest"]["schema"]["columns"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JArray dataArray = (JArray)jsonObject["result"]["data_array"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DataTable dataTable = new DataTable();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var column in columns)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataTable.Columns.Add(column["name"].ToString(), typeof(string));&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var row in dataArray)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DataRow dataRow = dataTable.NewRow();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; columns.Count; i++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataRow[i] = row[i].ToString();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataTable.Rows.Add(dataRow);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return dataTable;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public static string EscapeForJson(string s)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (s == null) return "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return s.Replace("\\", "\\\\").Replace("\"", "\\\"");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ce38e7ce-fcf1-4e63-bd70-44a2babf6a61" name="Clean Up" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6638295e-5a03-4485-84f4-0be42967f3be" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="-105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;9e0c8841-53a6-4607-ad35-b1d9f8b571d7&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="9e0c8841-53a6-4607-ad35-b1d9f8b571d7" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="a7ffe0ff-6bed-410a-8542-627fac718426" name="Execute Query" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7f49a903-a4c5-4669-b7e3-c8b900154c68" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-135" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="baseUrl" stage="baseUrl" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="accessToken" stage="accessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" stage="warehouseId" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" stage="sqlQuery" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="flag" name="CreateExcel" stage="CreateExcel" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="FilepathXLSX" stage="FilepathXLSX" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" stage="SheetName" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d0350ab4-99aa-4763-8c78-887721f4a3a5&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6a16195e-41c8-4e52-8625-061243db0811" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="345" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="Error Message" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="Report" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="882d594d-6359-4c08-9c68-adb46b927cc7" name="" type="Note"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;Clean Up Page&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is an optional page where you might choose to perform some finalisation (or "cleanup") tasks as your business object is closed down.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The cleanup action will be called automatically immediately after closing your business object at the end of a business process.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;You will not be able to call this action from a business process, nor will it be called at any other time than before the disposal of the business object.&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-180" y="60" w="180" h="230" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="211de8a5-16c7-48bf-bff2-3e8859a8d124" name="" type="Note"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;Initialise Page&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is an optional page where you might choose to perform some initialisation tasks after your business object is loaded.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The initialise action will be called automatically immediately after loading your business object.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;You will not be able to call this action from a business process, nor will it be called at any other time than after the creation of the object.&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-180" y="60" w="180" h="230" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d0350ab4-99aa-4763-8c78-887721f4a3a5" name="Call API" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="baseUrl" expr="[baseUrl]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="accessToken" expr="[accessToken]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" expr="[warehouseId]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" expr="[sqlQuery]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="JSONOutput" stage="JSONOutput" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;5555a2e6-2d06-4da2-b986-60516c04f8c4&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;JSONOutput = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;HttpClient client = new HttpClient();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, baseUrl)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Content = new StringContent(&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $"{{\"statement\":\"{sqlQuery}\", \"warehouse_id\":\"{warehouseId}\", \"timeout_seconds\":600}}",&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Encoding.UTF8,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "application/json"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/DIV&gt;&lt;DIV&gt;};&lt;/DIV&gt;&lt;DIV&gt;request.Headers.Add("Authorization", $"Bearer {accessToken}");&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Invia la richiesta&lt;/DIV&gt;&lt;DIV&gt;HttpResponseMessage response = client.SendAsync(request).Result;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;if (response.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;string responseBody = response.Content.ReadAsStringAsync().Result;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = true;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;JSONOutput = responseBody;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;else&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;string responseBody = response.Content.ReadAsStringAsync().Result;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = responseBody;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8e8901e4-0469-467c-ba32-ef8872e06bd4" name="baseUrl" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;&lt;A href="https://westeurope.azuredatabricks.net/api/2.0/sql/statements" target="_blank"&gt;https://westeurope.azuredatabricks.net/api/2.0/sql/statements&lt;/A&gt;&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="dccd3340-c59f-4c07-9cf0-6b2158a0b15c" name="accessToken" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="a37d696c-f22a-42d2-926e-972ba737ca40" name="warehouseId" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="bd29c410-6809-46ee-ba90-4913e5c23721" name="sqlQuery" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="23e4c765-3cad-483e-b764-22c0b9fa4986" name="Success" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="c9bef68e-b917-4f91-a8f3-850be2935e93" name="Error Message" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="a4f71191-c150-4bc5-a71c-1407b88ea104" name="JSONOutput" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="23680203-a356-4f4a-9aa5-11ec8d787164" name="Report" type="Collection"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="405" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;collection&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="2b95b981-f6a3-46d2-ac2f-c3bf37e109aa" name="Convert JSON" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="45" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="json" expr="[JSONOutput]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="dataTable" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;081c9bf2-4828-47ba-9f88-ee45a75f8735&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;dataTable = null;&lt;/DIV&gt;&lt;DIV&gt;dataTable = new DataTable();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;dataTable = GenerateDataTableFromJson(json);&lt;/DIV&gt;&lt;DIV&gt;Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6f826340-a4b0-4a90-a21b-b7e83d2c3b64" name="Inputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="-45" w="150" h="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="7FB2E5" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="fc658c67-57fc-4741-81e3-420dee311aad" name="Local" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="165" w="150" h="150" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FFFF00" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="69e8baa0-51a9-4cb0-8102-628d715d54fd" name="Outputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="330" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FF00FF" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="3d0bd6c8-bfea-4f19-b1f0-17af6082fd95" name="FilepathXLSX" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6fce1fed-aed7-4be8-98a7-47cd4d387274" name="CreateExcel" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="4a1251fb-c3ba-49fa-82e5-4364fec79357" name="Create Excel" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="225" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="collection" name="DatatableResult" expr="[Report]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="Filepath" expr="[FilepathXLSX]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" expr="[SheetName]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;943d0920-2cf6-4da3-9b48-9a5af41f847f&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;DataTableToExcel exporter = new DataTableToExcel();&lt;/DIV&gt;&lt;DIV&gt;exporter.ExportToExcel(DatatableResult, Filepath, SheetName);&lt;/DIV&gt;&lt;DIV&gt;Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="3f15a13e-c6d9-4309-b03c-b84634339a44" name="[CreateExcel] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="165" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[CreateExcel] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;4a1251fb-c3ba-49fa-82e5-4364fec79357&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;aff1fb43-83dd-411b-895e-121a6e9aaa67&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="aff1fb43-83dd-411b-895e-121a6e9aaa67" name="Anchor1" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="165" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;de02cbf6-bc09-4036-9c44-61fe6f59330b&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7d038089-d0d0-47d6-9567-ff7fbd4e2ad2" name="Anchor2" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="345" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;6a16195e-41c8-4e52-8625-061243db0811&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8d301f0a-94c3-4852-a216-f252b27166c3" name="SheetName" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="120" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5555a2e6-2d06-4da2-b986-60516c04f8c4" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;2b95b981-f6a3-46d2-ac2f-c3bf37e109aa&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;25ddca11-d42c-4ac1-bfeb-590504da586b&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="081c9bf2-4828-47ba-9f88-ee45a75f8735" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;3f15a13e-c6d9-4309-b03c-b84634339a44&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;d9b92af7-75ca-4170-9a32-2981d266cc24&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="25ddca11-d42c-4ac1-bfeb-590504da586b" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;9708dd42-1db3-4ae3-809d-1513db8538f9&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in API Call: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d9b92af7-75ca-4170-9a32-2981d266cc24" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;5dc509e2-1dea-4ae3-ae96-918a7a64f060&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in JSON Conversion: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="943d0920-2cf6-4da3-9b48-9a5af41f847f" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="285" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;6a16195e-41c8-4e52-8625-061243db0811&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;fc1ca4c2-0045-4d9d-ad88-61abf950a75c&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="fc1ca4c2-0045-4d9d-ad88-61abf950a75c" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="285" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;de02cbf6-bc09-4036-9c44-61fe6f59330b&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in Create Excel: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="9708dd42-1db3-4ae3-809d-1513db8538f9" name="Anchor3" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="-15" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;5dc509e2-1dea-4ae3-ae96-918a7a64f060&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5dc509e2-1dea-4ae3-ae96-918a7a64f060" name="Anchor4" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="105" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;aff1fb43-83dd-411b-895e-121a6e9aaa67&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="de02cbf6-bc09-4036-9c44-61fe6f59330b" name="Anchor5" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="285" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;7d038089-d0d0-47d6-9567-ff7fbd4e2ad2&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8848462a-85fd-4a3a-bc39-15398ec8475f" name="Authentication" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7f4050b6-af0c-44aa-afa5-b7d0fd9f4f1c" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-135" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;8c424f0b-43e3-49bd-9deb-97c9e5ded003&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="aace0190-ea26-4a19-9ebe-9048a002664e" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="AccessToken" stage="AccessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="baa4ea76-41aa-46e6-8a66-4920d8f05d99" name="Inputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="-45" w="150" h="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="7FB2E5" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="0f8f7e0c-8f73-402c-9601-9443b4f6827e" name="Local" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="165" w="150" h="150" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FFFF00" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7066e6a3-cb35-4561-bc57-fb6785819432" name="Outputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="330" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FF00FF" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="79280ca6-6232-452b-b7b2-8810f0ff1547" name="TenantID" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-15" w="120" h="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5e4e3fc9-859a-4eeb-b1bf-3cfedc42bb8a" name="ClientId" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="30" w="120" h="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="3b5f25be-6542-4ee9-aae5-7e8174743bb3" name="ClientSecret" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="75" w="120" h="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;password&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalueenc&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/initialvalueenc&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8c424f0b-43e3-49bd-9deb-97c9e5ded003" name="Get Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="TenantID" expr="[TenantID]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="ClientId" expr="[ClientId]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="password" name="ClientSecret" expr="[ClientSecret]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="AccessToken" stage="AccessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;aace0190-ea26-4a19-9ebe-9048a002664e&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[&lt;/DIV&gt;&lt;DIV&gt;string tokenUrl = $"&lt;A href="https://login.microsoftonline.com/{TenantID}/oauth2/v2.0/token" target="_blank"&gt;https://login.microsoftonline.com/{TenantID}/oauth2/v2.0/token&lt;/A&gt;";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (var httpClient = new HttpClient())&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var form = new FormUrlEncodedContent(new[]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("client_id", ClientId),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("client_secret", ClientSecret),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("grant_type", "client_credentials"),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Scope corretto per Azure Databricks (AAD resource + /.default)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("scope", "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default")&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var resp = httpClient.PostAsync(tokenUrl, form).GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string body = resp.Content.ReadAsStringAsync().GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!resp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new Exception($"Token request failed ({resp.StatusCode}): {body}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var json = JObject.Parse(body);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string accessToken = json["access_token"]?.ToString();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(accessToken))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new Exception("access_token missing in token response");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AccessToken = accessToken;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="46d709ef-5c75-4394-83b0-78471c8c463a" name="AccessToken" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="4e76287c-26c7-45de-a165-1f3257d8760f" name="Execute Query - Using Token" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="2d3a1314-19e9-4398-9259-4ec602b70f7e" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-135" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="databricksUrl" stage="databricksUrl" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" stage="warehouseId" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" stage="sqlQuery" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="flag" name="CreateExcel" stage="CreateExcel" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="FilepathXLSX" stage="FilepathXLSX" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" stage="SheetName" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;33ac5062-313a-408b-a962-0eb8eab9b6a4&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d1c909a0-c003-41a6-8d16-835dcb19fd7c" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="405" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="Error Message" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="Report" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="753bbed9-7194-48db-86f7-2047f2dd218f" name="accessToken" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="74a6a9eb-ee35-4699-84ad-329239d1058f" name="warehouseId" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5e43ad48-cc52-41bb-89c4-6596788a19dd" name="sqlQuery" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d4f9c706-65f0-4c79-8779-a00d9d9529a3" name="Success" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="536e4740-8f66-4f28-b651-be23fdef263f" name="Error Message" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="4b5e9e32-cc4c-468a-b1d1-b96bdfab941f" name="JSONOutput" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="23766df5-bdba-449f-8d36-858278c8d97e" name="Report" type="Collection"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="405" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;collection&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="767269e4-2267-4297-a3c9-d97409e501de" name="Convert JSON Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="json" expr="[JSONOutput]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="dataTable" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d88bcda0-42b4-4302-ba8c-e642949c5a69&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;dataTable = null;&lt;/DIV&gt;&lt;DIV&gt;dataTable = new DataTable();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;dataTable = GenerateDataTableFromJson(json);&lt;/DIV&gt;&lt;DIV&gt;Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="33c5e16f-fa4e-4750-9e61-14e9f79eb243" name="Inputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="-45" w="150" h="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="7FB2E5" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ebf2fea7-8b77-44c8-a000-9038213e3e34" name="Local" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="165" w="150" h="150" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FFFF00" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="deb7307c-8680-4762-9dc1-5b7d5600729f" name="Outputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="330" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FF00FF" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5529a3ca-016c-44d8-94b1-56377f9b40fd" name="FilepathXLSX" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5add693a-51ef-4f02-a9c8-633e927ee473" name="CreateExcel" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="61a50860-9a73-4cbd-8307-274af6b1cff2" name="Create Excel Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="285" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="collection" name="DatatableResult" expr="[Report]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="Filepath" expr="[FilepathXLSX]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" expr="[SheetName]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d0c941a8-7e1a-4167-b165-ae1bae998acf&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;DataTableToExcel exporter = new DataTableToExcel();&lt;/DIV&gt;&lt;DIV&gt;exporter.ExportToExcel(DatatableResult, Filepath, SheetName);&lt;/DIV&gt;&lt;DIV&gt;Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="e7d0172b-74d8-4261-a310-976261f28845" name="[CreateExcel] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="225" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[CreateExcel] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;61a50860-9a73-4cbd-8307-274af6b1cff2&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;e5242eaf-7df1-445a-be16-359ff2906db9&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="e5242eaf-7df1-445a-be16-359ff2906db9" name="Anchor1" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="225" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;6f7ea0aa-ca84-4bc5-b2cb-b00a3f5a11c1&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="c5eff911-30f7-4e00-bf78-bd2290970310" name="Anchor2" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="405" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d1c909a0-c003-41a6-8d16-835dcb19fd7c&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d2f2e471-9a3f-4b66-b87a-c3d790bfbcb0" name="SheetName" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ad69bfb0-e52b-47f0-a648-5f1e094fcf37" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="45" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;767269e4-2267-4297-a3c9-d97409e501de&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;c0a9ca49-ff4e-441d-9650-da100bcf6bad&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d88bcda0-42b4-4302-ba8c-e642949c5a69" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="165" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;e7d0172b-74d8-4261-a310-976261f28845&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;04d9f303-e399-4bb3-93fa-3ce536aa55a1&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="c0a9ca49-ff4e-441d-9650-da100bcf6bad" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="45" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;0f46bfec-9fc3-4b45-9073-b2a2feebbbe3&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in API Call: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="04d9f303-e399-4bb3-93fa-3ce536aa55a1" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="165" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;93dfc5a7-0afe-4188-9a40-fb7de4b3b993&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in JSON Conversion: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d0c941a8-7e1a-4167-b165-ae1bae998acf" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="345" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;d1c909a0-c003-41a6-8d16-835dcb19fd7c&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;33d8e73b-b167-41a9-8606-25057a305ddc&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="33d8e73b-b167-41a9-8606-25057a305ddc" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="345" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;6f7ea0aa-ca84-4bc5-b2cb-b00a3f5a11c1&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in Create Excel: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="0f46bfec-9fc3-4b45-9073-b2a2feebbbe3" name="Anchor3" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="45" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;93dfc5a7-0afe-4188-9a40-fb7de4b3b993&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="93dfc5a7-0afe-4188-9a40-fb7de4b3b993" name="Anchor4" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="165" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;e5242eaf-7df1-445a-be16-359ff2906db9&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6f7ea0aa-ca84-4bc5-b2cb-b00a3f5a11c1" name="Anchor5" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="345" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;c5eff911-30f7-4e00-bf78-bd2290970310&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="10d34c6c-df8b-4d15-9a20-6ae62ee2bb83" name="Call API Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="databricksUrl" expr="[databricksUrl]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="accessToken" expr="[accessToken]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" expr="[warehouseId]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" expr="[sqlQuery]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="JSONOutput" stage="JSONOutput" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;ad69bfb0-e52b-47f0-a648-5f1e094fcf37&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;JSONOutput = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;using (var httpClient = new HttpClient())&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;var payload = new&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;statement = sqlQuery,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;warehouse_id = warehouseId,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;wait_timeout = "30s"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;};&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;var content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;var resp = httpClient.PostAsync(databricksUrl, content).GetAwaiter().GetResult();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;string body = resp.Content.ReadAsStringAsync().GetAwaiter().GetResult();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (!resp.IsSuccessStatusCode)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;throw new Exception($"Query failed ({resp.StatusCode}): {body}");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;JSONOutput = body;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = true;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.ToString();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="cb0efb85-278a-4cf1-a80d-b99a7b2439f8" name="databricksUrl" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;&lt;A href="https://adb-&amp;amp;lt;workspace-id&amp;amp;gt;.&amp;amp;lt;shard&amp;amp;gt;.azuredatabricks.net/api/2.0/sql/statements" target="_blank"&gt;https://adb-&amp;amp;lt;workspace-id&amp;amp;gt;.&amp;amp;lt;shard&amp;amp;gt;.azuredatabricks.net/api/2.0/sql/statements&lt;/A&gt;&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="33ac5062-313a-408b-a962-0eb8eab9b6a4" name="Authentication" type="SubSheet"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="AccessToken" friendlyname="AccessToken" stage="accessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;10d34c6c-df8b-4d15-9a20-6ae62ee2bb83&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;processid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/processid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;/process&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Simone&lt;/DIV&gt;</description>
      <pubDate>Mon, 12 Jan 2026 09:16:19 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124326#M54299</guid>
      <dc:creator>simone.tomaCNH</dc:creator>
      <dc:date>2026-01-12T09:16:19Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124329#M54301</link>
      <description>&lt;P&gt;Thank you so much sharing this, let me try this&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 12 Jan 2026 10:56:46 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124329#M54301</guid>
      <dc:creator>naveed_raza</dc:creator>
      <dc:date>2026-01-12T10:56:46Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124342#M54308</link>
      <description>&lt;P&gt;looks like we have to get , EPPlus.dll and ClosedXML.dll dll files&lt;/P&gt;</description>
      <pubDate>Mon, 12 Jan 2026 13:29:56 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124342#M54308</guid>
      <dc:creator>naveed_raza</dc:creator>
      <dc:date>2026-01-12T13:29:56Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124343#M54309</link>
      <description>&lt;P&gt;They can be easily found in Visual Studio with Manage NuGet Packages. However, they are DLLs because the object generates an Excel file if the CreateExcel flag is set to true. Below is the version without those DLLs.&lt;/P&gt;&lt;DIV&gt;&amp;lt;process name="VBO - Databricks2" version="1.0" bpversion="7.1.0.62280" narrative="" byrefcollection="true" type="object" runmode="Exclusive" preferredid="965dd452-4483-4356-8e90-97dfb685bed9"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;appdef&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;element name="Application Root"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;id&amp;gt;a1fcd9f9-3d26-4f70-bcc0-8406d53a2f05&amp;lt;/id&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;type&amp;gt;Application&amp;lt;/type&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;basetype&amp;gt;Application&amp;lt;/basetype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;unknown&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;diagnose&amp;gt;False&amp;lt;/diagnose&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/element&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/appdef&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;0&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;0&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;preconditions /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;endpoint narrative="" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="7d7495b5-ea2b-424a-aae0-3c029b92f2a9" type="CleanUp" published="True"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Clean Up&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;0&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;0&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="9cb7bf9b-8ba4-45f2-b334-fc34ba39707a" type="Normal" published="False"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Authentication&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;0&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;-21&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="8e5d6e27-2067-4108-a3de-c6d32385476c" type="Normal" published="True"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Execute Query&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;-111&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;-9&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="fa900c6f-ef74-4b80-a2e5-f70e341de476" type="Normal" published="True"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Execute Query - Using Token&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;-111&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;264&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ea40e4ef-0578-444a-93d6-cf433c09b609" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="-105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;1fba778b-777b-4bb2-8996-1fc62fc8fcd2&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="1fba778b-777b-4bb2-8996-1fc62fc8fcd2" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="f34ba72c-ee5c-4e66-9417-d7196dd2134a" name="Stage1" type="ProcessInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;references&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Data.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Xml.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Drawing.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.Http.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;netstandard.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Core.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.Http.Json.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;Newtonsoft.Json.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Windows.Forms.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.Http.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/references&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;imports&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Drawing&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Data&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Net.Http&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Text&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Collections.Generic&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Linq&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.IO&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;Newtonsoft.Json&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;Newtonsoft.Json.Linq&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Windows.Forms&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Net.Http.Headers&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/imports&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;language&amp;gt;csharp&amp;lt;/language&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;globalcode&amp;gt;&amp;lt;![CDATA[]]&amp;gt;&amp;lt;/globalcode&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public class Column&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public string name { get; set; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public class Row&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;string&amp;gt; values { get; set; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public class JsonResponse&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;Column&amp;gt; columns { get; set; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;Row&amp;gt; rows { get; set; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public static DataTable GenerateDataTableFromJson(string json)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject jsonObject = JObject.Parse(json);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JArray columns = (JArray)jsonObject["manifest"]["schema"]["columns"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JArray dataArray = (JArray)jsonObject["result"]["data_array"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DataTable dataTable = new DataTable();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var column in columns)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataTable.Columns.Add(column["name"].ToString(), typeof(string));&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var row in dataArray)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DataRow dataRow = dataTable.NewRow();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; columns.Count; i++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataRow[i] = row[i].ToString();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataTable.Rows.Add(dataRow);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return dataTable;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public static string EscapeForJson(string s)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (s == null) return "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return s.Replace("\\", "\\\\").Replace("\"", "\\\"");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ce38e7ce-fcf1-4e63-bd70-44a2babf6a61" name="Clean Up" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6638295e-5a03-4485-84f4-0be42967f3be" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="-105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;9e0c8841-53a6-4607-ad35-b1d9f8b571d7&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="9e0c8841-53a6-4607-ad35-b1d9f8b571d7" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="a7ffe0ff-6bed-410a-8542-627fac718426" name="Execute Query" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7f49a903-a4c5-4669-b7e3-c8b900154c68" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-135" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="baseUrl" stage="baseUrl" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="accessToken" stage="accessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" stage="warehouseId" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" stage="sqlQuery" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d0350ab4-99aa-4763-8c78-887721f4a3a5&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6a16195e-41c8-4e52-8625-061243db0811" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="165" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="Error Message" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="Report" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="882d594d-6359-4c08-9c68-adb46b927cc7" name="" type="Note"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;Clean Up Page&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is an optional page where you might choose to perform some finalisation (or "cleanup") tasks as your business object is closed down.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The cleanup action will be called automatically immediately after closing your business object at the end of a business process.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;You will not be able to call this action from a business process, nor will it be called at any other time than before the disposal of the business object.&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-180" y="60" w="180" h="230" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="211de8a5-16c7-48bf-bff2-3e8859a8d124" name="" type="Note"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;Initialise Page&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is an optional page where you might choose to perform some initialisation tasks after your business object is loaded.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The initialise action will be called automatically immediately after loading your business object.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;You will not be able to call this action from a business process, nor will it be called at any other time than after the creation of the object.&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-180" y="60" w="180" h="230" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d0350ab4-99aa-4763-8c78-887721f4a3a5" name="Call API" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="baseUrl" expr="[baseUrl]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="accessToken" expr="[accessToken]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" expr="[warehouseId]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" expr="[sqlQuery]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="JSONOutput" stage="JSONOutput" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;5555a2e6-2d06-4da2-b986-60516c04f8c4&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;JSONOutput = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;HttpClient client = new HttpClient();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, baseUrl)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Content = new StringContent(&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $"{{\"statement\":\"{sqlQuery}\", \"warehouse_id\":\"{warehouseId}\", \"timeout_seconds\":600}}",&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Encoding.UTF8,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "application/json"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/DIV&gt;&lt;DIV&gt;};&lt;/DIV&gt;&lt;DIV&gt;request.Headers.Add("Authorization", $"Bearer {accessToken}");&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Invia la richiesta&lt;/DIV&gt;&lt;DIV&gt;HttpResponseMessage response = client.SendAsync(request).Result;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;if (response.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;string responseBody = response.Content.ReadAsStringAsync().Result;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = true;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;JSONOutput = responseBody;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;else&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;string responseBody = response.Content.ReadAsStringAsync().Result;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = responseBody;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8e8901e4-0469-467c-ba32-ef8872e06bd4" name="baseUrl" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;&lt;A href="https://westeurope.azuredatabricks.net/api/2.0/sql/statements" target="_blank"&gt;https://westeurope.azuredatabricks.net/api/2.0/sql/statements&lt;/A&gt;&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="dccd3340-c59f-4c07-9cf0-6b2158a0b15c" name="accessToken" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="a37d696c-f22a-42d2-926e-972ba737ca40" name="warehouseId" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="bd29c410-6809-46ee-ba90-4913e5c23721" name="sqlQuery" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="23e4c765-3cad-483e-b764-22c0b9fa4986" name="Success" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="270" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="c9bef68e-b917-4f91-a8f3-850be2935e93" name="Error Message" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="270" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="a4f71191-c150-4bc5-a71c-1407b88ea104" name="JSONOutput" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="23680203-a356-4f4a-9aa5-11ec8d787164" name="Report" type="Collection"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="315" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;collection&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="2b95b981-f6a3-46d2-ac2f-c3bf37e109aa" name="Convert JSON" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="45" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="json" expr="[JSONOutput]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="dataTable" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;081c9bf2-4828-47ba-9f88-ee45a75f8735&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;dataTable = null;&lt;/DIV&gt;&lt;DIV&gt;dataTable = new DataTable();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;dataTable = GenerateDataTableFromJson(json);&lt;/DIV&gt;&lt;DIV&gt;Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6f826340-a4b0-4a90-a21b-b7e83d2c3b64" name="Inputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="-45" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="7FB2E5" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="fc658c67-57fc-4741-81e3-420dee311aad" name="Local" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="75" w="150" h="150" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FFFF00" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="69e8baa0-51a9-4cb0-8102-628d715d54fd" name="Outputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="240" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FF00FF" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="aff1fb43-83dd-411b-895e-121a6e9aaa67" name="Anchor1" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="165" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;6a16195e-41c8-4e52-8625-061243db0811&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5555a2e6-2d06-4da2-b986-60516c04f8c4" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;2b95b981-f6a3-46d2-ac2f-c3bf37e109aa&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;25ddca11-d42c-4ac1-bfeb-590504da586b&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="081c9bf2-4828-47ba-9f88-ee45a75f8735" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;6a16195e-41c8-4e52-8625-061243db0811&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;d9b92af7-75ca-4170-9a32-2981d266cc24&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="25ddca11-d42c-4ac1-bfeb-590504da586b" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;9708dd42-1db3-4ae3-809d-1513db8538f9&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in API Call: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d9b92af7-75ca-4170-9a32-2981d266cc24" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;5dc509e2-1dea-4ae3-ae96-918a7a64f060&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in JSON Conversion: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="9708dd42-1db3-4ae3-809d-1513db8538f9" name="Anchor3" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="-15" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;5dc509e2-1dea-4ae3-ae96-918a7a64f060&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5dc509e2-1dea-4ae3-ae96-918a7a64f060" name="Anchor4" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="105" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;aff1fb43-83dd-411b-895e-121a6e9aaa67&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8848462a-85fd-4a3a-bc39-15398ec8475f" name="Authentication" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7f4050b6-af0c-44aa-afa5-b7d0fd9f4f1c" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-135" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;8c424f0b-43e3-49bd-9deb-97c9e5ded003&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="aace0190-ea26-4a19-9ebe-9048a002664e" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="AccessToken" stage="AccessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="baa4ea76-41aa-46e6-8a66-4920d8f05d99" name="Inputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="-45" w="150" h="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="7FB2E5" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="0f8f7e0c-8f73-402c-9601-9443b4f6827e" name="Local" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="165" w="150" h="150" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FFFF00" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7066e6a3-cb35-4561-bc57-fb6785819432" name="Outputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="330" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FF00FF" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="79280ca6-6232-452b-b7b2-8810f0ff1547" name="TenantID" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-15" w="120" h="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5e4e3fc9-859a-4eeb-b1bf-3cfedc42bb8a" name="ClientId" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="30" w="120" h="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="3b5f25be-6542-4ee9-aae5-7e8174743bb3" name="ClientSecret" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="75" w="120" h="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;password&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalueenc&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/initialvalueenc&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8c424f0b-43e3-49bd-9deb-97c9e5ded003" name="Get Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="TenantID" expr="[TenantID]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="ClientId" expr="[ClientId]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="password" name="ClientSecret" expr="[ClientSecret]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="AccessToken" stage="AccessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;aace0190-ea26-4a19-9ebe-9048a002664e&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[&lt;/DIV&gt;&lt;DIV&gt;string tokenUrl = $"&lt;A href="https://login.microsoftonline.com/{TenantID}/oauth2/v2.0/token" target="_blank"&gt;https://login.microsoftonline.com/{TenantID}/oauth2/v2.0/token&lt;/A&gt;";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (var httpClient = new HttpClient())&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var form = new FormUrlEncodedContent(new[]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("client_id", ClientId),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("client_secret", ClientSecret),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("grant_type", "client_credentials"),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Scope corretto per Azure Databricks (AAD resource + /.default)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("scope", "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default")&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var resp = httpClient.PostAsync(tokenUrl, form).GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string body = resp.Content.ReadAsStringAsync().GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!resp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new Exception($"Token request failed ({resp.StatusCode}): {body}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var json = JObject.Parse(body);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string accessToken = json["access_token"]?.ToString();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(accessToken))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new Exception("access_token missing in token response");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AccessToken = accessToken;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="46d709ef-5c75-4394-83b0-78471c8c463a" name="AccessToken" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="4e76287c-26c7-45de-a165-1f3257d8760f" name="Execute Query - Using Token" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="2d3a1314-19e9-4398-9259-4ec602b70f7e" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-135" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="databricksUrl" stage="databricksUrl" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" stage="warehouseId" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" stage="sqlQuery" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="flag" name="CreateExcel" stage="CreateExcel" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="FilepathXLSX" stage="FilepathXLSX" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" stage="SheetName" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;33ac5062-313a-408b-a962-0eb8eab9b6a4&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d1c909a0-c003-41a6-8d16-835dcb19fd7c" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="225" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="Error Message" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="Report" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="753bbed9-7194-48db-86f7-2047f2dd218f" name="accessToken" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="74a6a9eb-ee35-4699-84ad-329239d1058f" name="warehouseId" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5e43ad48-cc52-41bb-89c4-6596788a19dd" name="sqlQuery" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d4f9c706-65f0-4c79-8779-a00d9d9529a3" name="Success" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="536e4740-8f66-4f28-b651-be23fdef263f" name="Error Message" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="4b5e9e32-cc4c-468a-b1d1-b96bdfab941f" name="JSONOutput" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="23766df5-bdba-449f-8d36-858278c8d97e" name="Report" type="Collection"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="405" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;collection&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="767269e4-2267-4297-a3c9-d97409e501de" name="Convert JSON Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="json" expr="[JSONOutput]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="dataTable" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d88bcda0-42b4-4302-ba8c-e642949c5a69&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;dataTable = null;&lt;/DIV&gt;&lt;DIV&gt;dataTable = new DataTable();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;dataTable = GenerateDataTableFromJson(json);&lt;/DIV&gt;&lt;DIV&gt;Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="33c5e16f-fa4e-4750-9e61-14e9f79eb243" name="Inputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="-45" w="150" h="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="7FB2E5" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ebf2fea7-8b77-44c8-a000-9038213e3e34" name="Local" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="165" w="150" h="150" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FFFF00" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="deb7307c-8680-4762-9dc1-5b7d5600729f" name="Outputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="330" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FF00FF" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5529a3ca-016c-44d8-94b1-56377f9b40fd" name="FilepathXLSX" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5add693a-51ef-4f02-a9c8-633e927ee473" name="CreateExcel" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="c5eff911-30f7-4e00-bf78-bd2290970310" name="Anchor2" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="225" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d1c909a0-c003-41a6-8d16-835dcb19fd7c&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d2f2e471-9a3f-4b66-b87a-c3d790bfbcb0" name="SheetName" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ad69bfb0-e52b-47f0-a648-5f1e094fcf37" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="45" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;767269e4-2267-4297-a3c9-d97409e501de&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;c0a9ca49-ff4e-441d-9650-da100bcf6bad&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d88bcda0-42b4-4302-ba8c-e642949c5a69" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="165" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;d1c909a0-c003-41a6-8d16-835dcb19fd7c&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;04d9f303-e399-4bb3-93fa-3ce536aa55a1&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="c0a9ca49-ff4e-441d-9650-da100bcf6bad" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="45" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;0f46bfec-9fc3-4b45-9073-b2a2feebbbe3&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in API Call: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="04d9f303-e399-4bb3-93fa-3ce536aa55a1" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="165" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;93dfc5a7-0afe-4188-9a40-fb7de4b3b993&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in JSON Conversion: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="0f46bfec-9fc3-4b45-9073-b2a2feebbbe3" name="Anchor3" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="45" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;93dfc5a7-0afe-4188-9a40-fb7de4b3b993&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="93dfc5a7-0afe-4188-9a40-fb7de4b3b993" name="Anchor4" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="165" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;c5eff911-30f7-4e00-bf78-bd2290970310&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="10d34c6c-df8b-4d15-9a20-6ae62ee2bb83" name="Call API Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="databricksUrl" expr="[databricksUrl]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="accessToken" expr="[accessToken]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" expr="[warehouseId]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" expr="[sqlQuery]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="JSONOutput" stage="JSONOutput" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;ad69bfb0-e52b-47f0-a648-5f1e094fcf37&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;JSONOutput = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;using (var httpClient = new HttpClient())&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;var payload = new&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;statement = sqlQuery,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;warehouse_id = warehouseId,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;wait_timeout = "30s"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;};&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;var content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;var resp = httpClient.PostAsync(databricksUrl, content).GetAwaiter().GetResult();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;string body = resp.Content.ReadAsStringAsync().GetAwaiter().GetResult();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (!resp.IsSuccessStatusCode)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;throw new Exception($"Query failed ({resp.StatusCode}): {body}");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;JSONOutput = body;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = true;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.ToString();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="cb0efb85-278a-4cf1-a80d-b99a7b2439f8" name="databricksUrl" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;&lt;A href="https://adb-&amp;amp;lt;workspace-id&amp;amp;gt;.&amp;amp;lt;shard&amp;amp;gt;.azuredatabricks.net/api/2.0/sql/statements" target="_blank"&gt;https://adb-&amp;amp;lt;workspace-id&amp;amp;gt;.&amp;amp;lt;shard&amp;amp;gt;.azuredatabricks.net/api/2.0/sql/statements&lt;/A&gt;&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="33ac5062-313a-408b-a962-0eb8eab9b6a4" name="Authentication" type="SubSheet"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="AccessToken" friendlyname="AccessToken" stage="accessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;10d34c6c-df8b-4d15-9a20-6ae62ee2bb83&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;processid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/processid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;/process&amp;gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 12 Jan 2026 13:39:08 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124343#M54309</guid>
      <dc:creator>simone.tomaCNH</dc:creator>
      <dc:date>2026-01-12T13:39:08Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124447#M54322</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I have added more robust logic for the Using Token part with request verification and better management of the response JSON.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&amp;lt;process name="VBO - Databricks" version="1.0" bpversion="7.1.0.62280" narrative="" byrefcollection="true" type="object" runmode="Exclusive" preferredid="a89c02ea-a295-4848-b504-a2afe92a5e7e"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;appdef&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;element name="Application Root"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;id&amp;gt;a1fcd9f9-3d26-4f70-bcc0-8406d53a2f05&amp;lt;/id&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;type&amp;gt;Application&amp;lt;/type&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;basetype&amp;gt;Application&amp;lt;/basetype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;unknown&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;diagnose&amp;gt;False&amp;lt;/diagnose&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/element&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/appdef&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;0&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;0&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;preconditions /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;endpoint narrative="" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="7d7495b5-ea2b-424a-aae0-3c029b92f2a9" type="CleanUp" published="True"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Clean Up&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;0&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;0&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="9cb7bf9b-8ba4-45f2-b334-fc34ba39707a" type="Normal" published="False"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Authentication&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;0&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;33&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="8e5d6e27-2067-4108-a3de-c6d32385476c" type="Normal" published="True"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Execute Query&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;-111&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;136&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="fa900c6f-ef74-4b80-a2e5-f70e341de476" type="Normal" published="True"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Execute Query - Using Token&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;-111&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;18&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ea40e4ef-0578-444a-93d6-cf433c09b609" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="-105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;1fba778b-777b-4bb2-8996-1fc62fc8fcd2&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="1fba778b-777b-4bb2-8996-1fc62fc8fcd2" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="f34ba72c-ee5c-4e66-9417-d7196dd2134a" name="Stage1" type="ProcessInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;references&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Data.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Xml.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Drawing.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.Http.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;EPPlus.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;ClosedXML.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;netstandard.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Core.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.Http.Json.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;Newtonsoft.Json.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Windows.Forms.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.Http.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Threading.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/references&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;imports&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Drawing&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Data&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Net.Http&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Text&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;ClosedXML.Excel&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;OfficeOpenXml&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Collections.Generic&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Linq&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.IO&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;Newtonsoft.Json&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;Newtonsoft.Json.Linq&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Windows.Forms&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Net.Http.Headers&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Threading&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Net&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/imports&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;language&amp;gt;csharp&amp;lt;/language&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;globalcode&amp;gt;&amp;lt;![CDATA[]]&amp;gt;&amp;lt;/globalcode&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[public class DataTableToExcel&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public void ExportToExcel(DataTable dataTable, string filePath, string sheet)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Configura EPPlus per usare la licenza non commerciale&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (var package = new ExcelPackage())&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var worksheet = package.Workbook.Worksheets.Add(sheet);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Aggiungi le intestazioni delle colonne&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int col = 0; col &amp;lt; dataTable.Columns.Count; col++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; worksheet.Cells[1, col + 1].Value = dataTable.Columns[col].ColumnName;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Aggiungi i dati delle righe&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; worksheet.Cells["A2"].LoadFromDataTable(dataTable, false);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Salva il file Excel&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var fileInfo = new FileInfo(filePath);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; package.SaveAs(fileInfo);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public class Column&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public string name { get; set; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public class Row&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;string&amp;gt; values { get; set; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public class JsonResponse&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;Column&amp;gt; columns { get; set; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;Row&amp;gt; rows { get; set; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;public static DataTable GenerateDataTableFromJson(string json)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var jsonObject = JObject.Parse(json);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 1) Trova data_array (in result.data_array o alla root)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var dataArrayToken =&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jsonObject.SelectToken("result.data_array") ??&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jsonObject.SelectToken("data_array");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (dataArrayToken == null || dataArrayToken.Type != JTokenType.Array)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new InvalidOperationException("Nessun 'data_array' trovato nel JSON.");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var dataArray = (JArray)dataArrayToken;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 2) Prova a leggere lo schema colonne se presente&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var columnsToken = jsonObject.SelectToken("manifest.schema.columns") as JArray;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var columnNames = new List&amp;lt;string&amp;gt;();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int maxCols;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (columnsToken != null &amp;amp;&amp;amp; columnsToken.Count &amp;gt; 0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var col in columnsToken)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Cerca proprietà comuni per il nome colonna&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var name = (string)(col["name"] ?? col["title"] ?? col["id"]);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (string.IsNullOrWhiteSpace(name))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; name = $"Col{columnNames.Count + 1}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; columnNames.Add(name);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; maxCols = columnNames.Count;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 3) Nessuno schema: ricava il numero max di colonne dalle righe&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; maxCols = dataArray&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .Select(r =&amp;gt; (r as JArray)?.Count ?? 0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .DefaultIfEmpty(0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .Max();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 1; i &amp;lt;= maxCols; i++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; columnNames.Add($"Col{i}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 4) Crea il DataTable e popola i dati&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var table = new DataTable();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var name in columnNames)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; table.Columns.Add(name, typeof(string));&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var rowToken in dataArray)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var rowArray = rowToken as JArray;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (rowArray == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; continue; // oppure: throw, se vuoi essere più rigido&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var dr = table.NewRow();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; maxCols; i++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (i &amp;lt; rowArray.Count)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var cell = rowArray[i];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Se vuoi stringa vuota al posto del DBNull:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // dr[i] = cell.Type == JTokenType.Null ? "" : (string)cell;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dr[i] = cell.Type == JTokenType.Null ? (object)DBNull.Value : (string)cell;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dr[i] = DBNull.Value;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; table.Rows.Add(dr);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return table;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public static string EscapeForJson(string s)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (s == null) return "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return s.Replace("\\", "\\\\").Replace("\"", "\\\"");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public static (string StatementId, string State) ParseWithNewtonsoft(string json)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var jo = JObject.Parse(json);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string statementId = (string)jo["statement_id"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string state = (string)jo["status"]?["state"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return (statementId, state);&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ce38e7ce-fcf1-4e63-bd70-44a2babf6a61" name="Clean Up" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6638295e-5a03-4485-84f4-0be42967f3be" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="-105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;9e0c8841-53a6-4607-ad35-b1d9f8b571d7&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="9e0c8841-53a6-4607-ad35-b1d9f8b571d7" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="a7ffe0ff-6bed-410a-8542-627fac718426" name="Execute Query" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7f49a903-a4c5-4669-b7e3-c8b900154c68" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-135" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="baseUrl" stage="baseUrl" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="accessToken" stage="accessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" stage="warehouseId" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" stage="sqlQuery" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="flag" name="CreateExcel" stage="CreateExcel" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="FilepathXLSX" stage="FilepathXLSX" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" stage="SheetName" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d0350ab4-99aa-4763-8c78-887721f4a3a5&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6a16195e-41c8-4e52-8625-061243db0811" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="345" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="Error Message" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="Report" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="882d594d-6359-4c08-9c68-adb46b927cc7" name="" type="Note"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;Clean Up Page&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is an optional page where you might choose to perform some finalisation (or "cleanup") tasks as your business object is closed down.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The cleanup action will be called automatically immediately after closing your business object at the end of a business process.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;You will not be able to call this action from a business process, nor will it be called at any other time than before the disposal of the business object.&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-180" y="60" w="180" h="230" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="211de8a5-16c7-48bf-bff2-3e8859a8d124" name="" type="Note"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;Initialise Page&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is an optional page where you might choose to perform some initialisation tasks after your business object is loaded.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The initialise action will be called automatically immediately after loading your business object.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;You will not be able to call this action from a business process, nor will it be called at any other time than after the creation of the object.&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-180" y="60" w="180" h="230" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d0350ab4-99aa-4763-8c78-887721f4a3a5" name="Call API" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="baseUrl" expr="[baseUrl]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="accessToken" expr="[accessToken]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" expr="[warehouseId]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" expr="[sqlQuery]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="JSONOutput" stage="JSONOutput" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;5555a2e6-2d06-4da2-b986-60516c04f8c4&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[&lt;/DIV&gt;&lt;DIV&gt;Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;JSONOutput = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// Funzioni locali di supporto: estrazione dettagli errore e SQLSTATE&lt;/DIV&gt;&lt;DIV&gt;string ExtractDetail(JObject j)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (j == null) return null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return (string)j["status"]?["error"]?["message"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["error"]?["message"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["status"]?["error"]?["code"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["error"]?["code"];&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;string ExtractSqlState(JObject j)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (j == null) return null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return (string)j["status"]?["error"]?["sql_state"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["error"]?["sql_state"];&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void BuildShortErrorFromHttp(string forcedState, HttpResponseMessage resp, string body, out string errorMessage)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var stateLabel = string.IsNullOrWhiteSpace(forcedState) ? "FAILED" : forcedState;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string detail = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string sqlState = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; try&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var j = string.IsNullOrWhiteSpace(body) ? null : JObject.Parse(body);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; detail = ExtractDetail(j);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sqlState = ExtractSqlState(j);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; catch { /* ignore parse errors */ }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(detail))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; detail = $"HTTP {(int)resp.StatusCode} {resp.ReasonPhrase}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(sqlState))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sqlState = "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; errorMessage = $"State: {stateLabel} - Detail: {detail} - SQLSTATE: {sqlState}";&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;HttpClient client = new HttpClient();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // ====== POST ======&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, baseUrl)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Content = new StringContent(&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $"{{\"statement\":\"{sqlQuery}\", \"warehouse_id\":\"{warehouseId}\", \"timeout_seconds\":600}}",&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Encoding.UTF8,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "application/json"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; };&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; request.Headers.Add("Authorization", $"Bearer {accessToken}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // Invia la richiesta&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; HttpResponseMessage response = client.SendAsync(request).Result;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string responseBody = response.Content.ReadAsStringAsync().Result;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (response.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JSONOutput = responseBody;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BuildShortErrorFromHttp("FAILED", response, responseBody, out ErrorMessage);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* =========================&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;POLLING LOGIC (ADD ONLY)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;========================= */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // Procedi al polling SOLO se la POST è andata a buon fine e hai un body&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (Success &amp;amp;&amp;amp; !string.IsNullOrWhiteSpace(JSONOutput))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject jo = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try { jo = JObject.Parse(JSONOutput); } catch { jo = null; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (jo == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = "State: FAILED - Detail: Impossibile interpretare la risposta POST come JSON. - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string statementId = (string)jo["statement_id"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string state = (string)jo["status"]?["state"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Stati terminali previsti dall’API&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string[] terminal = { "SUCCEEDED", "FAILED", "CANCELED", "CLOSED" };&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bool needsPolling =&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; !string.IsNullOrWhiteSpace(statementId) &amp;amp;&amp;amp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (string.IsNullOrWhiteSpace(state) || Array.IndexOf(terminal, state.ToUpperInvariant()) &amp;lt; 0);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (needsPolling)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Timeout lato client per il ciclo di polling (regolabile)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TimeSpan pollingTimeout = TimeSpan.FromMinutes(10);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DateTime start = DateTime.UtcNow;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Backoff esponenziale (cap a 5s)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int delayMs = 500;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // baseUrl è l’endpoint POST /sql/statements → per il GET aggiungo /{statement_id}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string getUrl = baseUrl.TrimEnd('/') + "/" + statementId;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (true)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // timeout lato client&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (DateTime.UtcNow - start &amp;gt; pollingTimeout)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = "State: FAILED - Detail: Polling scaduto lato client. - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Thread.Sleep(delayMs);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; delayMs = Math.Min(delayMs * 2, 5000); // 0.5s → 1s → 2s → 4s → 5s ...&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var pollReq = new HttpRequestMessage(HttpMethod.Get, getUrl);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pollReq.Headers.Add("Authorization", $"Bearer {accessToken}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var pollResp = client.SendAsync(pollReq).Result;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string pollBody = pollResp.Content.ReadAsStringAsync().Result;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (pollResp.StatusCode == HttpStatusCode.NotFound)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = "State: FAILED - Detail: Statement non trovato (potrebbe essere scaduto dal warehouse). - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!pollResp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BuildShortErrorFromHttp("FAILED", pollResp, pollBody, out ErrorMessage);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Aggiorno sempre l’ultimo body positivo&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JSONOutput = pollBody;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject p = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try { p = JObject.Parse(pollBody); } catch { p = null; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (p == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Continua a pollare finché non ottieni JSON valido, ma rispetta timeout&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; continue;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; state = (string)p["status"]?["state"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (string.IsNullOrWhiteSpace(state)) continue;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string stateUpper = state.ToUpperInvariant();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Uscita su stato terminale&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (Array.IndexOf(terminal, stateUpper) &amp;gt;= 0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (stateUpper == "SUCCEEDED")&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Compose errore sintetico come richiesto&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string detail = ExtractDetail(p) ?? $"State={state}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string sqlState = ExtractSqlState(p) ?? "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = $"State: {stateUpper} - Detail: {detail} - SQLSTATE: {sqlState}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // Nessuno stacktrace: solo dettaglio sintetico&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; ErrorMessage = $"State: FAILED - Detail: {ex.Message} - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;finally&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; client?.Dispose();&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8e8901e4-0469-467c-ba32-ef8872e06bd4" name="baseUrl" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue xml:space="preserve"&amp;gt;&lt;A href="https://westeurope.azuredatabricks.net/api/2.0/sql/statements" target="_blank"&gt;https://westeurope.azuredatabricks.net/api/2.0/sql/statements&lt;/A&gt;&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="dccd3340-c59f-4c07-9cf0-6b2158a0b15c" name="accessToken" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="a37d696c-f22a-42d2-926e-972ba737ca40" name="warehouseId" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="bd29c410-6809-46ee-ba90-4913e5c23721" name="sqlQuery" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="23e4c765-3cad-483e-b764-22c0b9fa4986" name="Success" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="c9bef68e-b917-4f91-a8f3-850be2935e93" name="Error Message" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="a4f71191-c150-4bc5-a71c-1407b88ea104" name="JSONOutput" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="23680203-a356-4f4a-9aa5-11ec8d787164" name="Report" type="Collection"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="405" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;collection&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="2b95b981-f6a3-46d2-ac2f-c3bf37e109aa" name="Convert JSON" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="45" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="json" expr="[JSONOutput]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="dataTable" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;081c9bf2-4828-47ba-9f88-ee45a75f8735&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;dataTable = null;&lt;/DIV&gt;&lt;DIV&gt;dataTable = new DataTable();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;dataTable = GenerateDataTableFromJson(json);&lt;/DIV&gt;&lt;DIV&gt;Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6f826340-a4b0-4a90-a21b-b7e83d2c3b64" name="Inputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="-45" w="150" h="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="7FB2E5" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="fc658c67-57fc-4741-81e3-420dee311aad" name="Local" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="165" w="150" h="150" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FFFF00" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="69e8baa0-51a9-4cb0-8102-628d715d54fd" name="Outputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="330" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FF00FF" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="3d0bd6c8-bfea-4f19-b1f0-17af6082fd95" name="FilepathXLSX" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6fce1fed-aed7-4be8-98a7-47cd4d387274" name="CreateExcel" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="4a1251fb-c3ba-49fa-82e5-4364fec79357" name="Create Excel" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="225" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="collection" name="DatatableResult" expr="[Report]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="Filepath" expr="[FilepathXLSX]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" expr="[SheetName]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;943d0920-2cf6-4da3-9b48-9a5af41f847f&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;DataTableToExcel exporter = new DataTableToExcel();&lt;/DIV&gt;&lt;DIV&gt;exporter.ExportToExcel(DatatableResult, Filepath, SheetName);&lt;/DIV&gt;&lt;DIV&gt;Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="3f15a13e-c6d9-4309-b03c-b84634339a44" name="[CreateExcel] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="165" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[CreateExcel] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;4a1251fb-c3ba-49fa-82e5-4364fec79357&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;aff1fb43-83dd-411b-895e-121a6e9aaa67&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="aff1fb43-83dd-411b-895e-121a6e9aaa67" name="Anchor1" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="165" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;de02cbf6-bc09-4036-9c44-61fe6f59330b&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7d038089-d0d0-47d6-9567-ff7fbd4e2ad2" name="Anchor2" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="345" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;6a16195e-41c8-4e52-8625-061243db0811&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8d301f0a-94c3-4852-a216-f252b27166c3" name="SheetName" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="120" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5555a2e6-2d06-4da2-b986-60516c04f8c4" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;2b95b981-f6a3-46d2-ac2f-c3bf37e109aa&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;25ddca11-d42c-4ac1-bfeb-590504da586b&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="081c9bf2-4828-47ba-9f88-ee45a75f8735" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;3f15a13e-c6d9-4309-b03c-b84634339a44&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;d9b92af7-75ca-4170-9a32-2981d266cc24&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="25ddca11-d42c-4ac1-bfeb-590504da586b" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;9708dd42-1db3-4ae3-809d-1513db8538f9&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in API Call: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d9b92af7-75ca-4170-9a32-2981d266cc24" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;5dc509e2-1dea-4ae3-ae96-918a7a64f060&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in JSON Conversion: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="943d0920-2cf6-4da3-9b48-9a5af41f847f" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="285" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;6a16195e-41c8-4e52-8625-061243db0811&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;fc1ca4c2-0045-4d9d-ad88-61abf950a75c&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="fc1ca4c2-0045-4d9d-ad88-61abf950a75c" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="285" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;de02cbf6-bc09-4036-9c44-61fe6f59330b&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in Create Excel: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="9708dd42-1db3-4ae3-809d-1513db8538f9" name="Anchor3" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="-15" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;5dc509e2-1dea-4ae3-ae96-918a7a64f060&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5dc509e2-1dea-4ae3-ae96-918a7a64f060" name="Anchor4" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="105" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;aff1fb43-83dd-411b-895e-121a6e9aaa67&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="de02cbf6-bc09-4036-9c44-61fe6f59330b" name="Anchor5" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="285" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;7d038089-d0d0-47d6-9567-ff7fbd4e2ad2&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8848462a-85fd-4a3a-bc39-15398ec8475f" name="Authentication" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7f4050b6-af0c-44aa-afa5-b7d0fd9f4f1c" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-135" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;8c424f0b-43e3-49bd-9deb-97c9e5ded003&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="aace0190-ea26-4a19-9ebe-9048a002664e" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="AccessToken" stage="AccessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="baa4ea76-41aa-46e6-8a66-4920d8f05d99" name="Inputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="-45" w="150" h="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="7FB2E5" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="0f8f7e0c-8f73-402c-9601-9443b4f6827e" name="Local" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="165" w="150" h="150" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FFFF00" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7066e6a3-cb35-4561-bc57-fb6785819432" name="Outputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="330" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FF00FF" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="79280ca6-6232-452b-b7b2-8810f0ff1547" name="TenantID" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-15" w="120" h="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5e4e3fc9-859a-4eeb-b1bf-3cfedc42bb8a" name="ClientId" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="30" w="120" h="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="3b5f25be-6542-4ee9-aae5-7e8174743bb3" name="ClientSecret" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="75" w="120" h="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;password&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalueenc&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/initialvalueenc&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8c424f0b-43e3-49bd-9deb-97c9e5ded003" name="Get Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="TenantID" expr="[TenantID]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="ClientId" expr="[ClientId]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="password" name="ClientSecret" expr="[ClientSecret]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="AccessToken" stage="AccessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;aace0190-ea26-4a19-9ebe-9048a002664e&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[&lt;/DIV&gt;&lt;DIV&gt;string tokenUrl = $"&lt;A href="https://login.microsoftonline.com/{TenantID}/oauth2/v2.0/token" target="_blank"&gt;https://login.microsoftonline.com/{TenantID}/oauth2/v2.0/token&lt;/A&gt;";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (var httpClient = new HttpClient())&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var form = new FormUrlEncodedContent(new[]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("client_id", ClientId),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("client_secret", ClientSecret),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("grant_type", "client_credentials"),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Scope corretto per Azure Databricks (AAD resource + /.default)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("scope", "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default")&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var resp = httpClient.PostAsync(tokenUrl, form).GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string body = resp.Content.ReadAsStringAsync().GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!resp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new Exception($"Token request failed ({resp.StatusCode}): {body}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var json = JObject.Parse(body);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string accessToken = json["access_token"]?.ToString();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(accessToken))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new Exception("access_token missing in token response");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AccessToken = accessToken;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="46d709ef-5c75-4394-83b0-78471c8c463a" name="AccessToken" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="4e76287c-26c7-45de-a165-1f3257d8760f" name="Execute Query - Using Token" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="2d3a1314-19e9-4398-9259-4ec602b70f7e" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-135" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="databricksUrl" stage="databricksUrl" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" stage="warehouseId" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" stage="sqlQuery" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="flag" name="CreateExcel" stage="CreateExcel" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="FilepathXLSX" stage="FilepathXLSX" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" stage="SheetName" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;33ac5062-313a-408b-a962-0eb8eab9b6a4&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d1c909a0-c003-41a6-8d16-835dcb19fd7c" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="405" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="Error Message" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="Report" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="753bbed9-7194-48db-86f7-2047f2dd218f" name="accessToken" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="74a6a9eb-ee35-4699-84ad-329239d1058f" name="warehouseId" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5e43ad48-cc52-41bb-89c4-6596788a19dd" name="sqlQuery" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d4f9c706-65f0-4c79-8779-a00d9d9529a3" name="Success" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="536e4740-8f66-4f28-b651-be23fdef263f" name="Error Message" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="4b5e9e32-cc4c-468a-b1d1-b96bdfab941f" name="JSONOutput" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="23766df5-bdba-449f-8d36-858278c8d97e" name="Report" type="Collection"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="405" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;collection&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="767269e4-2267-4297-a3c9-d97409e501de" name="Convert JSON Token NEW" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="json" expr="[JSONOutput]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="dataTable" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d88bcda0-42b4-4302-ba8c-e642949c5a69&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;dataTable = null;&lt;/DIV&gt;&lt;DIV&gt;dataTable = new DataTable();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;dataTable = GenerateDataTableFromJson(json);&lt;/DIV&gt;&lt;DIV&gt;Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="33c5e16f-fa4e-4750-9e61-14e9f79eb243" name="Inputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="-45" w="150" h="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="7FB2E5" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ebf2fea7-8b77-44c8-a000-9038213e3e34" name="Local" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="165" w="150" h="150" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FFFF00" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="deb7307c-8680-4762-9dc1-5b7d5600729f" name="Outputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="330" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FF00FF" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5529a3ca-016c-44d8-94b1-56377f9b40fd" name="FilepathXLSX" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5add693a-51ef-4f02-a9c8-633e927ee473" name="CreateExcel" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="61a50860-9a73-4cbd-8307-274af6b1cff2" name="Create Excel Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="285" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="collection" name="DatatableResult" expr="[Report]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="Filepath" expr="[FilepathXLSX]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" expr="[SheetName]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d0c941a8-7e1a-4167-b165-ae1bae998acf&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;DataTableToExcel exporter = new DataTableToExcel();&lt;/DIV&gt;&lt;DIV&gt;exporter.ExportToExcel(DatatableResult, Filepath, SheetName);&lt;/DIV&gt;&lt;DIV&gt;Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="e7d0172b-74d8-4261-a310-976261f28845" name="[CreateExcel] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="225" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[CreateExcel] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;61a50860-9a73-4cbd-8307-274af6b1cff2&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;e5242eaf-7df1-445a-be16-359ff2906db9&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="e5242eaf-7df1-445a-be16-359ff2906db9" name="Anchor1" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="225" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;6f7ea0aa-ca84-4bc5-b2cb-b00a3f5a11c1&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="c5eff911-30f7-4e00-bf78-bd2290970310" name="Anchor2" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="405" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d1c909a0-c003-41a6-8d16-835dcb19fd7c&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d2f2e471-9a3f-4b66-b87a-c3d790bfbcb0" name="SheetName" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ad69bfb0-e52b-47f0-a648-5f1e094fcf37" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="45" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;767269e4-2267-4297-a3c9-d97409e501de&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;c0a9ca49-ff4e-441d-9650-da100bcf6bad&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d88bcda0-42b4-4302-ba8c-e642949c5a69" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="165" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;e7d0172b-74d8-4261-a310-976261f28845&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;04d9f303-e399-4bb3-93fa-3ce536aa55a1&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="c0a9ca49-ff4e-441d-9650-da100bcf6bad" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="45" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;0f46bfec-9fc3-4b45-9073-b2a2feebbbe3&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in API Call: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="04d9f303-e399-4bb3-93fa-3ce536aa55a1" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="165" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;93dfc5a7-0afe-4188-9a40-fb7de4b3b993&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in JSON Conversion: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d0c941a8-7e1a-4167-b165-ae1bae998acf" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="345" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;d1c909a0-c003-41a6-8d16-835dcb19fd7c&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;33d8e73b-b167-41a9-8606-25057a305ddc&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="33d8e73b-b167-41a9-8606-25057a305ddc" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="345" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;6f7ea0aa-ca84-4bc5-b2cb-b00a3f5a11c1&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in Create Excel: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="0f46bfec-9fc3-4b45-9073-b2a2feebbbe3" name="Anchor3" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="45" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;93dfc5a7-0afe-4188-9a40-fb7de4b3b993&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="93dfc5a7-0afe-4188-9a40-fb7de4b3b993" name="Anchor4" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="165" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;e5242eaf-7df1-445a-be16-359ff2906db9&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6f7ea0aa-ca84-4bc5-b2cb-b00a3f5a11c1" name="Anchor5" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="345" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;c5eff911-30f7-4e00-bf78-bd2290970310&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="10d34c6c-df8b-4d15-9a20-6ae62ee2bb83" name="Call API Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="databricksUrl" expr="[databricksUrl]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="accessToken" expr="[accessToken]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" expr="[warehouseId]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" expr="[sqlQuery]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="JSONOutput" stage="JSONOutput" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;ad69bfb0-e52b-47f0-a648-5f1e094fcf37&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[&lt;/DIV&gt;&lt;DIV&gt;// Assumo che tu abbia già queste variabili in scope:&lt;/DIV&gt;&lt;DIV&gt;// string databricksUrl;&amp;nbsp; &amp;nbsp; // es: "https://&amp;lt;workspace&amp;gt;/api/2.0/sql/statements"&lt;/DIV&gt;&lt;DIV&gt;// string accessToken;&amp;nbsp; &amp;nbsp; &amp;nbsp; // Bearer token del Service Principal&lt;/DIV&gt;&lt;DIV&gt;// string sqlQuery;&lt;/DIV&gt;&lt;DIV&gt;// string warehouseId;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;JSONOutput = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// == Impostazione opzionale ==&lt;/DIV&gt;&lt;DIV&gt;bool fetchAllChunks = true;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // true = unisce tutti i chunk; false = solo chunk 0&lt;/DIV&gt;&lt;DIV&gt;TimeSpan overallTimeout = TimeSpan.FromMinutes(10);&lt;/DIV&gt;&lt;DIV&gt;int delayMs = 500;&lt;/DIV&gt;&lt;DIV&gt;int maxDelayMs = 5000;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// --- Helper locali identici ai tuoi ---&lt;/DIV&gt;&lt;DIV&gt;string ExtractDetail(JObject j)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (j == null) return null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return (string)j["status"]?["error"]?["message"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["error"]?["message"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["status"]?["error"]?["code"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["error"]?["code"];&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;string ExtractSqlState(JObject j)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (j == null) return null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return (string)j["status"]?["error"]?["sql_state"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["error"]?["sql_state"];&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void BuildShortErrorFromHttp(string forcedState, HttpResponseMessage resp, string body, out string errorMessage)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var stateLabel = string.IsNullOrWhiteSpace(forcedState) ? "FAILED" : forcedState;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string detail = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string sqlState = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; try&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var j = string.IsNullOrWhiteSpace(body) ? null : JObject.Parse(body);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; detail = ExtractDetail(j);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sqlState = ExtractSqlState(j);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; catch { /* ignore parse errors */ }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(detail))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; detail = $"HTTP {(int)resp.StatusCode} {resp.ReasonPhrase}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(sqlState))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sqlState = "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; errorMessage = $"State: {stateLabel} - Detail: {detail} - SQLSTATE: {sqlState}";&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// --- Funzioni locali per i chunk ---&lt;/DIV&gt;&lt;DIV&gt;(bool ok, JObject resultObj, string err) FetchAndMergeChunks(&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; HttpClient httpClient,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string baseUrl,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string statementId,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; int totalChunks,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; bool fetchAll)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; try&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var allRows = new JArray();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int chunksToFetch = fetchAll ? totalChunks : Math.Min(1, totalChunks);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; chunksToFetch; i++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var url = $"{baseUrl.TrimEnd('/')}/{statementId}/result?chunk_index={i}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var resp = httpClient.GetAsync(url).GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var body = resp.Content.ReadAsStringAsync().GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!resp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BuildShortErrorFromHttp("FAILED", resp, body, out var errMsg);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (false, null, errMsg);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject chunk = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try { chunk = JObject.Parse(body); } catch { }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (chunk == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (false, null, "State: FAILED - Detail: Impossibile interpretare la risposta dei risultati come JSON. - SQLSTATE: N/A");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var rows = (JArray)chunk["data_array"] ?? new JArray();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var r in rows) allRows.Add(r);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var resultObj = new JObject&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ["chunk_index"] = 0,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ["row_offset"] = 0,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ["row_count"] = allRows.Count,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ["data_array"] = allRows&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (true, resultObj, null);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (false, null, $"State: FAILED - Detail: {ex.Message} - SQLSTATE: N/A");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; using (var httpClient = new HttpClient())&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 1) POST: crea statement (senza attendere)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var payload = new&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; statement = sqlQuery,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; warehouse_id = warehouseId,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wait_timeout = "0s",&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format = "JSON_ARRAY" // così hai data_array coerente col primo metodo&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var content = new StringContent(&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JsonConvert.SerializeObject(payload),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Encoding.UTF8,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "application/json"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; );&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var postResp = httpClient.PostAsync(databricksUrl, content).GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var postBody = postResp.Content.ReadAsStringAsync().GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!postResp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BuildShortErrorFromHttp("FAILED", postResp, postBody, out ErrorMessage);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject postJson = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try { postJson = JObject.Parse(postBody); } catch { }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (postJson == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = "State: FAILED - Detail: Impossibile interpretare la risposta POST come JSON. - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var statementId = (string)postJson["statement_id"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var stateImmediate = (string)postJson["status"]?["state"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(statementId))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Caso finale immediato&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!"SUCCEEDED".Equals(stateImmediate, StringComparison.OrdinalIgnoreCase))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var detail = ExtractDetail(postJson) ?? "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var sqlState = ExtractSqlState(postJson) ?? "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = $"State: {stateImmediate ?? "FAILED"} - Detail: {detail} - SQLSTATE: {sqlState}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Già completo → restituisco l'oggetto come nel primo metodo&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JSONOutput = postJson.ToString(Formatting.None);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 2) Polling fino a stato terminale&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var start = DateTime.UtcNow;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string finalState = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject finalStatement = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string[] terminal = { "SUCCEEDED", "FAILED", "CANCELED", "CLOSED" };&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (true)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var getUrl = $"{databricksUrl.TrimEnd('/')}/{statementId}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var getResp = httpClient.GetAsync(getUrl).GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var getBody = getResp.Content.ReadAsStringAsync().GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!getResp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BuildShortErrorFromHttp("FAILED", getResp, getBody, out ErrorMessage);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject getJson = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try { getJson = JObject.Parse(getBody); } catch { }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (getJson == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = "State: FAILED - Detail: Impossibile interpretare la risposta GET polling come JSON. - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalStatement = getJson;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var state = (string)getJson["status"]?["state"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!string.IsNullOrWhiteSpace(state) &amp;amp;&amp;amp; terminal.Contains(state.ToUpperInvariant()))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalState = state;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (DateTime.UtcNow - start &amp;gt; overallTimeout)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = $"State: FAILED - Detail: Polling scaduto dopo {overallTimeout.TotalSeconds:N0} secondi. - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Thread.Sleep(delayMs);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; delayMs = Math.Min(delayMs * 2, maxDelayMs);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 3) Esito finale&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!"SUCCEEDED".Equals(finalState, StringComparison.OrdinalIgnoreCase))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var detail = ExtractDetail(finalStatement) ?? "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var sqlState = ExtractSqlState(finalStatement) ?? "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = $"State: {finalState} - Detail: {detail} - SQLSTATE: {sqlState}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 4) Recupero risultati e innesto in finalStatement&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JToken resultToken = finalStatement["result"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Quanti chunk ci sono?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int totalChunks = 1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; totalChunks = (int?)finalStatement["manifest"]?["total_chunk_count"] ?? 1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch { /* ignore */ }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (resultToken == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Non c'è result nello statement → scarico i chunk e UNISCO&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var (ok, resultObj, err) = FetchAndMergeChunks(httpClient, databricksUrl, statementId, totalChunks, fetchAllChunks);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!ok)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = err;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalStatement["result"] = resultObj;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // C'è già result nello statement.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Se vuoi essere sicuro di avere TUTTO, e ci sono più chunk, li recupero e unisco.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (fetchAllChunks &amp;amp;&amp;amp; totalChunks &amp;gt; 1)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Riparto da zero e unisco tutti i chunk (più semplice e robusto)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var (ok, resultObj, err) = FetchAndMergeChunks(httpClient, databricksUrl, statementId, totalChunks, fetchAllChunks);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!ok)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = err;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalStatement["result"] = resultObj;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Allineo counters (opzionale)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var dataArray = finalStatement["result"]?["data_array"] as JArray;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (dataArray != null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalStatement["result"]["row_count"] = dataArray.Count;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalStatement["result"]["chunk_index"] = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalStatement["result"]["row_offset"] = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch { /* ignore */ }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 5) OUTPUT: restituisco lo statement completo (come nel primo metodo)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JSONOutput = finalStatement.ToString(Formatting.None);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; ErrorMessage = $"State: FAILED - Detail: {ex.Message} - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="cb0efb85-278a-4cf1-a80d-b99a7b2439f8" name="databricksUrl" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;&lt;A href="https://adb-&amp;amp;lt;workspace-id&amp;amp;gt;.&amp;amp;lt;region-shard&amp;amp;gt;.azuredatabricks.net/api/2.0/sql/statements" target="_blank"&gt;https://adb-&amp;amp;lt;workspace-id&amp;amp;gt;.&amp;amp;lt;region-shard&amp;amp;gt;.azuredatabricks.net/api/2.0/sql/statements&lt;/A&gt;&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="33ac5062-313a-408b-a962-0eb8eab9b6a4" name="Authentication" type="SubSheet"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="AccessToken" friendlyname="AccessToken" stage="accessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;10d34c6c-df8b-4d15-9a20-6ae62ee2bb83&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;processid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/processid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;/process&amp;gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 20 Jan 2026 07:59:36 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124447#M54322</guid>
      <dc:creator>simone.tomaCNH</dc:creator>
      <dc:date>2026-01-20T07:59:36Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124455#M54327</link>
      <description>&lt;P&gt;thank you so much for sharing this, one more thing is , if we have large data set then API gives results in chunks,&amp;nbsp;&lt;/P&gt;&lt;P&gt;currently i am checking total chunk count and looping based on that to fetch , store data chunk wise&lt;/P&gt;</description>
      <pubDate>Tue, 20 Jan 2026 19:17:32 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124455#M54327</guid>
      <dc:creator>naveed_raza</dc:creator>
      <dc:date>2026-01-20T19:17:32Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks API JSON Result to Collection</title>
      <link>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124479#M54337</link>
      <description>&lt;P&gt;The chunk part was already handled in the Execute Query action with Service Principal. I also updated the execute query part with a personal token and added memory management with garbage collection.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&amp;lt;process name="VBO - Databricks" version="1.0" bpversion="7.1.0.62280" narrative="" byrefcollection="true" type="object" runmode="Exclusive" preferredid="a89c02ea-a295-4848-b504-a2afe92a5e7e"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;appdef&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;element name="Application Root"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;id&amp;gt;a1fcd9f9-3d26-4f70-bcc0-8406d53a2f05&amp;lt;/id&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;type&amp;gt;Application&amp;lt;/type&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;basetype&amp;gt;Application&amp;lt;/basetype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;unknown&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;diagnose&amp;gt;False&amp;lt;/diagnose&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/element&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/appdef&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;0&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;0&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;preconditions /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;endpoint narrative="" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="7d7495b5-ea2b-424a-aae0-3c029b92f2a9" type="CleanUp" published="True"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Clean Up&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;0&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;0&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="9cb7bf9b-8ba4-45f2-b334-fc34ba39707a" type="Normal" published="False"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Authentication&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;0&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;33&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="8e5d6e27-2067-4108-a3de-c6d32385476c" type="Normal" published="True"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Execute Query&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;-111&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;31&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;subsheet subsheetid="fa900c6f-ef74-4b80-a2e5-f70e341de476" type="Normal" published="True"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;Execute Query - Using Token&amp;lt;/name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;camerax&amp;gt;-111&amp;lt;/camerax&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;cameray&amp;gt;18&amp;lt;/cameray&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;zoom version="2"&amp;gt;1.25&amp;lt;/zoom&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/view&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/subsheet&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ea40e4ef-0578-444a-93d6-cf433c09b609" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="-105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;1fba778b-777b-4bb2-8996-1fc62fc8fcd2&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="1fba778b-777b-4bb2-8996-1fc62fc8fcd2" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="f34ba72c-ee5c-4e66-9417-d7196dd2134a" name="Stage1" type="ProcessInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;references&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Data.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Xml.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Drawing.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.Http.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;EPPlus.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;ClosedXML.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;netstandard.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Core.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.Http.Json.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;Newtonsoft.Json.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Windows.Forms.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.Http.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Threading.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;reference&amp;gt;System.Net.dll&amp;lt;/reference&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/references&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;imports&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Drawing&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Data&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Net.Http&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Text&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;ClosedXML.Excel&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;OfficeOpenXml&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Collections.Generic&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Linq&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.IO&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;Newtonsoft.Json&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;Newtonsoft.Json.Linq&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Windows.Forms&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Net.Http.Headers&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Threading&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;import&amp;gt;System.Net&amp;lt;/import&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/imports&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;language&amp;gt;csharp&amp;lt;/language&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;globalcode&amp;gt;&amp;lt;![CDATA[]]&amp;gt;&amp;lt;/globalcode&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[public class DataTableToExcel&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public void ExportToExcel(DataTable dataTable, string filePath, string sheet)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Configura EPPlus per usare la licenza non commerciale&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (var package = new ExcelPackage())&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var worksheet = package.Workbook.Worksheets.Add(sheet);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Aggiungi le intestazioni delle colonne&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int col = 0; col &amp;lt; dataTable.Columns.Count; col++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; worksheet.Cells[1, col + 1].Value = dataTable.Columns[col].ColumnName;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Aggiungi i dati delle righe&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; worksheet.Cells["A2"].LoadFromDataTable(dataTable, false);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Salva il file Excel&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var fileInfo = new FileInfo(filePath);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; package.SaveAs(fileInfo);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public class Column&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public string name { get; set; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public class Row&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;string&amp;gt; values { get; set; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public class JsonResponse&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;Column&amp;gt; columns { get; set; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public List&amp;lt;Row&amp;gt; rows { get; set; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;public static DataTable GenerateDataTableFromJson(string json)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var jsonObject = JObject.Parse(json);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 1) Trova data_array (in result.data_array o alla root)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var dataArrayToken =&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jsonObject.SelectToken("result.data_array") ??&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jsonObject.SelectToken("data_array");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (dataArrayToken == null || dataArrayToken.Type != JTokenType.Array)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new InvalidOperationException("Nessun 'data_array' trovato nel JSON.");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var dataArray = (JArray)dataArrayToken;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 2) Prova a leggere lo schema colonne se presente&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var columnsToken = jsonObject.SelectToken("manifest.schema.columns") as JArray;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var columnNames = new List&amp;lt;string&amp;gt;();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int maxCols;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (columnsToken != null &amp;amp;&amp;amp; columnsToken.Count &amp;gt; 0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var col in columnsToken)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Cerca proprietà comuni per il nome colonna&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var name = (string)(col["name"] ?? col["title"] ?? col["id"]);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (string.IsNullOrWhiteSpace(name))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; name = $"Col{columnNames.Count + 1}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; columnNames.Add(name);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; maxCols = columnNames.Count;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 3) Nessuno schema: ricava il numero max di colonne dalle righe&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; maxCols = dataArray&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .Select(r =&amp;gt; (r as JArray)?.Count ?? 0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .DefaultIfEmpty(0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .Max();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 1; i &amp;lt;= maxCols; i++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; columnNames.Add($"Col{i}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 4) Crea il DataTable e popola i dati&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var table = new DataTable();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var name in columnNames)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; table.Columns.Add(name, typeof(string));&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var rowToken in dataArray)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var rowArray = rowToken as JArray;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (rowArray == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; continue; // oppure: throw, se vuoi essere più rigido&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var dr = table.NewRow();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; maxCols; i++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (i &amp;lt; rowArray.Count)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var cell = rowArray[i];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Se vuoi stringa vuota al posto del DBNull:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // dr[i] = cell.Type == JTokenType.Null ? "" : (string)cell;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dr[i] = cell.Type == JTokenType.Null ? (object)DBNull.Value : (string)cell;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dr[i] = DBNull.Value;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; table.Rows.Add(dr);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return table;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public static string EscapeForJson(string s)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (s == null) return "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return s.Replace("\\", "\\\\").Replace("\"", "\\\"");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;public static (string StatementId, string State) ParseWithNewtonsoft(string json)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var jo = JObject.Parse(json);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string statementId = (string)jo["statement_id"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string state = (string)jo["status"]?["state"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return (statementId, state);&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ce38e7ce-fcf1-4e63-bd70-44a2babf6a61" name="Clean Up" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6638295e-5a03-4485-84f4-0be42967f3be" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="-105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;9e0c8841-53a6-4607-ad35-b1d9f8b571d7&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="9e0c8841-53a6-4607-ad35-b1d9f8b571d7" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="15" y="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="a7ffe0ff-6bed-410a-8542-627fac718426" name="Execute Query" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7f49a903-a4c5-4669-b7e3-c8b900154c68" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-135" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="baseUrl" stage="baseUrl" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="accessToken" stage="accessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" stage="warehouseId" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" stage="sqlQuery" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="flag" name="CreateExcel" stage="CreateExcel" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="FilepathXLSX" stage="FilepathXLSX" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" stage="SheetName" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d0350ab4-99aa-4763-8c78-887721f4a3a5&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6a16195e-41c8-4e52-8625-061243db0811" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="345" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="Error Message" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="Report" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="882d594d-6359-4c08-9c68-adb46b927cc7" name="" type="Note"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;7d7495b5-ea2b-424a-aae0-3c029b92f2a9&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;Clean Up Page&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is an optional page where you might choose to perform some finalisation (or "cleanup") tasks as your business object is closed down.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The cleanup action will be called automatically immediately after closing your business object at the end of a business process.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;You will not be able to call this action from a business process, nor will it be called at any other time than before the disposal of the business object.&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-180" y="60" w="180" h="230" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="211de8a5-16c7-48bf-bff2-3e8859a8d124" name="" type="Note"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;Initialise Page&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is an optional page where you might choose to perform some initialisation tasks after your business object is loaded.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The initialise action will be called automatically immediately after loading your business object.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;You will not be able to call this action from a business process, nor will it be called at any other time than after the creation of the object.&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-180" y="60" w="180" h="230" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d0350ab4-99aa-4763-8c78-887721f4a3a5" name="Call API" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="baseUrl" expr="[baseUrl]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="accessToken" expr="[accessToken]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" expr="[warehouseId]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" expr="[sqlQuery]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="JSONOutput" stage="JSONOutput" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;5555a2e6-2d06-4da2-b986-60516c04f8c4&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[&lt;/DIV&gt;&lt;DIV&gt;// ======================&lt;/DIV&gt;&lt;DIV&gt;// OUTPUT atteso&lt;/DIV&gt;&lt;DIV&gt;// ======================&lt;/DIV&gt;&lt;DIV&gt;Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;JSONOutput = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// ======================&lt;/DIV&gt;&lt;DIV&gt;// Impostazioni&lt;/DIV&gt;&lt;DIV&gt;// ======================&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// Disposition: "INLINE" (data_array) o "EXTERNAL_LINKS" (URL SAS)&lt;/DIV&gt;&lt;DIV&gt;string disposition = "INLINE";&lt;/DIV&gt;&lt;DIV&gt;// Formato risultati: con INLINE supportato "JSON_ARRAY"&lt;/DIV&gt;&lt;DIV&gt;string format = "JSON_ARRAY";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// Polling&lt;/DIV&gt;&lt;DIV&gt;TimeSpan pollingTimeout = TimeSpan.FromMinutes(10);&lt;/DIV&gt;&lt;DIV&gt;int initialDelayMs = 500;&lt;/DIV&gt;&lt;DIV&gt;int maxDelayMs = 5000;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// ======================&lt;/DIV&gt;&lt;DIV&gt;// Helper errori/estrazione&lt;/DIV&gt;&lt;DIV&gt;// ======================&lt;/DIV&gt;&lt;DIV&gt;string ExtractDetail(JObject j)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (j == null) return null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return (string)j["status"]?["error"]?["message"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["error"]?["message"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["status"]?["error"]?["code"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["error"]?["code"];&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;string ExtractSqlState(JObject j)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (j == null) return null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return (string)j["status"]?["error"]?["sql_state"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["error"]?["sql_state"];&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void BuildShortErrorFromHttp(string forcedState, HttpResponseMessage resp, string body, out string errorMessage)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var stateLabel = string.IsNullOrWhiteSpace(forcedState) ? "FAILED" : forcedState;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string detail = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string sqlState = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; try&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var j = string.IsNullOrWhiteSpace(body) ? null : JObject.Parse(body);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; detail = ExtractDetail(j);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sqlState = ExtractSqlState(j);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; catch { /* ignore parse errors */ }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(detail))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; detail = $"HTTP {(int)resp.StatusCode} {resp.ReasonPhrase}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(sqlState))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sqlState = "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; errorMessage = $"State: {stateLabel} - Detail: {detail} - SQLSTATE: {sqlState}";&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// ======================&lt;/DIV&gt;&lt;DIV&gt;// Fetch di un CHUNK (INLINE o EXTERNAL_LINKS) → ritorna JArray righe del chunk&lt;/DIV&gt;&lt;DIV&gt;// ======================&lt;/DIV&gt;&lt;DIV&gt;(bool ok, JArray rows, string err) FetchChunkRows(&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; HttpClient clientWithAuth,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string apiBaseUrl,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string token,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string statementId,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; int chunkIndex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; try&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var url = $"{apiBaseUrl.TrimEnd('/')}/{statementId}/result/chunks/{chunkIndex}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var req = new HttpRequestMessage(HttpMethod.Get, url);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; req.Headers.Add("Authorization", $"Bearer {token}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var resp = clientWithAuth.SendAsync(req).Result;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var body = resp.Content.ReadAsStringAsync().Result;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!resp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BuildShortErrorFromHttp("FAILED", resp, body, out var msg);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (false, null, msg);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var chunk = JObject.Parse(body);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Caso INLINE: data_array in root&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (chunk["data_array"] is JArray inlineRows)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (true, inlineRows, null);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Caso EXTERNAL_LINKS: scarico i link SAS (ognuno è un JSON array)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (chunk["external_links"] is JArray links)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var merged = new JArray();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var l in links)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var link = (string)l["external_link"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(link)) continue;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (var http = new HttpClient()) // NO Authorization header per SAS&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var dl = http.GetStringAsync(link).Result; // contenuto JSON_ARRAY&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var jarr = JArray.Parse(dl);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var r in jarr) merged.Add(r);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // libera presto memoria intermedia&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jarr.Clear();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GC.Collect();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GC.WaitForPendingFinalizers();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (true, merged, null);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (false, null, "State: FAILED - Detail: Nessun 'data_array' o 'external_links' nel chunk. - SQLSTATE: N/A");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (false, null, $"State: FAILED - Detail: {ex.Message} - SQLSTATE: N/A");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// ======================&lt;/DIV&gt;&lt;DIV&gt;// MAIN FLOW&lt;/DIV&gt;&lt;DIV&gt;// ======================&lt;/DIV&gt;&lt;DIV&gt;HttpClient client = new HttpClient();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // ====== POST (asincrono): wait_timeout=0s → ritorna subito statement_id ======&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var payload = new&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; statement = sqlQuery,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; warehouse_id = warehouseId,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wait_timeout = "0s",&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; disposition = disposition,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format = format&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; };&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var content = new StringContent(&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JsonConvert.SerializeObject(payload),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Encoding.UTF8,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "application/json"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; );&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var postReq = new HttpRequestMessage(HttpMethod.Post, baseUrl);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; postReq.Headers.Add("Authorization", $"Bearer {accessToken}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; postReq.Content = content;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var postResp = client.SendAsync(postReq).Result;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var postBody = postResp.Content.ReadAsStringAsync().Result;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (!postResp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BuildShortErrorFromHttp("FAILED", postResp, postBody, out ErrorMessage);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; JObject jo = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; try { jo = JObject.Parse(postBody); } catch { }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (jo == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = "State: FAILED - Detail: Impossibile interpretare la risposta POST come JSON. - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var statementId = (string)jo["statement_id"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var state = (string)jo["status"]?["state"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // Stati terminali previsti&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string[] terminal = { "SUCCEEDED", "FAILED", "CANCELED", "CLOSED" };&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; bool needsPolling =&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; !string.IsNullOrWhiteSpace(statementId) &amp;amp;&amp;amp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (string.IsNullOrWhiteSpace(state) || Array.IndexOf(terminal, state?.ToUpperInvariant()) &amp;lt; 0);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // ====== POLLING ======&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; JObject finalObj = jo;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (needsPolling)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DateTime start = DateTime.UtcNow;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int delayMs = initialDelayMs;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string getUrl = baseUrl.TrimEnd('/') + "/" + statementId;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (true)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (DateTime.UtcNow - start &amp;gt; pollingTimeout)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = "State: FAILED - Detail: Polling scaduto lato client. - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Thread.Sleep(delayMs);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; delayMs = Math.Min(delayMs * 2, maxDelayMs);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var pollReq = new HttpRequestMessage(HttpMethod.Get, getUrl);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pollReq.Headers.Add("Authorization", $"Bearer {accessToken}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var pollResp = client.SendAsync(pollReq).Result;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var pollBody = pollResp.Content.ReadAsStringAsync().Result;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (pollResp.StatusCode == HttpStatusCode.NotFound)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = "State: FAILED - Detail: Statement non trovato o scaduto. - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!pollResp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BuildShortErrorFromHttp("FAILED", pollResp, pollBody, out ErrorMessage);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject p = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try { p = JObject.Parse(pollBody); } catch { p = null; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (p == null) continue;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalObj = p;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; state = (string)p["status"]?["state"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (string.IsNullOrWhiteSpace(state)) continue;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var upper = state.ToUpperInvariant();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (Array.IndexOf(terminal, upper) &amp;gt;= 0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (upper != "SUCCEEDED")&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var detail = ExtractDetail(p) ?? $"State={upper}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var sqlState = ExtractSqlState(p) ?? "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = $"State: {upper} - Detail: {detail} - SQLSTATE: {sqlState}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break; // SUCCEEDED&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // ====== STATO: SUCCEEDED → costruzione JSONOutput in streaming ======&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; int totalChunks = (int?)finalObj["manifest"]?["total_chunk_count"] ?? 1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // Builder per l'output finale (evita JArray globale in RAM)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var sb = new StringBuilder(1024 * 1024); // 1MB iniziale; cresce se serve&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // Header JSON (mettiamo row_count dopo aver scritto tutte le righe)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; sb.Append("{\"statement_id\":\"")&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; .Append((string)finalObj["statement_id"])&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; .Append("\",\"status\":\"SUCCEEDED\",\"manifest\":{\"total_chunk_count\":")&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; .Append(totalChunks)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; .Append("},\"result\":{\"chunk_index\":0,\"row_offset\":0,\"data_array\":[");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; bool firstRow = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; long rowCount = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // Funzione locale: appende righe e libera memoria del chunk&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; void AppendRows(JArray rows)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var r in rows)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!firstRow) sb.Append(',');&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sb.Append(r.ToString(Newtonsoft.Json.Formatting.None));&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; firstRow = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rowCount++;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // libera memoria del chunk&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rows.Clear();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GC.Collect();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GC.WaitForPendingFinalizers();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // 1) Se il polling ha fornito già il primo chunk in finalObj.result.data_array → usalo&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (finalObj["result"]?["data_array"] is JArray chunk0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AppendRows(chunk0);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Altrimenti: scarica il chunk 0&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var (ok0, rows0, err0) = FetchChunkRows(client, baseUrl, accessToken, statementId, 0);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!ok0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = err0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AppendRows(rows0);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // 2) Scarica e appende i chunk successivi (1..N-1)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; for (int i = 1; i &amp;lt; totalChunks; i++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var (ok, rows, err) = FetchChunkRows(client, baseUrl, accessToken, statementId, i);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!ok)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = err;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AppendRows(rows);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // Chiudi array e inserisci row_count&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; sb.Append("],\"row_count\":")&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; .Append(rowCount)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; .Append("}}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; // Assegna alla variabile di output richiesta&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; JSONOutput = sb.ToString();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; ErrorMessage = $"State: FAILED - Detail: {ex.Message} - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;finally&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; client?.Dispose();&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8e8901e4-0469-467c-ba32-ef8872e06bd4" name="baseUrl" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue xml:space="preserve"&amp;gt;&lt;A href="https://westeurope.azuredatabricks.net/api/2.0/sql/statements" target="_blank"&gt;https://westeurope.azuredatabricks.net/api/2.0/sql/statements&lt;/A&gt;&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="dccd3340-c59f-4c07-9cf0-6b2158a0b15c" name="accessToken" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="a37d696c-f22a-42d2-926e-972ba737ca40" name="warehouseId" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="bd29c410-6809-46ee-ba90-4913e5c23721" name="sqlQuery" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="23e4c765-3cad-483e-b764-22c0b9fa4986" name="Success" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="c9bef68e-b917-4f91-a8f3-850be2935e93" name="Error Message" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="a4f71191-c150-4bc5-a71c-1407b88ea104" name="JSONOutput" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="23680203-a356-4f4a-9aa5-11ec8d787164" name="Report" type="Collection"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="405" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;collection&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="2b95b981-f6a3-46d2-ac2f-c3bf37e109aa" name="Convert JSON" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="45" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="json" expr="[JSONOutput]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="dataTable" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;081c9bf2-4828-47ba-9f88-ee45a75f8735&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;dataTable = null;&lt;/DIV&gt;&lt;DIV&gt;dataTable = new DataTable();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dataTable = GenerateDataTableFromJson(json);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = true;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GC.Collect();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GC.WaitForPendingFinalizers();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GC.Collect();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; GC.WaitForPendingFinalizers();&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6f826340-a4b0-4a90-a21b-b7e83d2c3b64" name="Inputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="-45" w="150" h="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="7FB2E5" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="fc658c67-57fc-4741-81e3-420dee311aad" name="Local" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="165" w="150" h="150" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FFFF00" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="69e8baa0-51a9-4cb0-8102-628d715d54fd" name="Outputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="330" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FF00FF" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="3d0bd6c8-bfea-4f19-b1f0-17af6082fd95" name="FilepathXLSX" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6fce1fed-aed7-4be8-98a7-47cd4d387274" name="CreateExcel" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="4a1251fb-c3ba-49fa-82e5-4364fec79357" name="Create Excel" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="225" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="collection" name="DatatableResult" expr="[Report]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="Filepath" expr="[FilepathXLSX]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" expr="[SheetName]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;943d0920-2cf6-4da3-9b48-9a5af41f847f&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;DataTableToExcel exporter = new DataTableToExcel();&lt;/DIV&gt;&lt;DIV&gt;exporter.ExportToExcel(DatatableResult, Filepath, SheetName);&lt;/DIV&gt;&lt;DIV&gt;Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="3f15a13e-c6d9-4309-b03c-b84634339a44" name="[CreateExcel] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="165" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[CreateExcel] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;4a1251fb-c3ba-49fa-82e5-4364fec79357&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;aff1fb43-83dd-411b-895e-121a6e9aaa67&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="aff1fb43-83dd-411b-895e-121a6e9aaa67" name="Anchor1" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="165" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;de02cbf6-bc09-4036-9c44-61fe6f59330b&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7d038089-d0d0-47d6-9567-ff7fbd4e2ad2" name="Anchor2" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="345" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;6a16195e-41c8-4e52-8625-061243db0811&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8d301f0a-94c3-4852-a216-f252b27166c3" name="SheetName" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="120" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5555a2e6-2d06-4da2-b986-60516c04f8c4" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;2b95b981-f6a3-46d2-ac2f-c3bf37e109aa&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;25ddca11-d42c-4ac1-bfeb-590504da586b&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="081c9bf2-4828-47ba-9f88-ee45a75f8735" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;3f15a13e-c6d9-4309-b03c-b84634339a44&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;d9b92af7-75ca-4170-9a32-2981d266cc24&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="25ddca11-d42c-4ac1-bfeb-590504da586b" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;9708dd42-1db3-4ae3-809d-1513db8538f9&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in API Call: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d9b92af7-75ca-4170-9a32-2981d266cc24" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;5dc509e2-1dea-4ae3-ae96-918a7a64f060&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in JSON Conversion: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="943d0920-2cf6-4da3-9b48-9a5af41f847f" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="285" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;6a16195e-41c8-4e52-8625-061243db0811&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;fc1ca4c2-0045-4d9d-ad88-61abf950a75c&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="fc1ca4c2-0045-4d9d-ad88-61abf950a75c" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="285" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;de02cbf6-bc09-4036-9c44-61fe6f59330b&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in Create Excel: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="9708dd42-1db3-4ae3-809d-1513db8538f9" name="Anchor3" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="-15" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;5dc509e2-1dea-4ae3-ae96-918a7a64f060&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5dc509e2-1dea-4ae3-ae96-918a7a64f060" name="Anchor4" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="105" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;aff1fb43-83dd-411b-895e-121a6e9aaa67&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="de02cbf6-bc09-4036-9c44-61fe6f59330b" name="Anchor5" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;8e5d6e27-2067-4108-a3de-c6d32385476c&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="285" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;7d038089-d0d0-47d6-9567-ff7fbd4e2ad2&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8848462a-85fd-4a3a-bc39-15398ec8475f" name="Authentication" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7f4050b6-af0c-44aa-afa5-b7d0fd9f4f1c" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-135" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;8c424f0b-43e3-49bd-9deb-97c9e5ded003&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="aace0190-ea26-4a19-9ebe-9048a002664e" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="AccessToken" stage="AccessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="baa4ea76-41aa-46e6-8a66-4920d8f05d99" name="Inputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="-45" w="150" h="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="7FB2E5" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="0f8f7e0c-8f73-402c-9601-9443b4f6827e" name="Local" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="165" w="150" h="150" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FFFF00" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="7066e6a3-cb35-4561-bc57-fb6785819432" name="Outputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="330" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FF00FF" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="79280ca6-6232-452b-b7b2-8810f0ff1547" name="TenantID" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-15" w="120" h="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5e4e3fc9-859a-4eeb-b1bf-3cfedc42bb8a" name="ClientId" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="30" w="120" h="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="3b5f25be-6542-4ee9-aae5-7e8174743bb3" name="ClientSecret" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="75" w="120" h="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;password&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalueenc&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/initialvalueenc&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="8c424f0b-43e3-49bd-9deb-97c9e5ded003" name="Get Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="TenantID" expr="[TenantID]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="ClientId" expr="[ClientId]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="password" name="ClientSecret" expr="[ClientSecret]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="AccessToken" stage="AccessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;aace0190-ea26-4a19-9ebe-9048a002664e&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[&lt;/DIV&gt;&lt;DIV&gt;string tokenUrl = $"&lt;A href="https://login.microsoftonline.com/{TenantID}/oauth2/v2.0/token" target="_blank"&gt;https://login.microsoftonline.com/{TenantID}/oauth2/v2.0/token&lt;/A&gt;";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using (var httpClient = new HttpClient())&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var form = new FormUrlEncodedContent(new[]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("client_id", ClientId),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("client_secret", ClientSecret),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("grant_type", "client_credentials"),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Scope corretto per Azure Databricks (AAD resource + /.default)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new KeyValuePair&amp;lt;string, string&amp;gt;("scope", "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default")&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var resp = httpClient.PostAsync(tokenUrl, form).GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string body = resp.Content.ReadAsStringAsync().GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!resp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new Exception($"Token request failed ({resp.StatusCode}): {body}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var json = JObject.Parse(body);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string accessToken = json["access_token"]?.ToString();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(accessToken))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new Exception("access_token missing in token response");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AccessToken = accessToken;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="46d709ef-5c75-4394-83b0-78471c8c463a" name="AccessToken" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="4e76287c-26c7-45de-a165-1f3257d8760f" name="Execute Query - Using Token" type="SubSheetInfo"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-195" y="-105" w="150" h="90" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="2d3a1314-19e9-4398-9259-4ec602b70f7e" name="Start" type="Start"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-135" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="databricksUrl" stage="databricksUrl" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" stage="warehouseId" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" stage="sqlQuery" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="flag" name="CreateExcel" stage="CreateExcel" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="FilepathXLSX" stage="FilepathXLSX" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" stage="SheetName" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;33ac5062-313a-408b-a962-0eb8eab9b6a4&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d1c909a0-c003-41a6-8d16-835dcb19fd7c" name="End" type="End"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="405" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="Error Message" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="Report" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="753bbed9-7194-48db-86f7-2047f2dd218f" name="accessToken" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="74a6a9eb-ee35-4699-84ad-329239d1058f" name="warehouseId" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5e43ad48-cc52-41bb-89c4-6596788a19dd" name="sqlQuery" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d4f9c706-65f0-4c79-8779-a00d9d9529a3" name="Success" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="536e4740-8f66-4f28-b651-be23fdef263f" name="Error Message" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="360" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="4b5e9e32-cc4c-468a-b1d1-b96bdfab941f" name="JSONOutput" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="23766df5-bdba-449f-8d36-858278c8d97e" name="Report" type="Collection"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="405" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;collection&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="767269e4-2267-4297-a3c9-d97409e501de" name="Convert JSON Token NEW" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="json" expr="[JSONOutput]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="collection" name="dataTable" stage="Report" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d88bcda0-42b4-4302-ba8c-e642949c5a69&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;dataTable = null;&lt;/DIV&gt;&lt;DIV&gt;dataTable = new DataTable();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;dataTable = GenerateDataTableFromJson(json);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = true;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GC.Collect();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GC.WaitForPendingFinalizers();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GC.Collect();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; GC.WaitForPendingFinalizers();&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="33c5e16f-fa4e-4750-9e61-14e9f79eb243" name="Inputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="-45" w="150" h="195" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="7FB2E5" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ebf2fea7-8b77-44c8-a000-9038213e3e34" name="Local" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="165" w="150" h="150" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FFFF00" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="deb7307c-8680-4762-9dc1-5b7d5600729f" name="Outputs" type="Block"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-270" y="330" w="150" h="105" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;font family="Segoe UI" size="10" style="Regular" color="FF00FF" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5529a3ca-016c-44d8-94b1-56377f9b40fd" name="FilepathXLSX" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="5add693a-51ef-4f02-a9c8-633e927ee473" name="CreateExcel" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;flag&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue&amp;gt;False&amp;lt;/initialvalue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="61a50860-9a73-4cbd-8307-274af6b1cff2" name="Create Excel Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="285" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="collection" name="DatatableResult" expr="[Report]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="Filepath" expr="[FilepathXLSX]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="SheetName" expr="[SheetName]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d0c941a8-7e1a-4167-b165-ae1bae998acf&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;DataTableToExcel exporter = new DataTableToExcel();&lt;/DIV&gt;&lt;DIV&gt;exporter.ExportToExcel(DatatableResult, Filepath, SheetName);&lt;/DIV&gt;&lt;DIV&gt;Success = true;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Success = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ErrorMessage = ex.Message;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="e7d0172b-74d8-4261-a310-976261f28845" name="[CreateExcel] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="225" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[CreateExcel] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;61a50860-9a73-4cbd-8307-274af6b1cff2&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;e5242eaf-7df1-445a-be16-359ff2906db9&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="e5242eaf-7df1-445a-be16-359ff2906db9" name="Anchor1" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="225" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;6f7ea0aa-ca84-4bc5-b2cb-b00a3f5a11c1&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="c5eff911-30f7-4e00-bf78-bd2290970310" name="Anchor2" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="405" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;d1c909a0-c003-41a6-8d16-835dcb19fd7c&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d2f2e471-9a3f-4b66-b87a-c3d790bfbcb0" name="SheetName" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-165" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="ad69bfb0-e52b-47f0-a648-5f1e094fcf37" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="45" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;767269e4-2267-4297-a3c9-d97409e501de&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;c0a9ca49-ff4e-441d-9650-da100bcf6bad&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d88bcda0-42b4-4302-ba8c-e642949c5a69" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="165" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;e7d0172b-74d8-4261-a310-976261f28845&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;04d9f303-e399-4bb3-93fa-3ce536aa55a1&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="c0a9ca49-ff4e-441d-9650-da100bcf6bad" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="45" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;0f46bfec-9fc3-4b45-9073-b2a2feebbbe3&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in API Call: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="04d9f303-e399-4bb3-93fa-3ce536aa55a1" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="165" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;93dfc5a7-0afe-4188-9a40-fb7de4b3b993&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in JSON Conversion: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="d0c941a8-7e1a-4167-b165-ae1bae998acf" name="[Success] = True" type="Decision"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="345" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;decision expression="[Success] = True" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;ontrue&amp;gt;d1c909a0-c003-41a6-8d16-835dcb19fd7c&amp;lt;/ontrue&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onfalse&amp;gt;33d8e73b-b167-41a9-8606-25057a305ddc&amp;lt;/onfalse&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="33d8e73b-b167-41a9-8606-25057a305ddc" name="Set Error Message" type="Calculation"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="30" y="345" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;6f7ea0aa-ca84-4bc5-b2cb-b00a3f5a11c1&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;calculation expression="&amp;amp;quot;Error in Create Excel: &amp;amp;quot;&amp;amp;amp;[Error Message]" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="0f46bfec-9fc3-4b45-9073-b2a2feebbbe3" name="Anchor3" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="45" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;93dfc5a7-0afe-4188-9a40-fb7de4b3b993&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="93dfc5a7-0afe-4188-9a40-fb7de4b3b993" name="Anchor4" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="165" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;e5242eaf-7df1-445a-be16-359ff2906db9&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="6f7ea0aa-ca84-4bc5-b2cb-b00a3f5a11c1" name="Anchor5" type="Anchor"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="90" y="345" w="10" h="10" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;c5eff911-30f7-4e00-bf78-bd2290970310&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="10d34c6c-df8b-4d15-9a20-6ae62ee2bb83" name="Call API Token" type="Code"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-15" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="databricksUrl" expr="[databricksUrl]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="accessToken" expr="[accessToken]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="warehouseId" expr="[warehouseId]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" name="sqlQuery" expr="[sqlQuery]" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/inputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="flag" name="Success" stage="Success" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="ErrorMessage" stage="Error Message" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="JSONOutput" stage="JSONOutput" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;ad69bfb0-e52b-47f0-a648-5f1e094fcf37&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;code&amp;gt;&amp;lt;![CDATA[&lt;/DIV&gt;&lt;DIV&gt;// Assumo che tu abbia già queste variabili in scope:&lt;/DIV&gt;&lt;DIV&gt;// string databricksUrl;&amp;nbsp; &amp;nbsp; // es: "https://&amp;lt;workspace&amp;gt;/api/2.0/sql/statements"&lt;/DIV&gt;&lt;DIV&gt;// string accessToken;&amp;nbsp; &amp;nbsp; &amp;nbsp; // Bearer token del Service Principal&lt;/DIV&gt;&lt;DIV&gt;// string sqlQuery;&lt;/DIV&gt;&lt;DIV&gt;// string warehouseId;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Success = false;&lt;/DIV&gt;&lt;DIV&gt;ErrorMessage = "";&lt;/DIV&gt;&lt;DIV&gt;JSONOutput = "";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// == Impostazione opzionale ==&lt;/DIV&gt;&lt;DIV&gt;bool fetchAllChunks = true;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // true = unisce tutti i chunk; false = solo chunk 0&lt;/DIV&gt;&lt;DIV&gt;TimeSpan overallTimeout = TimeSpan.FromMinutes(10);&lt;/DIV&gt;&lt;DIV&gt;int delayMs = 500;&lt;/DIV&gt;&lt;DIV&gt;int maxDelayMs = 5000;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// --- Helper locali identici ai tuoi ---&lt;/DIV&gt;&lt;DIV&gt;string ExtractDetail(JObject j)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (j == null) return null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return (string)j["status"]?["error"]?["message"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["error"]?["message"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["status"]?["error"]?["code"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["error"]?["code"];&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;string ExtractSqlState(JObject j)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (j == null) return null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return (string)j["status"]?["error"]?["sql_state"]&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?? (string)j["error"]?["sql_state"];&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void BuildShortErrorFromHttp(string forcedState, HttpResponseMessage resp, string body, out string errorMessage)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; var stateLabel = string.IsNullOrWhiteSpace(forcedState) ? "FAILED" : forcedState;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string detail = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string sqlState = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; try&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var j = string.IsNullOrWhiteSpace(body) ? null : JObject.Parse(body);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; detail = ExtractDetail(j);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sqlState = ExtractSqlState(j);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; catch { /* ignore parse errors */ }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(detail))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; detail = $"HTTP {(int)resp.StatusCode} {resp.ReasonPhrase}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(sqlState))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sqlState = "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; errorMessage = $"State: {stateLabel} - Detail: {detail} - SQLSTATE: {sqlState}";&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;// --- Funzioni locali per i chunk ---&lt;/DIV&gt;&lt;DIV&gt;(bool ok, JObject resultObj, string err) FetchAndMergeChunks(&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; HttpClient httpClient,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string baseUrl,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; string statementId,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; int totalChunks,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; bool fetchAll)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; try&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var allRows = new JArray();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int chunksToFetch = fetchAll ? totalChunks : Math.Min(1, totalChunks);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; chunksToFetch; i++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var url = $"{baseUrl.TrimEnd('/')}/{statementId}/result?chunk_index={i}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var resp = httpClient.GetAsync(url).GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var body = resp.Content.ReadAsStringAsync().GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!resp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BuildShortErrorFromHttp("FAILED", resp, body, out var errMsg);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (false, null, errMsg);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject chunk = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try { chunk = JObject.Parse(body); } catch { }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (chunk == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (false, null, "State: FAILED - Detail: Impossibile interpretare la risposta dei risultati come JSON. - SQLSTATE: N/A");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var rows = (JArray)chunk["data_array"] ?? new JArray();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var r in rows) allRows.Add(r);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var resultObj = new JObject&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ["chunk_index"] = 0,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ["row_offset"] = 0,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ["row_count"] = allRows.Count,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ["data_array"] = allRows&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (true, resultObj, null);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return (false, null, $"State: FAILED - Detail: {ex.Message} - SQLSTATE: N/A");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;try&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; using (var httpClient = new HttpClient())&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 1) POST: crea statement (senza attendere)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var payload = new&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; statement = sqlQuery,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; warehouse_id = warehouseId,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wait_timeout = "0s",&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format = "JSON_ARRAY" // così hai data_array coerente col primo metodo&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var content = new StringContent(&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JsonConvert.SerializeObject(payload),&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Encoding.UTF8,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "application/json"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; );&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var postResp = httpClient.PostAsync(databricksUrl, content).GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var postBody = postResp.Content.ReadAsStringAsync().GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!postResp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BuildShortErrorFromHttp("FAILED", postResp, postBody, out ErrorMessage);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject postJson = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try { postJson = JObject.Parse(postBody); } catch { }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (postJson == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = "State: FAILED - Detail: Impossibile interpretare la risposta POST come JSON. - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var statementId = (string)postJson["statement_id"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var stateImmediate = (string)postJson["status"]?["state"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (string.IsNullOrEmpty(statementId))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Caso finale immediato&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!"SUCCEEDED".Equals(stateImmediate, StringComparison.OrdinalIgnoreCase))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var detail = ExtractDetail(postJson) ?? "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var sqlState = ExtractSqlState(postJson) ?? "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = $"State: {stateImmediate ?? "FAILED"} - Detail: {detail} - SQLSTATE: {sqlState}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Già completo → restituisco l'oggetto come nel primo metodo&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JSONOutput = postJson.ToString(Formatting.None);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 2) Polling fino a stato terminale&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var start = DateTime.UtcNow;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string finalState = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject finalStatement = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string[] terminal = { "SUCCEEDED", "FAILED", "CANCELED", "CLOSED" };&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (true)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var getUrl = $"{databricksUrl.TrimEnd('/')}/{statementId}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var getResp = httpClient.GetAsync(getUrl).GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var getBody = getResp.Content.ReadAsStringAsync().GetAwaiter().GetResult();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!getResp.IsSuccessStatusCode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BuildShortErrorFromHttp("FAILED", getResp, getBody, out ErrorMessage);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JObject getJson = null;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try { getJson = JObject.Parse(getBody); } catch { }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (getJson == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = "State: FAILED - Detail: Impossibile interpretare la risposta GET polling come JSON. - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalStatement = getJson;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var state = (string)getJson["status"]?["state"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!string.IsNullOrWhiteSpace(state) &amp;amp;&amp;amp; terminal.Contains(state.ToUpperInvariant()))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalState = state;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (DateTime.UtcNow - start &amp;gt; overallTimeout)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = $"State: FAILED - Detail: Polling scaduto dopo {overallTimeout.TotalSeconds:N0} secondi. - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Thread.Sleep(delayMs);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; delayMs = Math.Min(delayMs * 2, maxDelayMs);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 3) Esito finale&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!"SUCCEEDED".Equals(finalState, StringComparison.OrdinalIgnoreCase))&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var detail = ExtractDetail(finalStatement) ?? "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var sqlState = ExtractSqlState(finalStatement) ?? "N/A";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = $"State: {finalState} - Detail: {detail} - SQLSTATE: {sqlState}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 4) Recupero risultati e innesto in finalStatement&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JToken resultToken = finalStatement["result"];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Quanti chunk ci sono?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int totalChunks = 1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; totalChunks = (int?)finalStatement["manifest"]?["total_chunk_count"] ?? 1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch { /* ignore */ }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (resultToken == null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Non c'è result nello statement → scarico i chunk e UNISCO&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var (ok, resultObj, err) = FetchAndMergeChunks(httpClient, databricksUrl, statementId, totalChunks, fetchAllChunks);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!ok)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = err;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalStatement["result"] = resultObj;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // C'è già result nello statement.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Se vuoi essere sicuro di avere TUTTO, e ci sono più chunk, li recupero e unisco.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (fetchAllChunks &amp;amp;&amp;amp; totalChunks &amp;gt; 1)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Riparto da zero e unisco tutti i chunk (più semplice e robusto)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var (ok, resultObj, err) = FetchAndMergeChunks(httpClient, databricksUrl, statementId, totalChunks, fetchAllChunks);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!ok)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ErrorMessage = err;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalStatement["result"] = resultObj;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Allineo counters (opzionale)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var dataArray = finalStatement["result"]?["data_array"] as JArray;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (dataArray != null)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalStatement["result"]["row_count"] = dataArray.Count;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalStatement["result"]["chunk_index"] = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finalStatement["result"]["row_offset"] = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch { /* ignore */ }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 5) OUTPUT: restituisco lo statement completo (come nel primo metodo)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JSONOutput = finalStatement.ToString(Formatting.None);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Success = true;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;catch (Exception ex)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; Success = false;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; ErrorMessage = $"State: FAILED - Detail: {ex.Message} - SQLSTATE: N/A";&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;]]&amp;gt;&amp;lt;/code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="cb0efb85-278a-4cf1-a80d-b99a7b2439f8" name="databricksUrl" type="Data"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;narrative&amp;gt;&lt;A href="https://adb-&amp;amp;lt;workspace-id&amp;amp;gt;.&amp;amp;lt;region-shard&amp;amp;gt;.azuredatabricks.net/api/2.0/sql/statements" target="_blank"&gt;https://adb-&amp;amp;lt;workspace-id&amp;amp;gt;.&amp;amp;lt;region-shard&amp;amp;gt;.azuredatabricks.net/api/2.0/sql/statements&lt;/A&gt;&amp;lt;/narrative&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-225" y="30" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;datatype&amp;gt;text&amp;lt;/datatype&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;initialvalue /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;private /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;alwaysinit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;stage stageid="33ac5062-313a-408b-a962-0eb8eab9b6a4" name="Authentication" type="SubSheet"&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;subsheetid&amp;gt;fa900c6f-ef74-4b80-a2e5-f70e341de476&amp;lt;/subsheetid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;loginhibit /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;display x="-60" y="-75" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;output type="text" name="AccessToken" friendlyname="AccessToken" stage="accessToken" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/outputs&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;onsuccess&amp;gt;10d34c6c-df8b-4d15-9a20-6ae62ee2bb83&amp;lt;/onsuccess&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;processid&amp;gt;9cb7bf9b-8ba4-45f2-b334-fc34ba39707a&amp;lt;/processid&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;/process&amp;gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 21 Jan 2026 09:51:01 GMT</pubDate>
      <guid>https://community.blueprism.com/t5/Product-Forum/Databricks-API-JSON-Result-to-Collection/m-p/124479#M54337</guid>
      <dc:creator>simone.tomaCNH</dc:creator>
      <dc:date>2026-01-21T09:51:01Z</dc:date>
    </item>
  </channel>
</rss>

