Advertisements

Future of Navision is extensions V2?

With the release of Dynamics 365 Business Central a successor of Dynamics NAV, things are going to change. If I am not wrong from year 2020 Modern Development Environment will be the only platform available to developers.

In every NAV upgrades biggest challenge was customizations, since objects are fully accessible to developers, so we customize the solution as we want as a developer spreading unstructured, difficult to maintain, customized code everywhere and in all objects.

The beauty of product is, it is totally customizable and adaptable to customer’s business. Customizing Navision is easy and quick to deploy. C/AL is easy to learn and code.

Due to these heavy customizations and unstructured codes upgrade to new version of the product required long time and efforts. Hard to merge, too much efforts leading to high cost, usually many customer prefer to stay with their current version, and miss new capabilities of product available in future versions of Navision.

With release of NAV 2016 concept of extension was introduced. This introduced the concept of writing code isolated from the core objects and use events to interact with the standard codes. Now create the extension that can be installed or uninstalled any time without affecting the original base layer of the product. We call it extension V1.

These were also developed using C/AL and deployed using PowerShell. But still it always felt like something is missing. Then last year Microsoft came up with release NAV 2018 which introduced second generation of extension, we call it extensions V2.

This introduced completely new development platform based on Visual Studio Code Modern Development Environment. It uses new AL language an evolution of C/AL. Now this will be the future.

Dynamics 365 Business Central platform (on-premise and SaaS) uses this development model. Probably this will be the only development platform available from year 2020.

In Business central base application is now an entire extension based with some system objects in CSIDE, In future release you may not have any more side by side development, you will only be having AL and extensions.

 

So what next?

 

  • We should now concentrate on learning VS Code and AL as in future this will be the only way to modify the application.
  • Now we need to make our self-familiar with the Web Client as Windows Client will be obsolete soon.
  • We should start moving our all customization to extensions.
  • Now we should start thinking in direction of AL type customization rather than old C/AL type coding practice.

 

What do you think?

I will come up with more details as progress in this direction. Till then keep learning and sharing with others.

 

 

 

Advertisements

Extensions 2.0 – Dynamics Navision 2018

The issue with customizations is that they often introduce challenges when upgrading. It’s hard to upgrade a solution from one version to the next when changes have been made to the underlying solution. Extensions, and the new version – Extensions 2.0 – solves this problem.

Instead of defining customizations in the original source code, extensions are written alongside the solution source, where the integration with the source is handled with events. An extension can add new objects and extend existing objects that are present in the solution. The extension code is packaged in a file, which you can deploy to your solution. This allows us to upgrade the underlying solution and, as long as the events remain, the extension will behave in the same way from version to version.

To help you developing solutions for this new programming pattern, you can use the new developer tools to build, test, and deploy extensions.

 

In app designer

In the client, you can switch to the in app designer mode that provides a way for you change the look and feel of the client easily and quickly. In short, the in-client designer lets you define what elements (such as fields, groups) appear on a page and how they are arranged. The in-client designer also provides an interactive way to create extensions based on changes you make in the client. Some of the features include:

  • Adding a field from the source table to a page.
  • Moving a field to another place on a page.
  • Removing a field from a page.
  • Previewing your design in desktop, tablet, and phone clients.
  • Saving the changes for the tenant or saving as an extension package file in Visual Studio Code.
  • Changing the caption of a fields on the page.
  • Adding, moving, renaming, and removing an action.
  • Adding, moving, and removing page parts.
  • Adding new pages.

 

Personal and organizational design changes

As an end user, changes can be applied so that only the user who made the changes will see them. This enables users to personalize the pages for their role. Examples of personalization could include moving important fields to a more prominent position on the page, or renaming a date field so that it is clearer which field is the ship date versus the expected arrival date. Alternatively, as an administrator, changes can be made globally, so that everyone in the organization can see them.

Business consultants can also access the same tools to help customers make changes to their solution, resulting in improvements in productivity for all users. For example, they could add new actions to run custom reports, or introduce entirely new pages or page parts.

 

Working with the In App Designer

To turn on the In-App Designer, start the client as normal, and then simply choose the In-App designer icon in the ribbon on any page in the client.

 

ExtV2-1

The Design mode bar appears at the top page, indicating that the in-client designer is active. You can now open any page, and start making changes.

ExtV2-2

Choose More to display additional design options, such as adding a field, creating a new field, and changing the preview to another client type.

ExtV2-3

 

ExtV2-4

To move a field, click and hold the handle in the field to drag and drop it from its current position to the new location, as indicated by the horizontal line.

ExtV2-5

To remove a field, click the field’s handle, and then choose Remove.

ExtV2-6

To add a field, choose the Field button, and then drag and drop a field from the list that appears to the desired location.

ExtV2-7

To preview in another client type, simply choose one of the preview buttons.

When you are finished making changes, choose Stop Designing. You then have the option to save the changes to the tenant for all users, or to save the changes to a file that you can work on later in Visual Studio Code.

ExtV2-8

You can see that Extension is deployed on your solution, check as below.

ExtV2-9

Hope you will enjoy using this new feature of development.

Will come with more details as I proceed.

Configuring Visual Studio Code to Use Modern Development Environment with Dynamics NAV 2018

After installing Dynamics NAV 2018, I want to configure Visual Studio Code with Dynamics NAV to use new Development tool.

Before we start lets verify few things and update accordingly.

NDE-1

You can download VS Code from here:-Click to download Visual Studio Code

Install and Launch the Visual Studio Code.

Now Click View -> Extensions.

NDE-2

Click on … to open the extension menu.

Click on Install from VSIX

NDE-3

You can find VSIX file on the installation medium path:

“ModernDev\program files\Microsoft Dynamics NAV\110\Modern Development Environment”

or in the

“C:\Program Files (x86)\Microsoft Dynamics NAV\110\Modern Development Environment”

NDE-4

This will install AL Language Version 0.12.15355

NDE-5

Once the Extension installation is complete, follow below steps

Press Alt+A, Alt+L to trigger the Go! Command

NDE-6

Enter Project Name and Press Enter

NDE-7

Choose “Your own server”

Once you select the “Your own server” you will see a code like below in the “launch.json” file.

NDE-8

Update the information to look similar to below:-

NDE-9

I have updated my ServerInstance as DynamicsNAV110 (you check your instance name if changed while installing server)

I have updated my Authentication as Windows (I am using Windows authentication update what yours use accordingly)

I have added Port as 8049 (please check and use accordingly you are using the port, if using default 7049 then this step not required)

Now save your File. And Press <CTRL + F5>.

NDE-12

Enter your Credentials.

The server url and the web client url are assumed to be the same. That is not the case. The two settings we talked about above, the server url and the developer port number, are the only settings you need in the launch.json.

