<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Eduardo Silva Rossi</title>
    <description>The latest articles on DEV Community by Eduardo Silva Rossi (@edoardu).</description>
    <link>https://dev.to/edoardu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1198591%2F76851fc1-4107-4092-aeed-8d29f57a8b36.jpeg</url>
      <title>DEV Community: Eduardo Silva Rossi</title>
      <link>https://dev.to/edoardu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/edoardu"/>
    <language>en</language>
    <item>
      <title>Fix "The permission 'KILL DATABASE CONNECTION' is not supported in this version of SQL Server" while importing a D365FO .bacpac</title>
      <dc:creator>Eduardo Silva Rossi</dc:creator>
      <pubDate>Mon, 27 May 2024 02:58:30 +0000</pubDate>
      <link>https://dev.to/edoardu/fix-the-permission-kill-database-connection-is-not-supported-in-this-version-of-sql-server-while-importing-a-d365fo-bacpac-4k81</link>
      <guid>https://dev.to/edoardu/fix-the-permission-kill-database-connection-is-not-supported-in-this-version-of-sql-server-while-importing-a-d365fo-bacpac-4k81</guid>
      <description>&lt;p&gt;Recently, while making a copy of production database to my development environment, I came across an unusual error when importing the .bacpac file using &lt;a href="https://learn.microsoft.com/en-us/sql/tools/sqlpackage/sqlpackage-download?view=sql-server-ver16" rel="noopener noreferrer"&gt;SqlPackage&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;*** Error importing database: Could not import package.                                   
Error SQL72014: Core Microsoft SqlClient Data Provider: Msg 4630, Level 16, State 1, Line 1 The permission 'KILL DATABASE CONNECTION' is not supported in this version of SQL Server. Alternatively, use the server level 'ALTER ANY CONNECTION' permission.
Error SQL72045: Script execution error.
The executed script: GRANT KILL DATABASE CONNECTION TO [ms_db_configreader];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After some digging, I was abble to resolve the problem following the solution below.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution
&lt;/h2&gt;

