NAVCore Objects Manager
Introduction

This is a simple tool for transferring and comparing customized, Dynamics NAV objects, from the Development to the Test and Production environments.  It can be used by Customers and Developers alike.

For Customers, this will simplify the learning curve and make it easier to transfer development objects to the Production environment, without having to involve their Microsoft Partners, when testing is complete.  It will retain the versions to allow customers to easily revert should there be a problem with the change. They do not need to use the NAV Development Environment but it does need to be installed on their system.  They do not need the Object Development license to move or restore objects, however, the code comparison feature will require it.

For Developers, this can save them a tremendous amount of time when moving modifications from the Development to the Test environments, especially when the changes involve multiple objects.  On average, it can take 20-30 seconds to export the object from the development environment, switch to, then import into the test environment.  That's for each object, and it must be in the right order as well.  If, for example, a new field or function was added to a table or codeunit and is subsequently referenced by a page or even another table or codeunit, an import will result in an error if the objects were not imported in the right order.  This means the developer must switch back, import the required object, then re-import the affected object.  Imagine having to do this multiple times, throughout the day, when coding and testing developments!
When modifying multiple objects, it's easy to lose track of the objects that need to be transferred. With this tool, developers can quickly and easily tell what needs to be transfered by using the Date Mismatched filter.

Initial Setup

Before it can be used, you must set the required settings.

Connection - All databases must be located on the same server.
  • SQL Server - The server where the databases reside.
  • Username/Password - The user account with Super User access to the databases.
  • Use trusted connection - The current Windows user account must have Super User access to the databases.
Database
  • Development - This is the database where the object modifications occur. All object transfers will be from this database to the selected database.
  • Test - This is optional and is applicable only if you have a test environment that's separate from your development environment. When you have multiple developers, this is recommended to avoid overlapping changes that can hinder production roll-outs.
  • Production - This is the database where the live/production data resides. Anytime an object is transferred to this database, a version copy will be created for safekeeping and reverting, in the event of an error.
Path
  • Storage Path - The path where the files outputted by this application will reside. To keep the size small, all versions of the same object are compressed into a single zip file.
  • .TXT Export - Set this path if the database does not have the license to directly export the objects to a text (.txt) file for text comparison. You will need to manually export the object(s) to this path. This is generally used by outside developers who temporarily changes the license in the IDE. The expected file names are Development.txt and Production.txt, which corresponds with the databases, respectively. All objects from the same database should be combined into a single export file, however, keep in mind that the more objects there are, the longer it will take to load a comparison.
    Only compare objects from the export files. - Set this option to force the application to only read from the export files, never the database, when loading object information and for doing text comparisons. Object transfers will always take the current object from the Development database to transfer to the database of your choice.
  • NAV finsql.exe - In order to transfer objects, this is a required application and is essentially your NAV Development Environment (IDE). This application does not interact with NAV directly but instead will use NAV’s IDE to import and/or export objects from the Development DB to the Test or Production DB. If not found, try installing the development IDE on your machine.
Preference
  • Number of Versions to Save - This tells the application how many different copies of the object you want to keep, when transferring from the Development to the Production environment. The version is based on the object's Modified date, therefore, all transfers that happen on the same date, for the same object, will only count as 1 copy.
  • Version List Contains - Optionally set this value to always limit the list of objects that are returned, on the grid or in a drop-down list, to those that contains this value in the object's Version List. This is especially useful for developers to limit the list to objects they've worked on, assuming they've add their initials to it.
Settings Zoom In
Main Form

This is where you will be able to see everything at a glance. From here, you can easily see what objects have been modified and what's pending a transfer.

Show Please note, if loading from an export file, only objects that exists in the export will be shown.
  • All - Show all objects.
  • Modified - Show objects that have the Modified flag checked.
  • Date Mismatched - Show objects that has a different modification date between the Production and Development environments, regardless of the Modified flag.
Type The type of objects to show.
ID or Name Limit the list to objects that contain this number in the ID or text in the Name.
Refresh Refresh the contents of the grid.
Export Save the list of objects to an Excel spreadsheet.
Compare Opens the Comparison window to compare and review differences between the Production and Development environment code, for the selected object.
Transfer Opens the Object Transfer window, where you can compare and review differences, prior to transferring the objects from the Development environment to the Production or Test environment.
Backup Opens the Backup window, where you can initiate a backup of All or just Modified Objects.
Settings Opens the Settings window, where you can set your preference and the required settings.
About Opens the About window, where you can review and upload your Objects Manager license.
Main Form Zoom In
Context Menu Right-click anywhere on the grid to bring up the context menu. The Transfer and Compare buttons are identical to the ones on the form. Use the Create NAV Filter option to create a text filter that can be applied to the NAV Development Environment's ID - Field Filter. Be sure to select the correct Type. If you use All, the objects listed in the IDE may not exactly match the list of objects on the form. The reason is because of the objects that share the same ID. Use this as an easy way to filter the IDE to list only the objects you're interested in exporting for comparisons.
Zoom In
Comparing Objects
Production A text export of the object from the Production environment. The date on this line is indicative of the of the object's modified date from this file.
Development A text export of the object from the Development environment. The date on this line is indicative of the of the object's modified date from this file.
Type The type of object.
Name The object name. Typically, there should only be one. However, if the chosen file contains more than 1 object, you'll be able to choose from the dropdown list, the specific object to load and compare.
Navigating Differences
  • With the built-in comparison tool, quickly see differences highlighted in red for deleted text or green for inserted text. This is especially useful for detecting unexpected changes in either a multi-developer environment or when updates have been applied to the replacement but not the development object.
  • Use the arrow keys Left and Right to navigate, respectively, between the Previous and Next differences.
  • The text will change to bold and blue to indicate the difference that was encountered. The highlight color will remain the same so we can tell whether they are deleted or inserted texts.
  •  Hide Deleted Text - Check this box and all the deleted texts will be hidden.
  • Show Differences Only - Click this button and the application will remove all matching texts, leaving only the differences, to help you quickly review and see the changes. However, please note that matching text lines that precedes or follows lines that have differences are retained to help you identify the location of the difference.