When VS Code publishes the extension to the NAV server, the NAV server returns the web client url as a response. This url is then opened in the browser. No setting needed in the launch.json at all.

The NAV server reads that setting from the Web Client Base Url server setting.

NDE-13

NDE-11

Your Extension is published, you can verify as below:

NDE-10

Now you are good to go with developing your Extensions using New Modern Development Tool using AL.

I hope this may have clarified your doubt on how VS Code and the NAV server work together!

I will come with more details as I proceed.

New Changes or features for Developer and IT Pro Changes in Microsoft Dynamics NAV 2017

Although it is too early to discuss on features and capabilities which we are going to get in our new release, we should wait for exact information post release of same.

Here are few extracts from available documents pre-release of the product.

You will find most of the features similar to which we have discussed in our earlier posts for Madeira Preview Project.

New thing is capability of extensions and Web Services are enhanced and programmatically handling Notifications.

 

Extensions

Dynamics NAV 2017 includes many new capabilities for Extensions:

  1. You can now include reports, XMLports, and queries in your extension along with new custom report templates.
  2. Default or initial data for new tables as part of your extension. These data will be included in the package file (.navx) and inserted into the table at the time of installation of the extension.
  3. You can include translated captions and constants for one or more languages by including object language files in the extension package.
  4. A translation only extension could be built that translates strings for base objects or objects for another extension.
  5. You can include and deploy .NET interop types executed on the server, client-side JavaScript or WinForms extensibility control add-ins.
  6. Extension can include a web service and configure it for the tenant the extension is being installed for in a multitenant deployment.
  7. Two new C/AL functions NAVAPP.RESTOREARCHIVEDATA and NAVAPP.DELETEARCHIVEDATA, you can easily restore or delete archived table data during a reinstall or upgrade of the extension.
  8. Use the NAVAPP.RESTOREARCHIVEDATA function to simply copy the data back from the archive table when special upgrade logic is not required.
  9. Use the NAVAPP.DELETEARCHIVEDATA function in situations where you do not want to restore the archived data for the table.
  10. You can publish an extension to a Dynamics NAV Server instance that is configured with an Azure SQL Database using new parameters added to the Publish-NAVApp cmdlet. The new parameters are used to provide the location and credentials for connecting to an existing Azure SQL database you created.
  11. Users with the appropriate permissions in the application can install and uninstall extensions from the Extensions Management page. The page will display all of the extensions that are currently published.

 

Web Services in multitenant deployments

You can publish per-tenant web services in situations where a web service has not been published for all tenants of the service.

You can also package and deploy published web services for base objects or extension objects in an extension.

The packaged web services will be published to the tenant for which the extension is being installed.

 

Notifications in the UI

Dynamics NAV 2017 introduces a programmatic way to send non-intrusive notifications to the UI in the Dynamics NAV Web client.

Notifications provide users with information about a current situation, but do not require any immediate action or block users from continuing with their current task.

In the UI, notifications appear in the Notification bar (similar to validation errors) at the top of the page on which a user is currently working.

Notifications that are defined on sub-pages, for example in parts and FactBoxes, appear in the same Notification bar.

Validation errors on the page will be shown first.

In the development environment, you create notifications in C/AL by using the newNotification and NotificationScope data types and the following functions.

  1. MESSAGE specifies the content of the notification that appears in the UI
  2. SCOPE specifies the scope in which the notification appears, which can be LocalScope or GlobalScope.
  3. A LocalScope notification appears in context of what the user is currently doing, while GlobalScope notifications are not directly related to the current task. Note: GlobalScope is currently not supported.
  4. SEND sends the notification to be displayed by the client.
  5. ADDACTION adds an action on the notification. Actions enable you to create interactive notifications that provide users with different actions that they can take to address the notification, like opening an associated page for modifying data. A notification action calls a function in a codeunit that you define, passing the notification object in the call. You then add business logic to the function for handling the action.
  6. SETDATA and GETDATA set and retrieve a data property value for the notification, which is typically needed when actions are invoked.

The following example illustrates the simplified code for local scope notification that has an action:

VAR

CreditBalanceNotification@1170000000 :Notification;

PROCEDURECreditBalanceCheck@1170000023(Customer@1170000000 : Record 18);

BEGIN

//Create the notification

CreditBalanceNotification.MESSAGE(‘Thecustomer”s current balance exceeds

their credit limit’);

CreditBalanceNotification.SCOPE :=NOTIFICATIONSCOPE::LocalScope;

//Add a data property for the customernumber

CreditBalanceNotification.SETDATA(‘CustNumber’,Customer.”No.”);

//Add an action that calls the ActionHandler codeunit, which you define  in the next step.

CreditBalanceNotification.ADDACTION(‘Gohandle this’,

CODEUNIT::NavExtensionInstallationMgmt, ‘OpenCustomer’);

//Send the notification to the client.

CreditBalanceNotification.SEND;

END;

In the “Action Handler” codeunit, you would add code to handle the action in a global function, called OpenCustomer, which has a Notification data type parameter. You could use the GETDATA function to get the value of the data sent with the notification:

PROCEDUREOpenCustomer@1170000024(theNotification@1170000000 :

Notification);

VAR

CustNo@1170000001 : Code[20];

BEGIN

// Do the code to handle the action.Optionally retrieve data carried by

the notification.

CustNo :=theNotification.GETDATA(‘CustNumber’);

// …

END;

 

Setup data in the US version

The US version of Dynamics NAV 2017 includes two RapidStart packages that will enable a fast implementation for a new company.

These data packages come with a new Windows PowerShell script to upload to server – and can be enabled for new companies.

Create a new company in the Companies page, and choose the Enable assisted setup field.

Then, use the Import-NAVConfigurationPackageFile cmdlet to import the RapidStart packages.

Then open the new company, the packages are applied, and you will be taken through an assisted setup experience.

 

Application area tagging

The Application Areas system offers developers, administrators, and users the ability to define differentiated user experiences according to application scope.

By selecting a set of application areas, users only see UI elements that are specific to the application features that they need to perform their tasks.

When companies want to create differentiated user experiences, the Application Areas system should be considered as an option not compulsory to adopt.

 

Time series library

One of the most popular topics for machine learning is forecasting based on historical data.

Many algorithms are there that can do this, but you do not have to know them, because MS have wrapped them for us.

Five of these algorithms, are wrapped in one Azure ML experiment, added logic that compares different results and returns the best one accompanied by an indicator of the prediction’s quality.

There is also a generic API on top of this that allows Dynamics NAV developers create their own functionality that helps customers find the business-critical information that may be hidden in their database.

You can perform time-series analysis in the familiar development environment.

The time series library is used by the Sales and Inventory Forecast extension.

 

Source:- https://mbs.microsoft.com/Files/partner/NAV/Readiness_Training/ReadinessTrainingNews/WhatsNewDynamicsNAV2017LimitedBeta.pdf