&lt;p&gt;This solution will help you to edit &lt;strong&gt;model.xml&lt;/strong&gt; file contained inside the package and remove/replace the KILL ANY CONNECTION statement.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make a backup of your original .bacpac package.&lt;/li&gt;
&lt;li&gt;Go to your package in File Explorer and change his file extension from .bacpac to .zip. The renamed file should look like this:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.licdn.com%2Fdms%2Fimage%2FD4D12AQG7lxJZh90pOQ%2Farticle-inline_image-shrink_1500_2232%2F0%2F1715184158161%3Fe%3D1722470400%26v%3Dbeta%26t%3DqOOFwgVtGAzn3-MnJ_AoRpwDPeasV5UwIx_RWDNOLO4" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.licdn.com%2Fdms%2Fimage%2FD4D12AQG7lxJZh90pOQ%2Farticle-inline_image-shrink_1500_2232%2F0%2F1715184158161%3Fe%3D1722470400%26v%3Dbeta%26t%3DqOOFwgVtGAzn3-MnJ_AoRpwDPeasV5UwIx_RWDNOLO4" alt="Renamed .bacpac package."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now you can open the renamed package and extract the model.xml file into another folder:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.licdn.com%2Fdms%2Fimage%2FD4D12AQF2KrNqlNRUrQ%2Farticle-inline_image-shrink_1500_2232%2F0%2F1715184194484%3Fe%3D1722470400%26v%3Dbeta%26t%3D8J5TmitRNPUmcD69Es_dsxvBNwB81ZwxbBQO9UAptDQ" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.licdn.com%2Fdms%2Fimage%2FD4D12AQF2KrNqlNRUrQ%2Farticle-inline_image-shrink_1500_2232%2F0%2F1715184194484%3Fe%3D1722470400%26v%3Dbeta%26t%3D8J5TmitRNPUmcD69Es_dsxvBNwB81ZwxbBQO9UAptDQ" alt="Modify this model.xml file."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the &lt;strong&gt;model.xml&lt;/strong&gt; file with Notepad or another text editor and search for "&lt;strong&gt;Grant.KillDatabaseConnection.Database&lt;/strong&gt;".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.licdn.com%2Fdms%2Fimage%2FD4D12AQFKmSRs8c6qIA%2Farticle-inline_image-shrink_1500_2232%2F0%2F1715184349304%3Fe%3D1722470400%26v%3Dbeta%26t%3DfO3x6sBIbmh1-XjdF9Rz1JKG-AV70EkKFnRrUxlYry4" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.licdn.com%2Fdms%2Fimage%2FD4D12AQFKmSRs8c6qIA%2Farticle-inline_image-shrink_1500_2232%2F0%2F1715184349304%3Fe%3D1722470400%26v%3Dbeta%26t%3DfO3x6sBIbmh1-XjdF9Rz1JKG-AV70EkKFnRrUxlYry4" alt="Search for these SQL permission statement elements."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The search should return one or more &lt;strong&gt;SqlPermissionStatement&lt;/strong&gt; elements. You can remove¹ these elements from the &lt;strong&gt;model.xml&lt;/strong&gt; file.&lt;/li&gt;
&lt;li&gt;After this, save and close the modified &lt;strong&gt;model.xml&lt;/strong&gt; file.&lt;/li&gt;
&lt;li&gt;Then copy and replace the modified &lt;strong&gt;model.xml&lt;/strong&gt; into the zipped package and change the package file extension from .zip to .bacpac again. Your files should look like this:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.licdn.com%2Fdms%2Fimage%2FD4D12AQGQkyFLUzt_vA%2Farticle-inline_image-shrink_1500_2232%2F0%2F1715184392375%3Fe%3D1722470400%26v%3Dbeta%26t%3Ds_vFlW_q4HAnuaTdd-gQYFwkHKVaisW4dKTbCHA6tKQ" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.licdn.com%2Fdms%2Fimage%2FD4D12AQGQkyFLUzt_vA%2Farticle-inline_image-shrink_1500_2232%2F0%2F1715184392375%3Fe%3D1722470400%26v%3Dbeta%26t%3Ds_vFlW_q4HAnuaTdd-gQYFwkHKVaisW4dKTbCHA6tKQ" alt="The .bacpac package and modified model.xml we'll use."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here comes the fun part, usually you would have to extract the package completely, modify the model.xml file, generate a new checksum, update the &lt;strong&gt;Origin.xml&lt;/strong&gt; file with the new checksum value and then compress the package again.&lt;/p&gt;

&lt;p&gt;Instead, you can skip all this work by using the &lt;a href="https://learn.microsoft.com/en-us/sql/tools/sqlpackage/sqlpackage-import?view=sql-server-ver16" rel="noopener noreferrer"&gt;SqlPackage import&lt;/a&gt; parameter &lt;strong&gt;/ModelFilePath&lt;/strong&gt; (/mfp):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.\sqlpackage.exe /a:import /sf:"C:\Users\localadmin\Desktop\Goldenbackup.bacpac" /mfp:"C:\Users\localadmin\Desktop\model.xml" /tsn:localhost /tdn:AxDB_fromGolden  /ttsc:true /p:CommandTimeout=0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Parameters description:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;/sf&lt;/strong&gt;: put your .bacpac package file path here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;/mfp&lt;/strong&gt;: overrides the model.xml in the source file with the modified model.xml.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now the .bacpac package will be imported successfully. 😊&lt;/p&gt;

&lt;h2&gt;
  
  
  Final considerations
&lt;/h2&gt;

&lt;p&gt;¹ Instead of removing the &lt;strong&gt;SqlPermissionStatement&lt;/strong&gt; elements, you can also replace the permission "&lt;strong&gt;Grant.KillDatabaseConnection.Database&lt;/strong&gt;" with "&lt;strong&gt;Grant.AlterAnyConnection.Database&lt;/strong&gt;".&lt;br&gt;
² This solution also solves the error "&lt;strong&gt;Operation Failed: File contains corrupted data&lt;/strong&gt;" while importing a .bacpac package in SSMS.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>d365fo</category>
      <category>sqlpackage</category>
      <category>erp</category>
    </item>
    <item>
      <title>How to resolve budget ledger dimension in X++/D365 F&amp;O</title>
      <dc:creator>Eduardo Silva Rossi</dc:creator>
      <pubDate>Tue, 05 Mar 2024 01:43:56 +0000</pubDate>
      <link>https://dev.to/edoardu/how-to-resolve-budget-ledger-dimension-in-xd365-fo-50ge</link>
      <guid>https://dev.to/edoardu/how-to-resolve-budget-ledger-dimension-in-xd365-fo-50ge</guid>
      <description>&lt;p&gt;Sometimes we get a requirement to create Budget register entries by X++ code and moments later we realize that the usual methods of creating ledger dimensions used for ledger journals doesn't work in this scenario.&lt;/p&gt;