Finding Text
  • Switch to the Find tab, enter a text to find and click on the Find button. If the text was found, then a set of navigation buttons will appear.
  • The navigation buttons under the Find text tab works similarly to when you navigate differences.
  • Matching texts that are found will be highlighted.
Configuration Zoom In
Transferring Objects
Type Select the type of object to transfer and the application will automatically detect and load all objects in the Development environment that has a modification date greater than those of the Production environment's into the Object ID drop-down list.
Environments Choose the environment to do a comparison or transfer to. The Test Environment is optional and is enabled only if the database setting is set.
Object ID A list of objects that are pending transfers, based on the Type selected. You may choose from the list or enter a valid Object ID that does not have to be in the list.
Compare Extract object code from the Development Environment and compare it to the respective object of the selected Test/Production Environment. At the same time, the application will detect and extract the differences within the object's Documentation section, for a quick overview of documented changes.
Transfer Runs the NAV finsql.exe command line tool to first export the object from the Development environment and then, import the object into the selected environment. If the selected environment is Production, then a version copy from the Production environment will be saved, prior to the import. When transferring to the Test environment, the operation will be immediate. When transferring to the Production environment, you’ll get a prompt to be extra certain, before the application will proceed. Upon a successful operation, you’ll get the message Import Succeeded. If an error occurs, the application will automatically revert to the object to the state it was in.
Refresh Objects Refresh the Object ID list.
Version
  • This application can keep as many historical versions of the object as you see fit. You can set the amount under Settings > Preferences.
  • New versions are saved only when transferring to the Production environment.
  • To keep it clean, versions are based on the Modified date. For example, if you modified and transferred the object to the production environment in the morning but later found a bug in the afternoon, which you immediately fixed and did another transfer; Instead of creating a new version of the object for that day, the existing version for that date is overwritten.
Documentation Changes & Comments This area is read-only and shows only the differences between the Production and Development environment's documentation area. It is populated when you click on Compare. For comments that you may need but do not want to be part of the code documentation, add it to the Additional Comments textbox. This will be retrieved when reviewing from the Version selection.
Navigating Differences
  • With the built-in comparison tool, quickly see differences highlighted in red for deleted text or green for inserted text. This is especially useful for detecting unexpected changes in either a multi-developer environment or when updates have been applied to the replacement but not the development object.
  • Use the arrow keys Left and Right to navigate, respectively, between the Previous and Next differences.
  • The text will change to bold and blue to indicate the difference that was encountered. The highlight color will remain the same so we can tell whether they are deleted or inserted texts.
  •  Hide Deleted Text - Check this box and all the deleted texts will be hidden.
  • Show Differences Only - Click this button and the application will remove all matching texts, leaving only the differences, to help you quickly review and see the changes. However, please note that matching text lines that precedes or follows lines that have differences are retained to help you identify the location of the difference.
Finding Text
  • Switch to the Find tab, enter a text to find and click on the Find button. If the text was found, then a set of navigation buttons will appear.
  • The navigation buttons under the Find text tab works similarly to when you navigate differences.
  • Matching texts that are found will be highlighted.
Transferring Objects Zoom In
Backup

Even though there are version backups when transferring the objects, it's still important to create backups of the object before any type of modification. This is in case the object was updated without using this tool or when accidentally working in the Production environment. Indeed you can pull this from the database backup but imagine how hard it is to extract from that backup. You can easily export All or just the Modified objects from the IDE to a single fob file as well but imagine how long that may take, not to mention, you can't easily keep the separate versions. With our built-in backup tool, it may take awhile to run the first time, but after that, it will only pick out the objects that have changed since the last backup and save a separate version of that object. It will not overwrite the original backup, instead, it will create a new backup, specifically for the date the object was modified.

Note: This does not backup the data, only the codes.

All Objects Select this option to backup all objects.
Modified Objects Select this option to backup only objects that have the Modified flag checked.
Transferring Objects Zoom In
About
License This area will show the individual and/or company this tool has been licensed to, the type of license, and the number of authorized users.
Upload a License Click this to browse for and upload a new license.
Transferring Objects Zoom In