I will come up with more details in my upcoming posts.

 

 

New Changes or features for Application Users in Microsoft Dynamics NAV 2017

Although it is too early to discuss on features and capabilities which we are going to get in our new release, we should wait for exact information post release of same.

Here are few extracts from available documents pre-release of the product.

You will find most of the features similar to which we have discussed in our earlier posts for Madeira Preview Project.

 

Incoming documents

New modification to the list of incoming documents. Now it will have filtered view, a new field Processed is added, and now by default filter is applied to show only unprocessed incoming documents in the list.

However you can choose to still view all incoming documents in the list using the show Show All action.

When documents are posted, the processed flag is set to Yes, such that incoming documents that have been processed into posted documents are filtered out.

Capability is added to manually switch the Processed flag.

Now OCR supports for document extracting line details, when we send PDF or image files on incoming documents to Lexmark ICS, the 3rd-party provider of OCR services.

You can now create purchase invoices with multi-line details.

Now you can easily correct OCR errors before receiving the document and at the same time configure the service to avoid the known errors in future.

You can use the new Lexmark ICS online experience to visually train and validate the OCR processing of PDF and image files for incoming documents, such as vendor invoices.

From each incoming document record, you can now link directly to the online extracted document to validate the OCR result and train the service with your corrections.

A new Role Center Cue will give users capability to monitor incoming documents that await your OCR validation.

 

 

Inventory Items

Item attributes similar to one we saw in Madeira.

Capability to add attributes to your inventory items will make it easy for you to find the right product that your customer wants by filtering on attributes.

You can define your own attribute types, such as Base Material, Colour, Size, or other product dimensions, and attach to your items as a supplement to the built-in item attribute types and values.

When you access your items on documents or list, you can view and filter on the attribute values to limit the list of items.

By using Categorize items you can create a hierarchy of item categories and assign item attributes to each item category.

When you add items to a category, they will inherit the default attributes on the category.

This will ensures to have a common set of attributes on related items, will speed up the assignment of attributes to similar items, and allow filtering and navigating related items easily based on the category.

 

 

Smarter sales and purchase documents

Now you can cancel posted sales and purchase credit memos in the same way like you can do for posted sales and purchase invoices.

After performing this action you will find the credit memo is unapplied from the invoice and creates a new invoice that is applied to the credit memo.

This action will bring you to the earlier position where you created the credit memo. (Like Undo)

Package Tracking No. and Shipping Agent Code on sales invoices Posted sales invoices now show the package tracking number and the shipping agent code by default.

 

Account Categories in the Chart of Accounts

A new capability is added as account categories and sub categories.

Now you can group G/L Accounts to adjust your need for financial reporting.

For each G/L account, now you can specify the account category so that when ledger entries are posted to these accounts they are categorized as per your category.

For each account category, you can now choose from different sub-categories, even you can also create new sub-categories as per your need.

For example, for the G/L account category Expense, you can define as many sub-categories as you need so that you can differentiate between Expenses on different sources.

 

 

Payment reconciliation

The Payment Reconciliation journal now will show you total outstanding transactions and outstanding payments.

From there itself you can now look up the list of documents that have not been applied or used in the reconciliation process.

You can now also choose to include outstanding payments and outstanding transactions information in the Payment Reconciliation report.

 

Jobs

Project Manager Role Center

A new project manager field is added to the Job Card in order to give users clear sense of job ownership.

A new list My Jobs list is added on the Project Manager Role Center which will display jobs with the status of Order by default based on the new project manager field as discussed above.

If a person is assigned as the project manager to 5 jobs and those jobs have the On Order status, those 5 jobs will default on the My Jobs list on the Project Manager Role Center.

A new cue is added to the Project Manager Role Center to Create Job Sales Invoice, so now users will have quick access to this functionality.

On the Project Manager Role Center a new drop down list for Job Reports has been added to the Actions ribbon.

Job cost

A new fact box will be available to the right side of the Job Card to display the job’s cost information.

Now the term Contract is renamed as Billable throughout the Jobs module.

On the Job Card the Allow Schedule/Billable lines and Apply Usage Link options are marked by default for new jobs.

A new report called Job Quote is available so user can send a quote to a customer. This report is available as Word Template so it can be modified using Word and emailed to the contact on the job.

 

Fixed Assets

Now setting up fixed assets is simpler. A standard setup is provided, but allows you to modify it at anytime you want.

You can register fixed asset as cards with complete information, accounting details, and reporting classification.

You can also register purchases of fixed assets through special fixed asset G/L journals where you can also dispose of fixed assets. The right accounting entries are created automatically.

 

Simplified Setup for using Dynamics CRM from inside Dynamics NAV

As you are familiar Dynamics NAV includes opportunity management and basic customer relationship management.

You can easily set up a connection with Dynamics CRM to have more benefit from the strong capabilities that Dynamics CRM offers, such as marketing and customer service capabilities.

A new assisted setup guide to the Business Manager home page will be available that will guide you through the setup process. Once you are through with this setup, you’ll have a seamless coupling of Dynamics CRM records with Dynamics NAV records.

 

 

Simplified opportunity management and CRM functionality

You will find Dynamics NAV CRM module has been simplified and improved in a number of ways:

  1. At place of CRM wizard pages now you will have card pages, so that they can now also run in the Web client with improved user experience.
  2. Worksheet pages also been replaced by list pages so now you can also use the pages in browsers.
  3. The Contact card has been simplified by marking a number of controls as Additional, so that the page default looks simpler.
  4. Mail merge have been replaced with Word reporting. Also, new Word reporting capabilities added to generate email body content based on the related report and the selected report layout.
  5. A new Sales & Relationship Manager Role Center has been added

New wizard has been created that helps users set up email logging (default public folders, rules, and job queue setup).

 

Smart notifications give you advice and recommendations

Similar to one which we discussed in our earlier post for Madeira.

 

Extensions

Microsoft provides the following extensions:

  1. Envestnet Yodlee Bank Feeds
  2. PayPal Payments Standard
  3. QuickBooks Data Migration
  4. Sales and Inventory Forecast

Similar to Madeira few of them we have discussed in our earlier posts, rest will discuss in our upcoming posts.

 

Office 365

If your organization uses Office 365, Dynamics NAV 2017 includes an add-in so you can invoice your customers based on entries in your Outlook calendar.

From the Contacts List in Dynamics NAV, you can manually synchronize your Dynamics NAV contacts to Office 365 People.

The contacts from Office 365 will sync back to Dynamics NAV as well.

There is a filter that can be applied to the synchronization process so users will only need to sync the contacts they use most often. This same filter is used during the automatic background sync as well. This synchronization process also works with Microsoft Outlook on the desktop.

We will discuss in more details in our upcoming posts. This feature is too available in Madeira.

 

 

 