&lt;p&gt;This happens because budget and ledger accounts have different sets of ledger dimensions based on defined Budgeting module parameters &lt;code&gt;(Budgeting/Setup/Basic budgeting/Budgeting dimensions)&lt;/code&gt;. In this case we should resolve our ledger dimension using the code bellow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Args&lt;/span&gt; &lt;span class="n"&gt;_args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;BudgetAccountContract&lt;/span&gt; &lt;span class="n"&gt;budgetAccountContract&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;BudgetAccountContract&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="n"&gt;budgetAccountContract&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parmValues&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Types&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Class&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="n"&gt;budgetAccountContract&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parmAccountStructure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;Manufacturing&lt;/span&gt; &lt;span class="n"&gt;P&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;DimensionAttributeValueContract&lt;/span&gt; &lt;span class="n"&gt;dimensionAttributeValueContract&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;dimensionAttributeValueContract&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DimensionAttributeValueContract&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;construct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;MainAccount&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mi"&gt;607200&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;budgetAccountContract&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parmValues&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;addEnd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dimensionAttributeValueContract&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;dimensionAttributeValueContract&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DimensionAttributeValueContract&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;construct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;BusinessUnit&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mo"&gt;002&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;budgetAccountContract&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parmValues&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;addEnd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dimensionAttributeValueContract&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;dimensionAttributeValueContract&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DimensionAttributeValueContract&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;construct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;Department&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mo"&gt;022&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;budgetAccountContract&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parmValues&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;addEnd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dimensionAttributeValueContract&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;BudgetDimensionCombinationServiceProvider&lt;/span&gt; &lt;span class="n"&gt;budgetDimensionServiceProvider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;BudgetDimensionCombinationServiceProvider&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;newForBudgetAccountContract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;budgetAccountContract&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;DimensionStorageResult&lt;/span&gt; &lt;span class="n"&gt;dimensionStorageResult&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;budgetDimensionServiceProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dimensionStorageResult&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parmInvalidValue&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;Error&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;resolving&lt;/span&gt; &lt;span class="n"&gt;ledger&lt;/span&gt; &lt;span class="n"&gt;dimension&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strFmt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;Budget&lt;/span&gt; &lt;span class="n"&gt;LedgerDimension&lt;/span&gt; &lt;span class="n"&gt;RecId&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dimensionStorageResult&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parmSavedRecId&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With a ledger dimension display value string the solution is even shorter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="n"&gt;BudgetAccountDimensionResolver&lt;/span&gt; &lt;span class="n"&gt;budgetAccountDimResolver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;BudgetAccountDimensionResolver&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;newResolver&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mi"&gt;607200&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;002&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;022&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;Manufacturing&lt;/span&gt; &lt;span class="n"&gt;P&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;DimensionDynamicAccount&lt;/span&gt; &lt;span class="n"&gt;ledgerDimension&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;budgetAccountDimResolver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>erp</category>
      <category>d365fo</category>
      <category>xpp</category>
      <category>dynamicsax</category>
    </item>
    <item>
      <title>How to fix Dynamics AX 2012 R3 when the time is 1 hour ahead when not using daylight savings time</title>
      <dc:creator>Eduardo Silva Rossi</dc:creator>
      <pubDate>Fri, 16 Feb 2024 16:31:06 +0000</pubDate>
      <link>https://dev.to/edoardu/how-to-fix-dynamics-ax-2012-when-the-time-is-1-hour-ahead-when-not-using-daylight-savings-time-1i0p</link>
      <guid>https://dev.to/edoardu/how-to-fix-dynamics-ax-2012-when-the-time-is-1-hour-ahead-when-not-using-daylight-savings-time-1i0p</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;In 2020 I wrote this article in another platform telling how to fix a time zone problem in Dynamics AX 2012 R3 when a country changes its daylight savings time legislation. Recently, I noticed that some people experiencing the same problem in other countries so I decided to share this fix again here in DEV community.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;On the second half of 2019 the brazilian government changed his timezone rules for the first time in several years. From that year on, daylight savings time would no longer be implemented in the national territory.&lt;/p&gt;

