Upgrade



UPGRADE NAV 4.0 TO NAV 2016


Basically Upgrade involve 2 steps:
1) Data Upgrade

2)Application Object Upgrade




1.Data Upgrade

i)Nav 4.0/Nav 5.0 to Nav 2009
ii)Nav 2009 to Nav 2013/2013 R2/2015
iii)Nav 2013/2013 R2/2015 to Nav 2016

Before Data Upgrade:

i)Compile all Objects

ii)Goto file -> Database -> Information

Click Tables -> Test



iii)If you are using Classic Client then you need to migrate to SQL
Classic to Sql Migration Steps:

i)You import the objects available in NAV 2009 setup file
\UpgradeToolKit\SQL Migration\Migrate.fob

ii)Run the Object Codeunit 104010
if system throw any permission error change the drive C:\ to Some other Drive eg (d:\)
iii)Import the object d:\FIELDCHK.TXT , Compile and Run Object Codeunit 104015
Resolve the errors if any.

take backup (.fbk)

Create a New database in SQL and restore the backup.
SQL Migration is done!!!!



Upgrade NAV (4.0/5.0) TO NAV 2009

Upgrade NAV 2009 TO NAV 2015

Upgrade NAV 2015 TO NAV 2016



Data Upgrade Error's


iii)If your database is NAV 2009 then
Go File -> Database Alter -> In integration Tab disable all maintain views,maintain relationships & maintain defaults.


If not then system will throw the below error:


ERROR

---------------------------

Microsoft Dynamics NAV Development Environment
---------------------------
Before you can convert this database, you must use an older version of Microsoft Dynamics NAV Development Environment to disable the database Integration settings for 'Maintain views', 'Maintain relationships', and 'Maintain defaults'. To access these settings, on the File menu, click Database, and then click Alter.
---------------------------
OK  




If you hit the below Error then run the Query

---------------------------
Microsoft Dynamics NAV Classic
---------------------------
The following SQL Server error or errors occurred when accessing the G/L Entry table:
3728,"42000",[Microsoft][ODBC SQL Server Driver][SQL Server]'$ndodefault$965994918$1' is not a constraint.
3727,"42000",[Microsoft][ODBC SQL Server Driver][SQL Server]Could not drop constraint. See previous errors.

SQL:
ALTER TABLE "CRONUS2013R2"."dbo"."cronus2013$G_L Entry" DROP  CONSTRAINT "$ndodefault$965994918$1", CONSTRAINT "$ndodefault$965994918$3", CONSTRAINT "$ndodefault$965994918$4", CONSTRAINT "$ndodefault$965994918$5", CONSTRAINT "$ndodefault$965994918$6", CONSTRAINT "$ndodefault$965994918$7", CONSTRAINT "$ndodefault$965994918$10", CONSTRAINT "$ndodefault$965994918$17", CONSTRAINT "$ndodefault$965994918$23", CONSTRAINT "$ndodefault$965994918$24", CONSTRAINT "$ndodefault$965994918$27", CONSTRAINT "$ndodefault$965994918$28", CONSTRAINT "$ndodefault$965994918$29", CONSTRAINT "$ndodefault$965994918$30", CONSTRAINT "$ndodefault$965994918$41", CONSTRAINT "$ndodefault$965994918$42", CONSTRAINT "$ndodefault$965994918$43", CONSTRAINT "$ndodefault$965994918$45", CONSTRAINT "$ndodefault$965994918$46", CONSTRAINT "$ndodefault$965994918$47", CONSTRAINT "$ndodefault$965994918$48", CONSTRAINT "$ndodefault$965994918$49", CONSTRAINT "$ndodefault$965994918$50", CONSTRAINT "$ndodefault$965994918$51", CONSTRAINT "$ndodefault$965994918$52", CONSTRAINT "$ndodefault$965994918$53", CONSTRAINT "$ndodefault$965994918$54", CONSTRAINT "$ndodefault$965994918$55", CONSTRAINT "$ndodefault$965994918$56", CONSTRAINT "$ndodefault$965994918$57", CONSTRAINT "$ndodefault$965994918$58", CONSTRAINT "$ndodefault$965994918$59", CONSTRAINT "$ndodefault$965994918$60", CONSTRAINT "$ndodefault$965994918$61", CONSTRAINT "$ndodefault$965994918$62", CONSTRAINT "$ndodefault$965994918$63", CONSTRAINT "$ndodefault$965994918$64", CONSTRAINT "$ndodefault$965994918$65", CONSTRAINT "$ndodefault$965994918$68", CONSTRAINT "$ndodefault$965994918$69", CONSTRAINT "$ndodefault$965994918$70", CONSTRAINT "$ndodefault$965994918$71", CONSTRAINT "$ndodefault$965994918$72", CONSTRAINT "$ndodefault$965994918$73", CONSTRAINT "$ndodefault$965994918$74", CONSTRAINT "$n
---------------------------
OK

Solution:
http://naviart.ru/fix-ndodefault-constraint