US financial reports

In the US version of Dynamics 2017, added new four financial reports to the Business Manager and Accountant Role Centers:

  1. Balance Sheet
  2. Income Statement
  3. Cash Flow Statement, and
  4. Retained Earnings Statement

These reports use G/L account categories and sub-categories discussed above to group financial data.

 

Source:- https://mbs.microsoft.com/Files/partner/NAV/Readiness_Training/ReadinessTrainingNews/WhatsNewDynamicsNAV2017LimitedBeta.pdf

I will come up with more details in my upcoming posts.

 

 

 

First update of Project “Madeira” is released – June 2016

What does this update includes?

 

Filter on unprocessed incoming documents

 

The list of incoming documents is now filtered to show only entries that have not been used to create posted documents with.

When documents are posted, the processed flag is set to Yes, such that incoming documents that have been processed into posted documents are filtered out.

You can choose to view all incoming documents in the list if desired, using the show Show All action.

You can also manually switch the processing flag.

 

Office Suite notifications are now enabled in Project “Madeira”

 

In the top right corner, next to the Settings menu, you will notice the bell symbol that you probably already know well from other Office products: That’s the Notifications menu.

Here you will receive notifications such as new mail and calendar reminders directly while working in Project “Madeira”.

 

New extensions, such as Sana Commerce for Project “Madeira” and ChargeLogic Payments that provides payment and credit card processing capabilities.

 

In Project “Madeira”, the Extension Management window lists all available extensions. Some extensions are provided by Microsoft, and other extensions are provided by other companies.

With the first update of Project “Madeira”, extensions have been added by other providers, and Madeira refer to the websites that these companies provide for more information.

Sana Commerce is the integrated B2B e-commerce platform for Project “Madeira” that helps wholesale, distribution and manufacturing companies efficiently run their business, improve their customer service and ultimately generate more revenue through easy online order processing and a 24/7 online access of product information. See the Sana Commerce website.

With ChargeLogic Notify, you can automatically deliver customized, targeted emails directly from Project “Madeira” for invoices, orders, shipments, returns, and sales quotes. Clearly provide the exact information you want with the exact look you want to increase customer satisfaction, promote your brand, and drive business. Using a powerful template system and business rules, you’ll be able to create personalized content and custom designs in an email format and send them to all parties associated with a communication. See the ChargeLogic website. .

 

For further details checkout Link and this Link.

 

 

How do I: Develop an Extension

You can build extension packages that add functionality to a Microsoft Dynamics NAV deployment.

For Overview, please see my earlier posts Introducing Extensions in Microsoft Dynamics NAV 2016

Like any common functionality you want to roll out to different locations of a same company maintaining Object Set Globally for their Navision deployment.

You can perform conventional Export object and send to different locations, where they import these objects in their databases. Another option is through Extensions. Specially very helpful in Tenant model deployment.

But do the limitations apply as we discussed in my earlier post:

[A] Which Object types you can Include & Restrictions applicable to C/AL code in Extension Packages

[B] Which Properties are Restricted in Extension Packages

Unlike the familiar development and deployment of Microsoft Dynamics NAV functionality, building an extension relies on the exported version of an application to .TXT files.

You can export the application from the development environment, use the development environment commands, or use the Windows PowerShell cmdlet that is available in the Microsoft Dynamics NAV 2016 Development Shell,

Export-NAVApplicationObject.

MS recommend that you create a folder structure that can be leveraged by the cmdlets that you use when you build the extension package. That structure should contain folders for the ORIGINAL object files, MODIFIED object files, and DELTA files. These names match those used as parameters in the application merge utilities.

Recall from my earlier post where we deled with Upgrading the Application Code in Microsoft Dynamics NAV 2016

We used folder structure for placing the objects before we performed action:

“In my example, the UpgradeDemo folder on the C drive contains five folders: ORIGINAL, MODIFIED, TARGET, DELTA, and RESULT. The DELTA and RESULT folders are empty. The ORIGINAL, MODIFIED, and TARGET folders contains one or more text files that contain application objects.”

Similar structure we will be using for creating package. You can follow same for easy reference or you can use your convenient naming convention and structure.

I will come back on this in my future post, what exactly structure I will be using for my walkthrough on Extension.

You can refer to cmdlets we discussed earlier for upgrade and extensions which will be used in rest of the parts of this and upcoming posts while dealing with Extensions.

[A] Helpful PowerShell Commands which you can use for Upgrade Process in Navision 2016

[B] Few Helpful PowerShell Commands which you can use for Upgrade Process in Navision 2016 – Part 2

[C] Useful Windows PowerShell cmdlets for managing Extensions in Dynamics Navision 2016

 

5 Steps To create an extension

  1. Establish the BASE as TXT files.
  • The foundation for your extension is the exported .txt files of the objects you are modifying.
  • You can export just the objects that you want to modify, or you can export the entire Microsoft Dynamics NAV application.
  • In the Microsoft Dynamics NAV 2016 Development Shell, the Export-NAVApplicationObject cmdlet can automate this process or you can use the export functionality in the development environment.
  • The following example uses this cmdlet to export objects to establish the base for the planned modifications.

Export-NAVApplicationObject -Path ORIGINAL -DatabaseName MyDatabase -DatabaseServer MyDatabaseServer

  • Objects must be exported as .TXT files. You cannot build an extension based on a .FOB file.
  • If you use a source control system, you may want to pull the base .TXT files from there.
  1. Create functionality in the development environment.
  • Use the development environment as usual to create new objects or modify ones to the extent your license allows you.
  • Also don’t forget to reference limitations with Extensions Property and Objects which you can include in Extensions, see above provided link for more details.
  • Keep in mind the following rules as discussed earlier:
  • DO NOT make C/AL code modifications
  • DO use subscribing to events to execute code.
  • DO NOT create new or modified XMLPorts, Queries, or Report.
  • DO NOT change restricted page and table properties.
  • In order to get an easy upgrade experience for your extensions, you cannot modify code the way you do in the traditional customization process.
  • Instead, you extend Microsoft Dynamics NAV functionality by subscribing to programming events that are raised either explicitly in code, or implicitly by the platform.
  • Test your application with the extension added.
  1. Export your changed and added application objects to .TXT files.
  • Export all objects that you added or modified to .TXT files.
  • Use the same export cmdlet from step 1 or manually export within the development environment.
  • They must also be exported as .TXT files and should be placed in a separate directory so that the packaging process can be pointed at them.

Export-NAVApplicationObject -Path MODIFIED -DatabaseName MyDatabase -DatabaseServer MyDatabaseServer

  1. Create DELTA files using the Microsoft Dynamics NAV 2016 Development Shell cmdlets.
  • Extension packages are based on application object deltas. Again, you use the application merge utilities in the Microsoft Dynamics NAV 2016 Development Shell to distil the changes in the form of application object differences that are stored in DELTA files.
  • Creating an extension uses many of the same concepts and tools as you know from application object deltas. You use the Compare-NAVApplicationObject cmdlet to create these delta files.