&lt;p&gt;Given this situation, in a customer with &lt;strong&gt;Dynamics AX 2012 R3&lt;/strong&gt; we had some problems like transaction time one hour ahead in forms and reports and the inability to cancel an invoice within 1 hour of its posting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some context
&lt;/h2&gt;

&lt;p&gt;In Dynamics AX 2012, time zones are defined in the system table &lt;code&gt;TimeZoneRulesData&lt;/code&gt; (&lt;strong&gt;AOT/System Documentation/Tables/ TimeZoneRulesData&lt;/strong&gt;). This table contains data like the difference in minutes between a local time zone and the time zone &lt;strong&gt;(GMT) UTC+0&lt;/strong&gt; (&lt;code&gt;BIAS&lt;/code&gt; column), and also the difference in minutes that should be applied if the timezone has daylight savings time (&lt;code&gt;DBIAS&lt;/code&gt; column), when this difference should be applied and others.&lt;/p&gt;

&lt;p&gt;Note that the &lt;code&gt;DBIAS&lt;/code&gt; column keeps the difference in minutes that should be applied in daylight savings time, so in time zones where the time is regressed by 1 hour this column will have the value of &lt;strong&gt;-60&lt;/strong&gt; as we can see in the result of the SQL statement bellow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;TOP&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;RULEID&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="p"&gt;,[&lt;/span&gt;&lt;span class="n"&gt;TZENUM&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="p"&gt;,[&lt;/span&gt;&lt;span class="nb"&gt;YEAR&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="p"&gt;,[&lt;/span&gt;&lt;span class="n"&gt;BIAS&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
      &lt;span class="p"&gt;,[&lt;/span&gt;&lt;span class="n"&gt;DBIAS&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;DAX12_DATABASENAME&lt;/span&gt;&lt;span class="p"&gt;].[&lt;/span&gt;&lt;span class="n"&gt;dbo&lt;/span&gt;&lt;span class="p"&gt;].[&lt;/span&gt;&lt;span class="n"&gt;TIMEZONESRULESDATA&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
 &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;TZENUM&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt; &lt;span class="c1"&gt;--Timezone::GMTMINUS0300BRASILIA enum value&lt;/span&gt;
   &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="nb"&gt;YEAR&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2020&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fln9fagp5cib0phuhkoza.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fln9fagp5cib0phuhkoza.png" alt="Result of the SQL statement above" width="292" height="95"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to fix
&lt;/h2&gt;

&lt;p&gt;To prevent this behavior we need to run a simple SQL code to update the &lt;code&gt;DBIAS&lt;/code&gt; column to zero in our related timezone:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;DAX12_DATABASENAME&lt;/span&gt;&lt;span class="p"&gt;].[&lt;/span&gt;&lt;span class="n"&gt;dbo&lt;/span&gt;&lt;span class="p"&gt;].[&lt;/span&gt;&lt;span class="n"&gt;TIMEZONESRULESDATA&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
   &lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;DBIAS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
 &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;TZENUM&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt; &lt;span class="c1"&gt;--Timezone::GMTMINUS0300BRASILIA enum value&lt;/span&gt;
   &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="nb"&gt;YEAR&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;2020&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After we run the update above we need to restart the DAX12 AOS service for the fix take effect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://microsoft-dynamics-ax-erp.blogspot.com/2012/12/timezone-system-enumeration.html"&gt;Here&lt;/a&gt; you can find the complete Timezone enumeration and its values.&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/dynamicsax-2012/developer/time-zone-overview-and-terminology"&gt;Dynamics AX 2012 Time Zone docs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>erp</category>
      <category>dynamicsax2012</category>
      <category>timezone</category>
      <category>xpp</category>
    </item>
  </channel>
</rss>
