NAV Objects in NAV 2013 with NAV 2015 PowerShell Commendlets
You can view NAV specific development commandlets by launching the development shell. To launch the Microsoft Dynamics NAV Development Shell, look for either the “Microsoft Dynamics NAV Development Shell” or the “Microsoft Dynamics NAV 2015 Development Shell” on the start menu. You will need to have the Development Environment (C/SIDE) option as part of your NAV install.Â
Dynamics NAV 2015’s Development Shell now includes 6 new PowerShell Functions:Â
Function   Compile-NAVApplicationObject
Function   Create-NAVDatabase
Function   Delete-NAVApplicationObject
Function   Export-NAVApplicationObject
Function   Import-NAVApplicationObject
Function   Invoke-NAVDatabaseConversion
NOTE: The files referenced in this discussion are included toward the end of the document.
Figure 1 – New Power Shell functions included in Microsoft Dynamics NAV 2015’s Development Shell
Those functions don’t exist in the 2013 or 2013 R2 Development Shell.
Figure 2 – View of function list from previous versions of Microsoft Dynamics NAV Development Shell
It turns out these are PowerShell functions that utilize the finsql.exe export/import/compile/create database commands.
In his blog posting, Merging Application Objects using Windows PowerShell in Microsoft Dynamics NAV 2015, Morten Jensen talks a little about these new function “wrappers”.
Finsql.exe
Finsql.exe commands for reference:Â
Microsoft Dynamics NAV 2013 / NAV 2013 R2
Development Environment Commands for Microsoft Dynamics NAV 2013
Microsoft Dynamics NAV 2015
Development Envrionment Commands for Microsoft Dynamics NAV 2015
Ready to backport?Â
Copy Microsoft.Dynamics.Nav.Ide.psm1 from a Dynamics NAV 2015 Install to your Dynamics NAV 2013 R2 directory.
FROM HERE: C:Program Files (x86)Microsoft Dynamics NAV80RoleTailored Client
TO HERE: C:Program Files (x86)Microsoft Dynamics NAV71RoleTailored Client
Open Microsoft.Dynamics.Nav.Ide.psm1 with a text editor or the PowerShell ISE.
First we need to update the $RtcKey. Update the Paths to Reflect a 2013 or R2 registry path.
Figure 3a – Comparison showing path differences for NAV 2013
Figure 3b – …vs NAV 2015
The NAV 2013 or 2013 R2 finsql.exe does not have a command parameter for skipping unlicensed objects. This will need to modified so the eventual $command variable does not include the ExportTxtSkipUnlicensed parameter.Â
#Original
#$command = “Command=ExportObjects`,ExportTxtSkipUnlicensed=$skipUnlicensed`,File=`”$Path`””
#New
$command = “Command=ExportObjects`,File=`”$Path`””
Figure 4 – Modifying the command line parameter
Now find C:Program Files (x86)Microsoft Dynamics NAV71RoleTailored ClientMicrosoft.Dynamics.Nav.Model.Tools.psd1
Change this line:Â # NestedModules = @()
To this: NestedModules = @( ‘Microsoft.Dynamics.Nav.Ide.psm1’)Â
Figure 5 – Modifying the value for NestedModules
If we’ve edited everything correctly you should now have the new 2015 functions in your 2013/R2 Development Shell!
Figure 6 – Figure showing that the new Dynamics NAV 2015 functions are now available in the Dynamics NAV 2013/R2 Development Shell
Why are these PowerShell functions so neat? I can export out an entire Demo database’s objects and split into individual files in under a minute with a command line this:Â
Import-Module "${env:ProgramFiles(x86)}Microsoft Dynamics NAV80RoleTailored ClientMicrosoft.Dynamics.Nav.Model.Tools.psd1" -force Export-NAVApplicationObject C:ObjectExportAllObjects.txt -DatabaseServer 'localhost' -DatabaseName 'Demo Database NAV (8-0)' | Split-NAVApplicationObjectFile -Destination C:ObjectExport
Automating your common NAV development tasks can be a huge time saver.
Download the Files
I’ve included my files. I’ve also commented out two functions that aren’t supported with NAV 2013 finsql.exe commands.Â
Microsoft.Dynamics.Nav.Ide.psm1 <- from 2015 contains the PowerShell wrapper functions. Microsoft.Dynamics.Nav.Model.Tools.psd1 <- Modified to import Microsoft.Dynamics.Nav.Ide.psm1 Execute Export-NAVApplicatonObject.ps1 <- My test of the functions on my 2013 R2 database. NOTE: ArcherPoint is delighted to offer tips to developers throughout the NAV community, but code samples are not warranted, as all installations are different. It is advised that the developer verify that the solutions work for his or her installation of Dynamics NAV before implementing the code.
If you have any further questions about this or other development questions, please contact one of our development experts at ArcherPoint. If you liked this, check out our collection of Development Blogs.