Compare-NAVApplicationObject -OriginalPath ORIGINAL -ModifiedPath MODIFIED -DeltaPath DELTA

Your delta files must be one-to-one with the objects you have added or modified. You cannot include a single merged delta file. If you output your export file as a single file use the Split-NAVAppplicationObjectFile cmdlet to create the individual files.

  1. Build the extension package.

 

I will come up with more details in my upcoming posts on this topic.

Useful Windows PowerShell cmdlets for managing Extensions in Dynamics Navision 2016

Today I will list few cmdlets which will help you getting your task done while working with Extensions.

For Overview of Extensions, please see my earlier posts

Introducing Extensions in Microsoft Dynamics NAV 2016

Which Object types you can Include & Restrictions applicable to C/AL code in Extension Packages

Which Properties are Restricted in Extension Packages

Just a quick reference you can study in details using links of MSDN below every cmdlet.

Get-Help

To get Help about syntax and options for a specific cmdlet, type the following cmdlet.

Syntax: Get-Help <cmd name>

 

Export-NAVApplicationObject

The Microsoft.Dynamics.Nav.Model.Tools.psd1 module includes a function, Export-NAVApplicationObject, which runs the ExportObjects command. This means that you can run a command such as the following:

Export-NAVApplicationObject

–DatabaseServer MyServer

–DatabaseName “Demo Database NAV (7-1)”

–Path C:\UserData\MyPackage\ORIGINAL\MyObjects.txt

 

Export-NAVApplicationObjectLanguage

Exports captions from the specified text files with Microsoft Dynamics NAV application objects. The captions are exported to text files.

 

Syntax:

Export-NAVApplicationObjectLanguage

[-Source] <String[]>

[-Destination] <String>

[[-LanguageId] <String[]> ]

[-DevelopmentLanguageId <String> ]

[-Encoding <FileEncoding> ] [-Force] [-PassThru] [-Confirm] [-WhatIf] [ <CommonParameters>]

The resulting text files are similar to the multilanguage files that you can export in the Microsoft Dynamics NAV Development Environment. If your source files contain more than one language, you can choose to export one language, multiple languages, or all languages

 

Example:

PS C:\> Export-NAVApplicationObjectLanguage

–Source .\ORIGINAL\ -LanguageId “DEU”,”FRA”

-Destination .\RESULT\languages.txt

Click here for more details on MSDN

Export-NAVAppPermissionSet

Exports the specified permission set from a Microsoft Dynamics NAV database to a file.

 

Syntax:

Export-NAVAppPermissionSet

[-ServerInstance] <String>

-Path <String> -PermissionSetId <String[]>

[-Force] [-PassThru] [ <CommonParameters>]

 

Example:

PS C:\> Export-NAVAppPermissionSet

-ServerInstance DynamicsNAV90 -Path ‘.\PermissionSet.xml’

-PermissionSetId SUPER

 

This example exports the permission set with the ID “SUPER” in the database that is used by the DynamicsNAV90 server instance to the PermissionSet.xml file.

Click here for more details on MSDN

 

Split-NAVApplicationObjectFile

Splits a text file that contains two or more application objects into separate text files for each application object.

Syntax:

Split-NAVApplicationObjectFile

[-Source] <String>

[[-Destination] <String> ]

[-Force] [-PassThru] [-PreserveFormatting] [-Confirm] [-WhatIf] [ <CommonParameters>]

 

The Split-NAVApplicationObjectFile cmdlet can copy each application object to a new file, or it can recreate the object in the new file.

The default setting is to recreate the object, but you can change this by setting the PreserveFormatting parameter.

Example:

PS C:\> Split-NAVApplicationObjectFile -Source C:\UserData\MyPackage\ORIGINAL\All.txt -Destination C:\UserData\MyPackage\ORIGINAL\TXT\ -PreserveFormatting

 

Click here for more details on MSDN

 

Compare-NAVApplicationObject

Compares text files with Microsoft Dynamics NAV application objects and then calculates the delta between the two versions. The result of the comparison is a number of text files with the calculated delta.

The Compare-NAVApplicationObject cmdlet compares the text files in the two specified folders and creates .delta files that describe the difference between the two versions

The cmdlet creates a text file for each application object that is different between the two versions.

Syntax:

Compare-NAVApplicationObject

[-OriginalPath] <String[]>

[-ModifiedPath] <String[]>

[-DeltaPath] <String>

[-Confirm] [-Force] [-Legacy] [-NoCodeCompression] [-PassThru] [-Confirm] [-WhatIf] [ <CommonParameters>]

 

Example:

PS C:\> Compare-NAVApplicationObject

–OriginalPath C:\UserData\MyPackage\ORIGINAL\*.txt

-ModifiedPath C:\ UserData\MyPackage \MODIFIED\*.txt

-DeltaPath C:\ UserData\MyPackage \DELTA

 

Below example compares the text files in the MODIFIED folder to the baseline in the ORIGINAL folder. The result of the comparison is put into the DELTA folder and also piped to the Update-NAVApplicationObject cmdlet, which applies the updates.

PS C:\> Compare-NAVApplicationObject

-OriginalPath .\ORIGINAL\*.txt

-ModifiedPath .\MODIFIED\*.txt

-DeltaPath .\DELTA -Force

-PassThru |   Update-NAVApplicationObject

-TargetPath .\TARGET\*.txt

-ResultPath .\RESULT –Force

Click here for more details on MSDN

 

Merge-NAVApplicationObject

Compares the changes that have been made to application objects between two versions of Microsoft Dynamics NAV, and applies the difference to a third set of application objects.

 

Syntax:

Merge-NAVApplicationObject

[-OriginalPath] <String[]>

[-ModifiedPath] <String[]>

[-TargetPath] <String[]>

[-ResultPath] <String>

[-DateTimeProperty <DateTimePropertyAction> ] [-DisableCommentOut] [-DocumentationConflict <DocumentationConflictAction> ] [-Force] [-Legacy] [-ModifiedProperty <ModifiedPropertyAction> ] [-PassThru] [-Strict] [-VersionListProperty <VersionListPropertyAction> ] [-Confirm] [-WhatIf] [ <CommonParameters>]

 

You specify an original version and compare that to a latest version.

The difference is then applied to the target version.

The result of the merge is a number of text files with the merged application objects.

Any conflicts that the cmdlet cannot merge are identified in conflict files.

Example:

PS C:\> Merge-NAVApplicationObject

-OriginalPath C:\UserData\MyPackage \ ORIGINAL\*.TXT

-TargetPath C:\ UserData\MyPackage \TARGET \*.TXT