DECLARE @Old_Name   VARCHAR(100),
        @New_Name   VARCHAR(100),
        @ParentID   VARCHAR(100),
        @i          INT 

DECLARE Cur_constr CURSOR LOCAL FAST_FORWARD READ_ONLY TYPE_WARNING
FOR
    SELECT [name], CAST ([parent_object_id] AS VARCHAR)
    FROM   [sys].[default_constraints]
    WHERE  NAME LIKE '$ndodefault$%$%'
           AND [is_system_named] = 0
    ORDER BY
           parent_object_id

OPEN  Cur_constr
FETCH NEXT FROM Cur_constr INTO @Old_Name , @ParentID                       
SET @i = 0
DECLARE @SQL_Expr AS nVARCHAR(MAX)
WHILE @@Fetch_Status = 0
      AND @i < 200000
BEGIN
    SET @New_Name = '$ndodefault$' + @ParentID + SUBSTRING(@Old_Name,
    CHARINDEX('$', @Old_Name, 13), LEN(@Old_Name))
    IF @Old_Name <> @New_Name
    BEGIN
        SET @i = @i + 1
        SET @SQL_Expr = ' EXEC sp_rename ' + QUOTENAME(@Old_Name) + ', '
        + QUOTENAME(@New_Name) + '; Print '  + CAST(@i AS nVARCHAR)
        EXEC sp_executesql @statement = @SQL_Expr
           
        --PRINT @SQL_Expr
        --PRINT 'GO'
    END

    FETCH NEXT FROM Cur_constr INTO @Old_Name , @ParentID


END





iv)Use Windows Login
Error "table data 2000000120 does not exist"
Error occurs if I trying to convert nav 2009 database to nav 2013.
Solution:Use windows authentication instead of database authentication for converting the database




Error:
---------------------------
Microsoft Dynamics NAV Classic
---------------------------
The Temp Windows Login already exists.
Identification fields and values:
User ID=''
---------------------------
OK  
Solution: Delete all the windows user except the current user





Make sure that the value of primary key does not include spaces.It will hit error
Sales header No. does not exists.





---------------------------
Microsoft Dynamics NAV Development Environment
---------------------------
The C.E. Commissionerate field with 16525 ID in the Location table has been deleted from metadata, but the table contains data in the cronus2009 database.
---------------------------
OK  
Solution:Add field lengh in customized object


---------------------------
Microsoft Dynamics NAV
---------------------------
The following SQL error was unexpected.
Cannot drop the index 'dbo.cronus$Prod_ Order Line.$13', because it does not exist or you do not have permission.
The index '$10' is dependent on column 'Cost is Adjusted'.
ALTER TABLE DROP COLUMN Cost is Adjusted failed because one or more objects access this column.

---------------------------
OK  
SOLUTION:Assign db_owner roles to user from sql server



After creating instance
Go to services
Change the Navision service instance log on account to windows user account .



While updating with this document http://blogs.msdn.com/b/nav/archive/201 ... 13-r2.aspx


in step 9b you need to import all new 2013R2 objects.fob.


Below are some of the messages I got and below it I added the solution to solve it. Hope it helps someone else.

---------------------------
The Description field with 11 ID in the Sales Invoice Line table has been deleted
from metadata, but the table contains data in the ... database.
---------------------------
Table: 113

Solution: The length of Field 11 was set to 250 in 2009 by the partner, but in NAV2013R2 the length is 50

---------------------------
The field Aantal with ID 50020 in the table Sales Cr.Memo Line cannot be deleted
or changed because the field contains data in the ... database of the ... company.
---------------------------
Table: 115

Solution: Field 50020 didn't exist in the new prepared 2013R2 code (mistake)


---------------------------
The field Update BizTalk Partner Setup with ID 80 in the table VAT Rate Change Setup cannot be deleted
or changed because the field contains data in the .... database of the ... company.
---------------------------
Table: 550

Solution: Field 80 didn't exist in the new prepared 2013R2 code.
But this table doesn't exist in the original NAV2009R2 Base database too..? So was a new field in NAV2013??


---------------------------
The Description field with 12 ID in the To-do table has been deleted from metadata,
but the table contains data in the ... database.
---------------------------
Table: 5080

Solution: The length of Field 12 was set to 75 in 2009 by the partner, but in NAV2013R2 the length is 50

---------------------------
The operation could not complete because a record in the Access Control table was locked by another user. Please retry the activity.
---------------------------

Solution: Compile some other objects first (disregard the errors), then do the import of 100 objects. In batches it will work.




Error:


Either the caller does not have the required permission or the specified path is read-only.
Hi all,

Sometime while trying to connect to Role tailored client we face an error message which says this -

    "Either the caller does not have the required permission or the specified path is read-only."

and it looks like -

This can happen with NAV 2009 & later.

Reason -
The reason for error is that the user have not sufficient rights on the service tier or i can say on the service folder in Server.

Resolution -
1) Go to service folder in the server.
2) Right click and select properties.
3) Navigate to security Tab.
4) Click Edit.
5) see user by which you are trying to connect is there, if not add it.
6) If exist check for the permissions in below box.
7) In both the cases assign permission to user.
8) Apply and ok.
9) Restart the service.
10) Connect to RTC Client.



