In on our second post about Dynamics NAV 2017, we'll be more technical and talk about the changes we have made in the core application and platform to supplement the first post.
Enhancements in sales order processes
Dynamics NAV 2016 introduced Dynamics CRM Integration that enables an optimal and seamless experience for our customers in the lead-to-cash process when they are utilizing Dynamics CRM for customer engagement and Dynamics NAV for order processing and financials.
In Dynamics NAV 2017, you can now synchronize assembly items and bill-of-material items (BOMs) to Dynamics CRM as CRM products without price.
The sales person in Dynamics CRM can now use the price lists from Dynamics NAV while creating a sales order. When they add the item to the sales order line in Dynamics CRM, they are also able to see the inventory level (availablity) of the item from Dynamics NAV. A new wizard "Dynamics CRM Connection Setup", will publish Item Availablity Webservice as a part of the Assisted Setup that enables this scenario.
New chart for Cash Flow Forecasting
You can use the Cash Flow Forecast chart to generate predictions of future cash flow. Building on the currency assets of the previous period, Dynamics NAV creates a periodic compilation and calculation of the forecasted operational revenues and expenses. Then, the program calculates the cash surplus or the cash deficit. According to these results, the company can make adjustment measures, such as a credit reduction for a surplus, or borrowing if there is a deficit. For more information, see the Cash Flow Simplification section in aka.ms/navgetready.
We have added account categories and sub-categories so that it's easier to set up powerful account schedules for financial reporting. Also, we have added more setup data so that the reports are ready to use. Finally, the Payment Reconcilliation Journal is updated to show outstanding transactions and outstanding payments to help reconcile bank accounts.
Updated Role Centers
We have updated several Role Centers so they are ready to use. This includes the new Business Owner Role Center, but also familiar ones like Project Manager and Accountant.
Updates to the Dynamics NAV Web client and Universal App
Dynamics NAV 2017 includes many enhancements of the Web client and the universal app, including the following:
- Support for media fields
It is now possible to add media fields to table objects. Media is stored in system tables in the database, and can be referenced from application records. For applications that are developed for the Dynamics NAV Web client and Dynamics NAV Universal App, you can then use media fields to do the following:
- Display media with records in list type pages, when the page is viewed in the Brick layout
- Display media on a card type page for a record
- Display media in a report
- Support for Swipe Gestures
The page action control includes the Gesture property that enables you to specify the gesture that runs the action on a device with a touch interface, such as the phone client. You can set up the action to run when the user swipes in from the left edge of the touch interface or from the right edge. You typically use the property on list type pages for executing an action on items in a repeater control.
- Phone Role Centers
With this release Role Centers displayed in the Phone client are much better designed for touch gestures. The menu has moved to the bottom of the screen, making it more accessibles. In addition to this, you can now use both swipe and tap gestures to access different parts on the Role Center.
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. Notifications are only intended for contextual notifications such as the available inventory getting too low, or the credit limit for a customer is exceeded.
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. The user can then choose to dismiss the notification, which clears it. Or if actions are defined on notification, the user can choose one of the actions. There can be multiple notifications. The notifications appear in chronological order from top to bottom.
Notifications remain for duration of the page instance or until the user dismisses them or takes action on them.
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.
- MESSAGE specifies the content of the notification that appears in the UI
- SCOPE specifies the scope in which the notification appears, which can be LocalScope or GlobalScope. 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.
- SEND sends the notification to be displayed by the client.
- 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.
- 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('The customer''s current balance exeeds their credit limit'); CreditBalanceNotification.SCOPE :=NOTIFICATIONSCOPE::LocalScope; //Add a data property for the customer number CreditBalanceNotification.SETDATA('CustNumber',Customer."No."); //Add an action that calls the ActionHandler codeunit, which you define in the next step. CreditBalanceNotification.ADDACTION('Go handle this', CODEUNIT::NavExtensionInstallationMgmt, 'OpenCustomer'); //Send the notification to the client. CreditBalanceNotification.SEND; END;
In the "Action Handler" codeunit, you then add code to handle the action in a global function, called OpenCustomer, which has a Notification data type parameter. You could the use the GETDATA function to get the value of the data sent with the notification:
PROCEDURE OpenCustomer@1170000024(theNotification@1170000000 : Notification); VAR CustNo@1170000001 : Code; 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. When you then open the new company, the packages are applied, and you will be taken through an assisted setup experience.
Converting a Dynamics NAV 2017 database on Azure SQL Database
Some updates of Dynamics NAV introduces changes in the platform that require a database conversion. Database conversion is performed by connecting the Dynamics NAV development environment to the database and agreeing to the confirmation dialogue.
In earlier versions of Dynamics NAV, it was not possible to perform database conversion when a database was running in Azure SQL Database in the Azure cloud. Developers were forced to download the database on their box and perform the conversion locally.
With Dynamics NAV 2017, you can now perform database conversion by connecting the development environment directly to the database running on Azure SQL Database. For performance reasons, it is recommended that the development environment in this situation is running on an Azure VM deployed in the same Azure region as the Azure SQL database being converted. You must also make sure that no other services or users are connected to the database during conversion.
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.
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.
Note: Companies do not need to use the Application Areas system. If they ignore the system, users effectively see the standard UI of Dynamics NAV. Only when companies want to create differentiated user experiences, the Application Areas system should be an option to consider.
For more information, see Design Insights: Application Areas and user Experiences, which will be part of the readiness library for Dynamics NAV 2017.
These are just a few of the new capabilities in Dynamics NAV 2017. In the coming days, we’ll talk about other changes, so stay tuned!
Also, we're publishing updates to the MSDN Library for Dynamics NAV 2017. One of these updates will require us to make the library unavailable for up to 20 minutes. We'll try to find a slot that doesn't block any of you, but if you can't access the content, then wait 15 minutes and try again.