-ModifiedPath C:\ UserData\MyPackage \MODIFIED \*.TXT

-ResultPath C:\ UserData\MyPackage \RESULT\

 

Click here for more details on MSDN

 

Import-NAVApplicationObjectLanguage

Imports strings in the specified language into text files that contain Microsoft Dynamics NAV application objects.

 

Syntax:

Import-NAVApplicationObjectLanguage

[-Source] <String[]>

[-LanguagePath] <String[]>

[-Destination] <String>

[[-LanguageId] <String[]> ]

[-Encoding <FileEncoding> ] [-Force] [-PassThru] [-Confirm] [-WhatIf] [ <CommonParameters>]

Example:

PS C:\> Import-NAVApplicationObjectLanguage

–Source .\TAB18.TXT

-LanguageId “CHS”

-LanguagePath .\ALL-CHS.TXT

-Destination .\RESULT\

This command will import the CHS language into the Microsoft Dynamics NAV application object that is specified in the –Source parameter, TAB18.txt. The strings are imported from the text files in the ALL-CHS.txt file, and the result of the command is a text file in the RESULT folder, TAB18.txt, that includes captions in Chinese.

Click here for more details on MSDN

 

Get-NAVAppInfo

Gets information about a Microsoft Dynamics NAV extension based on the specified package file or the specified Microsoft Dynamics NAV Server instance.

 

Syntax:

  • Get-NAVAppInfo -Path <String> [ <CommonParameters>]

  • Get-NAVAppInfo [-ServerInstance] <String> [-CompatibilityId <Version> ] [-Id <Guid> ] [-Name <String> ] [-Publisher <String> ] [-Version <Version> ] [ <CommonParameters>]

  • Get-NAVAppInfo [-ServerInstance] <String> -Tenant <String> [ <CommonParameters>]

 

Example:

To see Microsoft Dynamics NAV extensions that are published to the DynamicsNAV90 server instance use below command.

PS C:\>Get-NAVAppInfo -ServerInstance DynamicsNAV90

Or

This command will return information about all Microsoft Dynamics NAV extensions that are published to the DynamicsNAV90 server instance by Ashwini.

PS C:\>Get-NAVAppInfo -ServerInstance DynamicsNAV90 -Publisher ‘Ashwini’

 

You will see output similar to shown below

Id Name Version Publisher
9a47a833-e22f-4812-ade314219c53 EDD1.01 1.0.0.00 Ashwini
3c88160c-e0eb-4fe1-b4f6-011e45d74b10 EDD1.02 1.0.0.01 Ashwini

 

Below command returns information about the extension with the specified name and version on the DynamicsNAV90 server instance.

PS C:\>Get-NAVAppInfo -ServerInstance DynamicsNAV90 -Name ‘EDD1.01’ -Version 1.0.0.00

Or

This command will return information about all Microsoft Dynamics NAV extensions that are installed for the tenant with the ID Tenant1 on the DynamicsNAV90 server instance.

PS C:\>Get-NAVAppInfo -ServerInstance DynamicsNAV90 -Tenant ‘Tenant1’

Or

This command will return information about all Microsoft Dynamics NAV extensions that are installed on a non-multitenant Microsoft Dynamics NAV Server instance.

PS C:\>Get-NAVAppInfo -ServerInstance DynamicsNAV90 -Tenant default

You will see output similar to shown below

Id 3c88160c-e0eb-4fe1-b4f6-011e45d74b10
Name EDD1.02
Version 1.0.0.01
Publisher Ashwini
Description Second Extension by Ashwini
Compatibility Id 1.0.0.00
Capabilities
Prerequisites
Dependencies

 

Click here for more details on MSDN

Get-NAVApplicationObjectProperty

Gets Microsoft Dynamics NAV application object properties from the specified application object text files.

 

Syntax:

Get-NAVApplicationObjectProperty [-Source] <String[]> [ <CommonParameters>]

 

Example:

PS C:\> Get-NAVApplicationObjectProperty -Source .\SOURCE\COD1.txt

Click here for more details on MSDN

 

Set-NAVApplicationObjectProperty

Sets Microsoft Dynamics NAV application object properties in the specified application object text files.

Syntax:

Set-NAVApplicationObjectProperty

[-TargetPath] <String[]>

[-DateTimeProperty <String> ]

[-ModifiedProperty <SetModifiedPropertyAction> ]

[-VersionListProperty <String> ]

[-PassThru] [-Confirm] [-WhatIf] [ <CommonParameters>]

 

You can use the Get-NAVApplicationObjectProperty cmdlet to extract information about the application objects before you change them.

Example:

PS C:\> Set-NAVApplicationObjectProperty -TargetPath C:\UserData\MyPackage\RESULT\FinalObjects.txt -VersionListProperty ” EDD1.02″ – ModifiedProperty No -DateTimeProperty (Get-Date -Format g)

Click here for more details on MSDN

 

Update-NAVApplicationObject

Applies a set of deltas to the specified application objects. The files that describe the delta are generated by the Compare-NAVApplicationObject cmdlet.

Optionally, you can use the Set-NAVApplicationObjectProperty cmdlet to change the version or other properties. Then, you use Update-NAVApplicationObject cmdlet to apply the delta to target files.

Syntax:

Update-NAVApplicationObject

[-TargetPath] <String[]>

[-DeltaPath] <String[]>

[-ResultPath] <String>

[-DateTimeProperty <DateTimePropertyAction> ]

[-DisableCommentOut]

[-DocumentationConflict <DocumentationConflictAction> ]

[-ModifiedProperty <ModifiedPropertyAction> ]

[-VersionListProperty <VersionListPropertyAction> ]

[-Force] [-Legacy] [-PassThru] [-Strict] [-Confirm] [-WhatIf] [ <CommonParameters>]

 

Example:

PS C:\> Update-NAVApplicationObject -TargetPath C:\UserData\MyPackage \TARGET\*.txt -DeltaPath C:\UserData\MyPackage \DELTA\*.txt –ResultPath C:\UserData\MyPackage \RESULT\

 

Click here for more details on MSDN

 

Get-NAVAppManifest

Loads a manifest for a Microsoft Dynamics NAV extension from an external source , such as an .xml file.

 

Syntax:

Get-NAVAppManifest [-Path] <String> [ <CommonParameters>]

 

Example:

PS C:\> Get-NAVAppManifest -Path ‘.\Manifest-EDD1_02.xml’

You will see output similar to shown below

AppId 3c88160c-e0eb-4fe1-b4f6-011e45d74b10
AppName EDD1.02
AppPublisher Ashwini
AppDescription Second Extension by Ashwini
AppVersion 1.0.0.01
AppCompatibilityId 1.0.0.00
Capabilities {}
Prerequisites {}
Dependencies {}

 

