Monday, January 6, 2020

The metadata object Table was not found - Error during Data Upgrade To NAV 2013, NAV 2013R2 & NAV 2015.

Hi Readers,

In Archerpoint we would like everyone using NAV / Business Central in the community to be Stay Current, which means stay on the latest and greatest version of the product.

We are upgrading one of the customers to the latest and greatest version to Business Central 2019 Wave 2 from NAV 2009 with multiple companies.

This article applies if you are Upgrading to #NAV2013, #NAV2013R2 & #NAV2015.

Everything was working fine till we started data upgrade to NAV 2015 from NAV 2009. During Data Upgrade to NAV 2015 system generated error message.


To check the issue, we ran Powershell cmdlet Get-NAVDataupgrade with parameter ErrorOnly.



Error - The Metadata object Table 10141 was not Found.

Reason Behind Error Message - 

It seems the customer had to delete some tables in the past and add-ons. The tables that were deleted had some data in Ledger Entry Dimension or Posted Document Dimension or other dimension records.

During Data Upgrade, when the upgrade toolkit tries to convert old dimension entries to Dimension Set ID system generated error message because the table was not found in the database.

First Fix - 
We checked the table in the Dimension Tables and deleted records for table number listed in error message. That worked fine but then another table and then another table.

And then I decided to fix it for once so it does not appear again during this migration.

Where is the code segment which generates this error message?

After analysis we found out that error is generated from -
Codeunit 104049 UpgradeDimensionEntry, 
Function - UpdateParentTable.

System Read the Parent Table number where Dimension Set ID should be updated from SQL and store in variable ParentTableID2 as shown below.


So Saurav What is the Fix?

Oh, it was quite easy!

Get Table number that is returned via SQL and store in ParentTableID2 and check that exist or not. If exist then let the upgrade process continue.

Let's create a function that accepts a Table Number and check table existence in Object Table.



And then call this function in UpdateParentTable function as shown below.


Hope this article helps you when you have to do a legacy migration.

I am loving it while doing a legacy migration and bringing our customer to the latest and greatest version of the #Msdyn365BC. There is a lot to learn in the past.

Let me know your views as a comment on this article.

Regards,
Saurav Dhyani
www.sauravdhyani.com

No comments:

Post a Comment

Popular Posts