---------------------------
Microsoft Dynamics NAV
---------------------------
The server "CRONUS" was unable to process the request. The application will close.
---------------------------
OK  






Microsoft Dynamics NAV
---------------------------

Dimension Value ID must have a value in Dimension Set Entry: Dimension Set ID=0, Dimension Code=SALESPERSON. It cannot be zero or empty.
---------------------------
OK
---------------------------

Solution: It mean a table eg:Ledger entry dimension contains invalid data.

---------------------------
Microsoft Dynamics NAV Classic
---------------------------
The following SQL Server error or errors occurred when accessing the Ledger Entry Dimension table:
1204,"HY000",
[Microsoft][ODBC SQL Server Driver][SQL Server]The instance of the SQL Server Database Engine cannot obtain a LOCK resource at this time.
Rerun your statement when there are fewer active users.
Ask the database administrator to check the lock and memory configuration for this instance, or to check for long-running transactions.
---------------------------
OK  
---------------------------
Solution: If you are running a Batch report then filter data in part wise or increase the RAM

Error:
The Object table contains a Microsoft Dynamics NAV Development Environment field data type that is not compatible with the SQL Server data type.
Field : Version List
Type: Text 248
SQL type : VARCHAR(80)
Solution:Platform hotfix is applied. You are trying to open with previous build It can be open with latest version.

Or
Open SQL Mng. Studio, the following
   alter table dbo.[Object]
   alter column [Version List] varchar(248)

2.Application Object Upgrade

Automatic Compare - Merge

Compare and Merge Objects Using PowerShell :

Let's Say
1)  Original Database   - NAV 2016 CU 4
2)  Modified Database - Customized NAV 2016 CU 4
3)  Target Database – NAV 2016 CU 13


Create four folders named as Original, Modified, Target, and Result. say in  E:\ Drive
Export the objects in the respective folders in .txt format (with any file name)


Open PowerShell in Run using the command Powershell_ISE



Execute the below commands one by one.



Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force

Import-Module "C:\Program Files\Microsoft Dynamics NAV\90\Service\NavAdminTool.ps1" –Force

Import-Module "C:\Program Files (x86)\Microsoft Dynamics NAV\90\RoleTailored Client\Microsoft.Dynamics.Nav.Model.Tools.psd1" -force

Merge-NAVApplicationObject -ModifiedPath "E:\Modified" -OriginalPath "E:\Original" -ResultPath "E:\Result" -TargetPath "E:\Target" -Confirm


In Result Folder system will create 3 folders.

ConflictModified
ConflictOriginal
ConflictTarget

You need to merge only conflict objects manually by using compare tool. 

copy and rethe manually merged objects in E:\Result\ folder.

below command help you to Join All the objects .
Join-NAVApplicationObjectFile -Destination "E:\Result\AllObject.txt" -Source "E:\Result\*.txt" -Force

Make sure that you have imported correct license file.
Create a Instance for Nav 2016 CU 13 and Import the AllObject.txt object to your Database.
Compile All Objects
Modify the Version List / Date & Time manually if required.

Done!!!!

Manual

You need to compare and merge the older version object to New Version object.For this you need the below tools

1)Object Splitter

2)Merge Tool:

Tables,Codeunit:

Microsoft Standard Object + Customized

Use Merge tool  for Comparing and merging.

Fully Customized object upgrade(ID:50000.....)

Run CMD as Administrator
Execute the below command
E:\NAV 7.0 (2013) - AU.1184330.DVD\NAV 7.0 (2013) - AU.1184330.DVD\UpgradeToolKit\Object Change Tool
s>TextFormatUpgrade2013.EXE "E:\OLD.TXT"





After Successful execution system will create folder with name Converted with same file name inside the folder.




Import the object.
Done.!!!

Forms to Pages.

Microsoft Standard Object + Customized

You can do by it comparing the standard object with customized standard object using compare it tool and add apply the changes manually to latest version.

Fully Customized object upgrade (ID:50000....)

We can transform the Forms of earlier version (4.0,5.0,6.0) to pages by using transformation tool.
Follow the below steps:


i)If you want to transform the form older than nav 6.0 version then use a Demo Database NAV (6-0) for this process.
ii)Export the forms which you want to transform to page and import in Demo Database NAV (6-0)
iii)Use Transformation Tool available in  NAV 2009 Setup file ->TransformationTool Folder

  • Export the forms to this folder and give the name as forms.xml
  • Run the Microsoft.Dynamics.Nav.Tools.FormTransformation Application
  • System will generate the pages.xml file
  • Import this pages.xml file in Demo Database NAV (6-0) database.
iv)Export the pages which were created to .txt format and Import in the latest version.


Error:Server page is already Open.


If you see this error Go to the subform and change the page property ->PageType -> Listpart
Done!!!










 

2 comments:

  1. Really helpful and informative blog to me. As we are also using Microsoft Dynamics Navision to develop ERP application.
    Thanks for sharing!

    ReplyDelete