Below command gets a manifest from an XML manifest file and then passes the manifest to the New-NAVAppPackage cmdlet to create a new extension package.

PS C:\> Get-NAVAppManifest

-Path ‘.\Manifest-Proseware SmartStuff.xml’ | New-NAVAppPackage

-Path ‘ C:\UserData\MyPackage\Manifest\EDD1.02.navx’

-SourcePath ‘C:\UserData\MyPackage \NavExtensionFiles’

Click here for more details on MSDN

 

Set-NAVAppManifest

Sets one or more available properties on an in-memory manifest for a Microsoft Dynamics NAV extension.

You can then write the updated manifest object to disk by using the New-NAVAppManifestFile cmdlet. The manifest is required when you create the extension package file (.navx) using the New-NAVAppPackage cmdlet.

Syntax:

Set-NAVAppManifest

[-Manifest] <NavAppManifest>

[-CompatibilityId <Version> ]

[-Dependencies <String[]> ]

[-Description <String> ]

[-Id <Guid> ]

[-Name <String> ]

[-Prerequisites <String[]> ]

[-Publisher <String> ]

[-Version <Version> ]

[ <CommonParameters>]

 

PS C:\> Get-NAVAppManifest -Path ‘ C:\UserData\MyPackage\MANIFEST\Manifest-EDD1_02.xml’ | Set-NavAppManifest -Version 1.0.0.01 -CompatibilityId 1.0.0.00 | New-NavAppManifestFile -Path ” C:\UserData\MyPackage\MANIFEST\Manifest-EDD1_02.xml” -Force

Gets a manifest from file, sets the version property and then saves the updated manifest back to file. By setting the Force parameter, the existing file is overwritten.

Click here for more details on MSDN

 

New-NAVAppManifest

Creates a new in-memory manifest object with the specified metadata for a Microsoft Dynamics NAV extension.

Syntax:

New-NAVAppManifest

[-Name] <String>

[-Publisher] <String>

[[-Id] <Guid> ]

[[-Description] <String> ]

[[-Version] <Version> ]

[[-CompatibilityId] <Version> ]

[-Dependencies <String[]> ]

[-Prerequisites <String[]> ]

[ <CommonParameters>]

 

The manifest is required when creating the Extension package file (.navx) using the New-NAVAppPackage cmdlet.

The manifest property values can be changed using the Set-NAVAppManifest cmdlet.

 

PS C:\>New-NavAppManifest

-Name ” EDD1.02″

-Publisher ” Ashwini ”

-Description ” Second Extension by Ashwini ”

-Version “1.0.0.01”

-CompatibilityId “1.0.0.00”

-Id 3c88160c-e0eb-4fe1-b4f6-011e45d74b10

-Dependencies C:\UserData\MyPackage\APPLICATION\EDD1.01.navx

-Prerequisites Table=18, CodeUnit=80

 

 

 

AppId 3c88160c-e0eb-4fe1-b4f6-011e45d74b10
AppName EDD1.02
AppPublisher Ashwini
AppDescription Second Extension by Ashwini
AppVersion 1.0.0.01
AppCompatibilityId 1.0.0.00
Capabilities {}
Prerequisites {Table=18, CodeUnit=80}
Dependencies {EDD1.01, Ashwini, 1.0.0.00}

 

Click here for more details on MSDN

New-NAVAppManifestFile

Creates a file with metadata for a Microsoft Dynamics NAV extension package.

Syntax:

New-NAVAppManifestFile

[-Path] <String>

[-Manifest] <NavAppManifest>

[-Force] [-PassThru] [-Confirm] [-WhatIf] [ <CommonParameters>]

 

Below command will create information in-memory manifest and then writes it to disk.

Because the example sets the Force parameter, the file will be overwritten if it already exists.

 PS C:\> New-NavAppManifest  -Name “EDD1.02”  -Publisher “Ashwini”  -Description ” Second Extension by Ashwini” | New-NavAppManifestFile -Path ” C:\UserData\MyPackage\ MANIFEST \Manifest-EDD1_02.xml” -Force

Click here for more details on MSDN

 

New-NAVAppPackage

Creates a Microsoft Dynamics NAV extension package file (.navx) at the specified location based on the specified manifest file and source files.

Syntax:

New-NAVAppPackage

[-Path] <String>

[-Manifest] <NavAppManifest>

[-SourcePath] <String[]>

[-Force] [-PassThru] [-Confirm] [-WhatIf] [ <CommonParameters>]

 

You can then use the package file to deploy the extension to a Microsoft Dynamics NAV Server instance.

 

Example:

PS C:\> New-NavAppManifest -Name ‘ EDD1.02’ -Publisher ‘Ashwini’ -Version 1.0.0.01 | New-NAVAppPackage -Path ‘ C:\UserData\MyPackage\APPLICATION\EDD1.02.navx’ -SourcePath ‘ C:\UserData\MyPackage\MyExtensionFiles’

Click here for more details on MSDN

 

Publish-NAVApp

Publishes a Microsoft Dynamics NAV extension to the app catalog of the specified Microsoft Dynamics NAV Server instance.

When the extension has been published, you can install it for individual tenants.

 

Syntax:

Publish-NAVApp

[-ServerInstance] <String>

[-Path] <String>

[[-PassThru]] [[-LogPath] <String> ] [-Confirm] [-WhatIf] [ <CommonParameters>]

 

 

Example:

PS C:\> Publish-NAVApp -ServerInstance DynamicsNAV90 -Path ‘ C:\UserData\MyPackage \NAVAPP\EDD1_02.navx’

Publishes the Microsoft Dynamics NAV extension from the EDD1_02.navx package to the DynamicsNAV90 server instance.

Click here for more details on MSDN

 

Unpublish-NAVApp

Unpublishes a Microsoft Dynamics NAV extension from the app catalog of the specified Microsoft Dynamics NAV Server instance.

The extension cannot be unpublished if it is currently installed for a tenant of the specified Microsoft Dynamics NAV Server instance.

 

Syntax:

Unpublish-NAVApp

[-ServerInstance] <String>

[-Path] <String>

[-Confirm] [-WhatIf] [ <CommonParameters>]

 

Unpublish-NAVApp

[-ServerInstance] <String>

[-Name] <String>

[[-Publisher] <String> ]

[[-Version] <Version> ]

[-Confirm] [-WhatIf] [ <CommonParameters>]

Click here for more details on MSDN

 

Install-NAVApp

Installs a Microsoft Dynamics NAV extension for a tenant in the specified Microsoft Dynamics NAV deployment.

Syntax:

Install-NAVApp

[-ServerInstance] <String>

-Path <String>

[-Tenant <TenantId> ]

[-DoNotLoadData]

[-Force] [-PassThru] [ <CommonParameters>]

 

 

Install-NAVApp

[-ServerInstance] <String>

-Name <String>

[-Publisher <String> ]

[-Tenant <TenantId> ]

[-Version <Version> ]

[-DoNotLoadData]

[-Force] [-PassThru] [ <CommonParameters>]

 

Example:

PS C:\> Install-NAVApp -ServerInstance DynamicsNAV90 -Name ‘EDD1.02’ -Version 1.0.0.01 -Tenant ‘MyTenant’

 

Click here for more details on MSDN

 

Uninstall-NAVApp

Uninstalls a Microsoft Dynamics NAV extension for the specified tenant.

If other extensions have a dependency on the specified extension, you must specify if they must also be uninstalled. Set the Force parameter to automatically remove dependent extensions.

Syntax:

Uninstall-NAVApp

[-ServerInstance] <String>

-Path <String>

[-Tenant <TenantId> ]

[-DoNotSaveData] [-Force] [-PassThru] [ <CommonParameters>]

 

 

Uninstall-NAVApp

[-ServerInstance] <String>

-Name <String>

[-Publisher <String> ]

[-Tenant <TenantId> ]

[-Version <Version> ]

[-DoNotSaveData]

[-Force] [-PassThru] [ <CommonParameters>]

 

 

Example:

PS C:\> Uninstall-NAVApp

-ServerInstance DynamicsNAV90

-Name ”EDD1.02′

-Version 1.0.0.01

 

Click here for more details on MSDN

 

Get-NAVAppTenant

Gets a list of tenants where the specified Microsoft Dynamics NAV extension is installed.

You can specify the extension by name, publisher, or version.

You can use the returned list of tenants to apply general changes, such as uninstalling the extension for all tenants that currently have it installed.

 

Syntax:

Get-NAVAppTenant

[-ServerInstance] <String>

-Path <String>

[ <CommonParameters>]

 

 

Get-NAVAppTenant

[-ServerInstance] <String>

[-Name <String> ]

[-Publisher <String> ]

[-Version <Version> ]

[ <CommonParameters>]

 

 

PS C:\> Get-NavAppTenant -ServerInstance DynamicsNAV90 -Name ‘EDD1.02’ -Version 1.0.0.01 | Uninstall-NAVApp -ServerInstance DynamicsNAV90 -Name ‘EDD1.02’ -Version 1.0.0.01

Click here for more details on MSDN

 

Repair-NAVApp

Repairs a Microsoft Dynamics NAV extension by recompiling it against the current base application.

It is recommend that you restart the Microsoft Dynamics NAV Server instance after running the repair.

Syntax:

Repair-NAVApp

[-ServerInstance] <String>

[-Name] <String>

[[-Publisher] <String> ]

[[-Version] <Version> ]

[ <CommonParameters>]

 

 

Example:

PS C:\> Get-NAVAppInfo -ServerInstance DynamicsNAV90 | Repair-NAVApp

Click here for more details on MSDN

 

 

Which Properties are Restricted in Extension Packages

For Overview, please see my earlier posts

Introducing Extensions in Microsoft Dynamics NAV 2016

Which Object types you can Include & Restrictions applicable to C/AL code in Extension Packages

Restricted Properties on Existing Page Modifications

You cannot change the values for the following properties for existing Microsoft Dynamics NAV pages in an extension.

  • AccessByPermission
  • AssistEdit
  • AutoSplitKey
  • CardPageID
  • CharAllowed
  • ContainerType
  • ControlAddIn
  • Data Type
  • DataLength
  • DateFormula
  • DelayedInsert
  • DeleteAllowed
  • DrillDown
  • DrillDownPageID
  • Editable
  • ExtendedDatatype
  • FieldClass
  • GroupType
  • ID
  • InsertAllowed
  • LinkedObject
  • Lookup
  • LookupPageID
  • MaxValue
  • MinValue
  • ModifyAllowed
  • MultipleNewLines
  • Name
  • NotBlank
  • Numeric
  • PageType
  • PartType
  • PasteIsValid
  • Permissions
  • PopulateAllFields
  • RefreshOnActivate
  • SourceExpr
  • SourceTable
  • SourceTableTemporary
  • SourceTableView
  • SubType
  • SystemPartID
  • TableRelation
  • TableType
  • TestTableRelation
  • ValidateTableRelation
  • ValuesAllowed

Most of these are typically not properties changed through customization as they can have a negative effect on the Microsoft Dynamics NAV deployment.

 

 

Restricted Properties on Existing Table Modifications

You cannot change the values for the following properties for existing tables and fields in an extension.

Table Properties Field Properties
  • Name
  • DataPerCompany
  • Permissions
  • LookupPageID
  • DrillDownPageID
  • PasteIsValid
  • LinkedObject
  • TableType
  • Name
  • AccessByPermission
  • Compressed
  • Data Type
  • DataLength
  • DateFormula
  • ExtendedDataType
  • FieldClass
  • MaxValue
  • MinValue
  • NotBlank
  • Numeric
  • Owner
  • SQL Data Type
  • SubType (BLOB)
  • TableIDExpr
  • TableRelation
  • TestTableRelation
  • ValidateTableRelation
  • ValuesAllowed Width

You can add table keys, but you cannot delete or modify existing keys.

You can add fields to a table group, but you cannot remove fields or groups.

Which Object types you can Include & Restrictions applicable to C/AL code in Extension Packages

For Overview, please see my earlier post Introducing Extensions in Microsoft Dynamics NAV 2016

When you create extension package you can include new as well as modified objects.

In Microsoft Dynamics NAV 2016, these object types can be added and included in an extension:

  • Pages
  • Tables
  • MenuSuites
  • Codeunits

You can modify these existing object types as permitted by your license:

  • Pages
  • Tables
  • Action Items

You will not be able to add or modify any other object types in this version.

You are not allowed to delete any existing objects.

You will also need to be sure not to modify any existing C/AL code, including code in codeunits and in triggers on existing objects.

In case you want to modify existing code, use the new C/AL eventing model.

To know more about Events see by earlier posts:

  1. Events in C/AL Navision 2016
  2. Implementing Events in Navision 2016

This restriction is only on existing code and objects. However New pages, tables, and so on, can contain C/AL code as it is considered part of the new object.

Important

Most of the contents you find in this blog will be either inherited from MSDN or Navision Developer IT Pro Help. Some places images are also directly taken from these sites. Purpose is simple to try those stuffs and re-produce adding few things as per my understanding to make easy understanding for others and quick reference.

Here nothing under my own brand or authorship of the content. At any point of time we are just promoting Microsoft stuffs nothing personnel with same.

Hope stuffs used here will not violate any copyright agreement with them. In case by mistake or in-intestinally it happens and the Microsoft feels these should not be used Microsoft have full right to inform me about same and will be glad to take down any such content which may be violating the norms.

Purpose is to promote Navision and share with community.

FB Profile

Like FB Page

%d bloggers like this: