• Microsoft Dynamics NAV Team Blog

    Validating Single Sign-on with Office 365 and Microsoft Dynamics NAV 2013 R2

    • 4 Comments

    // Copyright © Microsoft Corporation. All Rights Reserved.

    // This code released under the terms of the

    // Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)

    How to: Validate that Microsoft Dynamics NAV 2013 R2 is correctly configured to support Single Sign-on with Office 365

    In Microsoft Dynamics NAV 2013 R2, we introduce the ability to set up single sign-on (SSO) between an Office 365 account and a Microsoft Dynamics NAV 2013 R2 account. More precisely, the Office 365 user account is linked to a Microsoft Dynamics NAV 2013 R2 user account.

    Implementing SSO requires that you correctly set up various elements, including a Windows Azure account for managing the Windows Azure Active Directory (Windows Azure AD) tenant, the Microsoft Dynamics NAV Server, and the Microsoft Dynamics NAV Web Server.

    As part of a hotfix for Microsoft Dynamics NAV 2013 R2, we have provided an extension to the Best Practices Analyzer (BPA) tool. The extension can be used to validate the setup for your single sign-on application. The approach is as follows: you provide a simple set of parameters, and then the tool validates the setup to see whether it is correct for single sign-on. 

    About this blog post

    This blog post describes the principles of single sign-on between Office 365 and Microsoft Dynamics NAV 2013 R2. It provides a short introduction to setting up SSO, information about how to use the BPA tool for validation, and a list of resources for additional information, including videos and Help documentation.

    The elements of the Single Sign-On functionality

    The authentication for SSO is handled by three parties. It is based on the first party being Office 365, the second being Microsoft Dynamics NAV 2013 R2 and the third party being the Windows Azure Active Directory (Windows Azure AD) service. Microsoft Dynamics NAV 2013 R2 trusts Windows Azure AD and Office 365 trusts Windows Azure AD, however, Microsoft Dynamics NAV 2013 R2 and Office 365 do not trust each other.

    The Windows Azure AD is the identity management service for Office 365. The credentials that you use to sign in to Office 365 are the same credentials that you use to sign in to the Windows Azure Management Portal (http://manage.windowsazure.com). By definition, Office 365 trusts Windows Azure AD and if Microsoft Dynamics NAV 2013 R2 trusts Windows Azure AD, we indirectly establish a trust between Microsoft Dynamics NAV 2013 R2 and Office 365 by letting Windows Azure AD provide its trust to Office 365 to Microsoft Dynamics NAV 2013 R2. This is done in the following way:

    To start with, we need to get the federation metadata from Windows Azure AD specifically for the given Office 365 subscription. An Office 365 subscription is an Office 365 account, which is sometimes referred to as an Office 365 tenant. We also need to let Windows Azure AD know about the Microsoft Dynamics NAV Web Server address. After providing the right information to Windows Azure AD, it knows enough about the Microsoft Dynamics NAV Web Server, but now Microsoft Dynamics NAV Web Server and Microsoft Dynamics NAV Server need to know about Office 365 and Windows Azure AD.

    Microsoft Dynamics 2013 R2 is based on a multi-tier architecture. This architecture consists of an SQL Server, Microsoft Dynamics NAV Server, and the Microsoft Dynamics NAV Web Server. For SSO, we do not have to configure anything special on the SQL Server but we do need to modify both the Microsoft Dynamics NAV Server instance and the Microsoft Dynamics NAV Web Server instance configuration. The Microsoft Dynamics NAV Server must be configured to run in the credential type AccessControlService, and it must also know the URL for Windows Azure AD for retrieving the federation metadata. The Microsoft Dynamics NAV Web Server, which is hosted by Internet Information Services (IIS), must be configured to run in the credential type AccessControlService, and it must also know the path to the Windows Azure AD authentication endpoint. The final configuration setting is that each Office 365 email account has to be mapped to each user in Microsoft Dynamics NAV that is expected to use SSO.

    For more details, see the references in the Appendix section. 

    The Best Practices Analyzer tool

    With Microsoft Dynamics NAV 2013, we introduced the Best Practices Analyzer (BPA) to analyze the configuration of Microsoft Dynamics NAV Server and SQL Server in order to determine whether these components are configured correctly or not. In Microsoft Dynamics NAV 2013 R2, we have extended the BPA to include an analysis of the SSO configuration.

    The BPA tool can be used by copying the BPA folder from the Microsoft Dynamics NAV 2013 R2 installation media (DVD) to your computer or by running the tool directly from the DVD. (Note: The DVD must be newer than November 25, 2013 – hotfix number 35727.) To run the BPA tool, we recommend that you copy the files to a local folder (if you do not need to use the Helper files you can run the tool from the DVD), enable Desktop Services, and then choose “Run As Administrator”.

    To proceed with the BPA tool, we assume the following:

    1. You have a Microsoft Dynamics NAV Web Client running.
      • You know the URL of the Microsoft Dynamics NAV Web Client.
      • You know the name of the Microsoft Dynamics NAV Server.
    2. You have an Office 365 account (SMB SKU or higher - see http://office.microsoft.com for information on options for business).
      • You have the administrator credentials for your Office 365 account.
      • You know the domain for your Office 365 account, such as mysolution.onmicrosoft.com, where your email can be admin@mysolution.onmicrosoft.com.
      • You are familiar with signing in and out of Office 365.

     The BPA tool includes several steps that perform the analysis of your configuration. The following figure shows the Start a new Best Practices scan screen. The new analysis for SSO is enabled by choosing Yes for the “Would you like to verify that the environment is configured for Single Sign-On with Office 365”? option.

    The parameters that you can set are described in the following table:

    Field

    Description

    Example

     Active Directory Server

    This is automatically determined and is optional.

      

     Server Instance Name

     This specifies the name of the Microsoft Dynamics NAV Server instance, which can be found under Services on the computer. In the example, the Server Instance Name is “DynamicsNAV71”

     

     

     It is also specified in the Microsoft Management Console:

     

     Web Server Instance Name

    This specifies the name of the web server instance for the Microsoft Dynamics NAV 2013 R2 Web Client, which can be found in Internet Information Service (IIS) Manager.

    In the example, the web server instance name is the name of the virtual folder under Microsoft Dynamics NAV 2013 R2 Web Client.

     

     Microsoft Dynamics NAV Tenant

    This is only needed in a multitenant environment – the value “default” is the name of the first and only tenant in a single tenant configuration

     

     Office 365 User Account Email 

    This is the user name for Office 365 (and Windows Azure AD). This looks similar to admin@myO365.onmicrosoft.com.

     

    When you have filled out the parameters, you choose Start scanning. Shortly after, you will get a request for the password for your Office 365 account so that the BPA tool can connect to your Windows Azure AD tenant in order to verify your configuration:

    Within half a minute or so, the Scanning Completed message appears.

    You then choose View a report of this Best Practices scan. (You can only see List reports if you have not enabled Desktop Services. Otherwise use Tree reports.)

    The tool shows a number of errors. If you choose the first error in the list, then more details and some guidance are shown.

    If you choose Tell me more about this issue and how to resolve it, then the documentation will open, where you can see even more guidance on what you need to do in order to fix the problems.

    You can also see this information in the Tree Reports.

    As you can see, this tool can be really helpful when you need to get through the configuration of SSO. You can keep the BPA tool open as you resolve problems, and once you are done, you can choose to scan again to see whether issues are resolved.

    As a final check, verify that the SSO actually works. If it is the first time that you sign in, the credentials are needed.

    Final remarks

    With this extension to the BPA, we hope that you will have an easier time validating that Microsoft Dynamics NAV is correctly set up for single sign-on with Office 365. To get a better understanding, take a look at the references provided in the appendix.

    Appendix

    References to videos 

    How Do I: Enable Single Sign-On with Office 365 in Microsoft Dynamics NAV 2013 R2 is available on MSDN and in the Microsoft Dynamics NAV Community.

    More information about Windows Azure Active Directory 

    Windows Azure Active Directory

    Manage Windows Azure AD using Windows PowerShell

    More information about Microsoft Dynamics NAV 2013 R2

    Authenticate Users with Windows Azure Active Directory

    Users and Credential Types

    Configuring Microsoft Dynamics NAV Web Client by Modifying the web.config File

    How to: Configure User Authentication for the Microsoft Dynamics NAV Web Client

    Configuring Microsoft Dynamics NAV Server

    How to: Configure the Microsoft Dynamics NAV Web Client for ACS

    More information about certificates

    Test environment

    Production environment

     

    Best regards

    Eric Beran, Mike Borg Cardona, Vlad Precup, Steffen Balslev, and John Swymer - Microsoft Dynamics NAV Office 365 team.

  • Microsoft Dynamics NAV Team Blog

    New NAV Design Patterns

    • 0 Comments

    The NAV Design Patterns Wiki site was announced in November, as a repository containing the first NAV design pattern descriptions, together with a call for contributions.

    We would like to say “welcome to the team”, to our new design patterns authors. Their patterns are linked below. If you want to learn from the experience of other Microsoft Dynamics NAV partners and from some of the designs they have implemented or used, then read on.

    Posting Routine - Select behaviour

    By waldo at ifacto

    Meet the Pattern

    Send information (parameters) to a processing framework/routine so that it knows what to do, how to behave, .. .

    Know the Pattern

    For a processing routine to behave correctly, it needs sometimes input of a user to know what it has to do, check or avoid doing.  To do this, usually a piece of UI is getting called (STRMENU) with the question what to do. These input needs to get to the routine.

    Continue reading on the NAV Patterns Wiki...

    Conditional Cascading Update

    by Jan Hoek at IDYN 

    Meet the Pattern

    The Conditional Cascading Update pattern is used to intelligently populate fields whose values depend on other field values. In this pattern description, the field triggering the update will be called “source field”, and the depending field will be called “target field”. 

    Know the Pattern

    The value of one table field sometimes depends on the value of another field, typically following an application-defined transformation (note that we're talking about transformations of field values here. This has nothing to do with e.g. form transformation), such as conversion to uppercase, removal of certain characters etc.

    If the target field is non-editable, ...

    Read more about Conditional Cascading Update on the Wiki...

    Setup Specificity Fallback

    by Jan Hoek at IDYN 

    Meet the Pattern

    The Setup Specificity Fallback pattern allows users to efficiently define a potentially complex setup in terms of rules and exceptions to these rules, exceptions to the exceptions, etc.

    Know the Pattern

    The pattern involves a setup table with a compound (i.e. consisting of more than one field) primary key, where each record in the table maps a combination of primary key values to a particular setup value. However, setting up and maintaining each and every combination could prove to be rather labour-intensive.

    Read more on the NAV Design Patterns Wiki...

     

    With best regards from the NAV Design Patterns team.

  • Microsoft Dynamics NAV Team Blog

    Update Rollup 9 for Microsoft Dynamics NAV 2013 has been released

    • 0 Comments

    Update rollup 9 for Microsoft Dynamics NAV 2013 (Build 35782) has been released.

    Update rollup 9 includes all application and platform hotfixes and regulatory features that have been released for Microsoft Dynamics NAV 2013 and includes hotfixes that apply to all countries and hotfixes specific to the following local versions:

    • AU - Australia
    • DE - Germany
    • DK - Denmark
    • FR - France
    • IT   - Italy
    • NA - North America
    • NL - Netherlands
    • NZ - New Zealand
    • SE - Sweden
    • UK - United Kingdom

    Where to find update rollup 9

    You can download update rollup 9 from KB 2913980 - Update Rollup 9 for Microsoft Dynamics NAV 2013 (Build 35782).

    The hotfixes that have been released since update rollup 8 are listed in KB 2913980. For a full list of all hotfixes included in the update rollup, see the following CustomerSource and PartnerSource pages:

    CustomerSource:

    PartnerSource:

    More Information

    For more information about update rollups for Microsoft Dynamics NAV 2013, see Announcement of new hotfix process for Microsoft Dynamics NAV 2013.

  • Microsoft Dynamics NAV Team Blog

    Announcement of update rollups for Microsoft Dynamics NAV 2013 R2

    • 5 Comments

    Update rollup 1 for Microsoft Dynamics NAV 2013 R2 has been released.

    What is an update rollup

    An update rollup is a cumulative set of files that includes all application and platform hotfixes and regulatory features that have been released for Microsoft Dynamics NAV 2013 R2, including hotfixes and regulatory features released in previous update rollups.

    Where to find update rollups

    You can download update rollup 1 from KB 2901573- Update Rollup 1 for Microsoft Dynamics NAV 2013 R2 (Build 35701). The hotfixes that are included in this update rollup are listed in the KB article.

    You can find a list of all update rollups released for Microsoft Dynamics NAV 2013 R2 in KB 2914930 - Released update rollups for Microsoft Dynamics NAV 2013 R2.

    You can find a list of all hotfixes included in update rollups for Microsoft Dynamics NAV 2013 R2 on the following CustomerSource and PartnerSource pages:

    CustomerSource

    PartnerSource

    Which countries are included in the update rollups

    Update rollups for Microsoft Dynamics NAV 2013 R2 includes hotfixes that apply to all countries (W1) and local hotfixes for the following countries:

    • AU - Australia
    • AT - Austria (first included in Update Rollup 5) 
    • BE - Belgium (first included in Update Rollup 5) 
    • CH - Switzerland (first included in Update Rollup 5) 
    • DE - Germany
    • DK - Denmark
    • ES - Spain (first included in Update Rollup 5) 
    • FI - Finland (first included in Update Rollup 5) 
    • FR - France
    • IS – Iceland (first included in Update Rollup 5) 
    • IT – Italy
    • NA – North America
    • NL – Netherlands
    • NO - Norway (first included in Update Rollup 5) 
    • NZ - New Zealand
    • SE - Sweden
    • UK – United Kingdom

    Weekly platform rollups

    To ensure early access to platform hotfixes, weekly platform rollups will be released between monthly update rollups.

    Access to update rollups

    Please note that a CustomerSource or PartnerSource login is required to access the update rollups and all links in this blog post.

  • Microsoft Dynamics NAV Team Blog

    Hotfix overview pages for Microsoft Dynamics NAV 2013 R2 now available

    • 0 Comments

    Overview pages of released platform hotfixes and application hotfixes for Microsoft Dynamics NAV 2013 R2 are now available on PartnerSource and CustomerSource at the following links:

    PartnerSource:

    CustomerSource:

    ==================================================================================== 

    Hotfix overview pages for Microsoft Dynamics NAV 2013 can be found here:

    PartnerSource:

    CustomerSource:

     ==================================================================================== 

     Hotfix overview pages for Microsoft Dynamics NAV 2009 SP1/R2 and Microsoft Dynamics NAV 5.0 SP1 can be found here:

    PartnerSource:

     CustomerSource:

     

    Please note that a CustomerSource or PartnerSource login is required to access the links in this blog post. 

  • Microsoft Dynamics NAV Team Blog

    Update Rollup 8 for Microsoft Dynamics NAV 2013 has been released

    • 0 Comments

    Update rollup 8 for Microsoft Dynamics NAV 2013 (Build 35670) has been released.

    Update rollup 8 includes all application and platform hotfixes and regulatory features that have been released for Microsoft Dynamics NAV 2013. Local hotfixes for Sweden have been added to update rollup 8 and the update rollups now include hotfixes that apply to all countries and hotfixes specific to the following local versions:

    • AU – Australia
    • DE - Germany
    • DK - Denmark
    • FR - France
    • IT - Italy
    • NA – North America
    • NL – Netherlands
    • NZ – New Zealand
    • SE – Sweden (NEW)
    • UK - United Kingdom

    Where to find update rollup 8

    You can download update rollup 8 from KB 2901572 - Update Rollup 8 for Microsoft Dynamics NAV 2013 (Build 35670).

    The hotfixes that have been released since update rollup 7 are listed in KB 2901572. For a full list of all hotfixes included in the update rollup, see the following CustomerSource and PartnerSource pages:

    CustomerSource:

    PartnerSource:

    More Information

    For more information about update rollups for Microsoft Dynamics NAV 2013, see Announcement of new hotfix process for Microsoft Dynamics NAV 2013.

     

  • Microsoft Dynamics NAV Team Blog

    Announcing Microsoft Dynamics NAV 2013 R2 Cumulative Update 1

    • 16 Comments

    We are happy to announce that the Cash Management team has shipped Microsoft Dynamics NAV 2013 R2 Cumulative Update 1. The cumulative update is available for download on PartnerSource/CustomerSource.

    The cumulative update is an application update only. It mainly contains Cash Management features, such as:

    • UI for the Data Exchange Framework
    • Import of SEPA CAMT bank statements in W1 (all countries can use it) and in NL and BE in integration with existing localizations
    • SEPA Direct Debit in FR, IT, ES, BE, and CH in integration with existing localizations

    As a new service, Microsoft Dynamics NAV 2013 R2 Cumulative Update 1 contains the "CU1Help" folder with selected topics for W1 and six country versions that have changed since Microsoft Dynamics NAV 2013 R2. The Help content is in English language only.

    For more information about features in the cumulative update, see What’s New in Microsoft Dynamics 2013 R2 Cumulative Update 1, which is available from the download page or the country-specific What's New topics in the "CU1Help" folder.

    To learn about known issues, of which the first has a prerequisite hotfix, see Release Notes for Microsoft Dynamics 2013 R2 Cumulative Update 1, which is available from the download page.

    To follow installation steps and steps required to use the Data Exchange Framework and to update Help, see How to Update to Microsoft Dynamics 2013 R2 Cumulative Update 1, which is available from the download page. 

    To help customers and partners get an overview of SEPA functionality released in different countries during the calendar year 2013, we have released the “SEPA Functionality in Microsoft Dynamics NAV” white paper on the Getting Ready site for Microsoft Dynamics NAV 2013 R2 on PartnerSource/CustomerSource.

    Note: The product downloads, Help download, and links to supporting documents are presented in a separate section for Microsoft Dynamics NAV 2013 R2 Cumulative Update 1 on the download page on PartnerSource/CustomerSource.

  • Microsoft Dynamics NAV Team Blog

    Upgrade Toolkit for Upgrading Data from Microsoft Dynamics NAV 2009 R2 and Microsoft Dynamics NAV 2009 SP1 to Microsoft Dynamics NAV 2013 R2

    • 35 Comments

    The components needed to upgrade data directly from Microsoft Dynamics NAV 2009 R2 to Microsoft Dynamics NAV 2013 R2 are now available for download.

    Download the upgrade toolkit from PartnerSource or from CustomerSource
    In order to use the toolkit to upgrade data from Microsoft Dynamics 2009 R2 or Microsoft Dynamics NAV 2009 SP1, you will also need the Microsoft Dynamics NAV 2013 development environment and Microsoft Dynamics NAV 2013 R2.

    At the Directions EMEA conference in Vienna and the Directions US conference in Nashville, we said that we have a team that is focusing on the Microsoft Dynamics NAV upgrade story. Going through the big transformation from the classic stack to the new product architecture in Microsoft Dynamics NAV 2009 was not easy and is challenging many customers and partners. So for our team, it is essential that the final outcome of our work is that each upgrade is easier, requires significantly less effort, and that it does not disrupt the daily business for our customers.

    In Microsoft Dynamics NAV 2013 R2, we introduced support for converting a Microsoft Dynamics NAV 2013 database so that you can run an application that was created in Microsoft Dynamics NAV 2013 on the Microsoft Dynamics NAV 2013 R2 platform, also known as a technical upgrade.

    Note: We strongly recommend that you upgrade the application objects as well so that your solution includes the important application fixes and new functionality that is introduced in Microsoft Dynamics NAV 2013 R2.

    Secondly, you can fully automate the data upgrade process using the Windows PowerShell scripts that we included in the Microsoft Dynamics NAV 2013 R2 product media. Historically, this process has been known for its tediousness and high risk of human error when multiple operations had to be executed consecutively in all companies of the database that you were upgrading. The scripts automate this work so that you can test and execute your data upgrades more reliably.

    Now with this delivery, we introduce an upgrade toolkit for upgrading the data from Microsoft Dynamics NAV 2009 R2 to Microsoft Dynamics NAV 2013 R2. This significantly simplifies the upgrade process for those of you coming from Microsoft Dynamics NAV 2009 R2 – or Microsoft Dynamics NAV 2009 SP1.

    Included in the new upgrade toolkit are all known data upgrade-related application hotfixes that we are aware of, and we also addressed several platform issues that affected the upgrade scenario.

    Note: You must download the latest Microsoft Dynamics NAV platform hotfixes before you start using the upgrade toolkit. The required hotfixes for Microsoft Dynamics NAV 2013 are available in the latest hotfix rollup, which you can download from PartnerSource or CustomerSource. For Microsoft Dynamics NAV 2013 R2, you can download the required hotfixes from PartnerSource or CustomerSource.

    When you download the new upgrade toolkit from the link above, you can use it to simply your upgrade process. Here are the main steps in upgrading from Microsoft Dynamics NAV 2009 R2 (or Microsoft Dynamics NAV 2009 SP1) by using the new upgrade toolkit

    To upgrade data from a Microsoft Dynamics NAV  2009 R2 or Microsoft Dynamics NAV  2009 SP1 database

    1. In the Microsoft Dynamics NAV  2009 R2 or Microsoft Dynamics NAV  2009 SP1 development environment (Classic client):
      1. Create a copy or a backup of your old Microsoft Dynamics NAV 2009 R2 database, and open it in the Microsoft Dynamics NAV 2009 R2 development environment.
      2. Add your partner license to the database.
        You can do this by selecting the Save License in Database field in the Alter Database window. If the field was not already selected, a dialog box opens so you can specify the location of your partner license.
        If the field was already selected, upload the partner license from the License Information window.
      3. Open the Object Designer, and then import Upgrade601701.1.fob. If the .fob file contains objects with conflicting versions that are already in the database, the Import Worksheet window opens. Choose Replace All.
      4. For each company in the database, open the company, and make the relevant changes to data. For more information, see Task 3: Data/Object Changes Prior to Step 1 in the MSDN Library.
    2. Then, from the Object Designer, run form 104001, Upgrade - Old Version. Choose the Transfer Data button. Repeat this action for each company in the database. Then choose the Delete Objects button.
      This action deletes all objects in the database that are not tables, but also obsolete tables that belong to functionality that is not available in Microsoft Dynamics NAV 2013 R2.
    3. Uninstall Microsoft Dynamics NAV 2009 R2, and then install Microsoft Dynamics NAV 2013.
    4. Change the compatibility level of your database. For SQL Server 2008 and SQL Server 2008 R2, verify that the compatibility level of the database is set to 100. For SQL Server 2012, set the compatibility level to 110.
    5. In the Microsoft Dynamics NAV 2013 development environment, open the Microsoft Dynamics NAV 2009 R2 database and agree to convert the database. The database has now been technically upgraded to Microsoft Dynamics NAV 2013.
    6. Uninstall Microsoft Dynamics NAV 2013, and then install Microsoft Dynamics NAV 2013 R2.
    7. In the Microsoft Dynamics NAV 2013 R2 development environment:
      1. Open the Microsoft Dynamics NAV 2013 database and agree to convert the database.
      2. Compile the system tables. You can find the tables by setting a filter for table ID 2000000004..2000000130.
         In the following step, you will be connecting a Microsoft Dynamics NAV Server instance to the database. 
    8. Make sure that the service account that the Microsoft Dynamics NAV Server instance uses has the db_owner role for the database. Connect the Microsoft Dynamics NAV Server instance to the database, and then start the service instance.
    9. In the Microsoft Dynamics NAV 2013 R2 development environment:
      1. On the Tools menu, open Options, and then, make sure that the Prevent data loss from table changes field is set to Yes.You must also make sure that the Server Name, Server Instance, and Server Port fields are filled in.
        This ensures that the Microsoft Dynamics NAV Server instance that is connected to the database will verify that no operation will cause loss of data in the development environment.
      2. Import all customized objects in .fob format into the upgraded database. If the .fob file contains objects with conflicting versions that are already in the database, the Import Worksheet window opens. Choose Replace All.
      3. Make sure all objects are compiled.
      4. Import Upgrade Step 2 objects from the Upgrade601701.2.fob file.If the .fob file contains objects with conflicting versions that are already in the database, the Import Worksheet window opens. Choose Replace All.
    10. Open the Microsoft Dynamics NAV 2013 R2 Windows client to verify that you are connected to the Microsoft Dynamics NAV Server instance that is connected to the database being upgraded. 
      Next, you will run Upgrade Step 2 in each company in the upgraded database. You can get a list of all existing companies in the database by running the Get-NAVCompany cmdlet and passing as an argument the Microsoft Dynamics NAV Server instance which is connected to the upgraded database. 
      You will run objects directly from the development environment, so you must specify the company that the objects must run in in the Options window.
    11. In the Microsoft Dynamics NAV 2013 R2 development environment:
      1. On the Tools menu, open Options, and then, in the Company field, specify the name of the first company.
      2. In the Object Designer, find page 104002 Upgrade - New Version, and then choose Run.
      3. In the Upgrade - New Version window, choose Test Database Connection to make sure that the C/AL code that is triggered by the actions on the page has access to the database.
        If your database is on a named SQL Server instance, you must specify the full name in the SQL Server Name field.  
      4. Choose Transfer Data.
        If the process is successful, and you don't have to revisit the upgrade logs, you can clean the content of the Upgrade Time Log  table. 
      5. On the Navigate tab, choose Time Log, and then, in the Upgrade Time Log page, delete all records.
      6. Close the Upgrade - New Version window, and then close the Microsoft Dynamics NAV Windows client.
    12. Repeat step 11 for each remaining company in the database.
    13. When you have successfully transferred data in the last company, you must upgrade data that is common to all companies in the database, such as permissions, permission sets, web services, profiles and control add-ins.
    14. Upgrade data common to all companies such as permissions, permission sets, web services, profiles and control add-ins.
      If the customer has changed the Read/Write/Modify/Delete/Execute settings for any of the standard permissions, or customized default permission sets in any way, you must merge these changes into the default permissions sets and permissions that are included in Microsoft Dynamics NAV 2013 R2. You can use XMLport 104001 Import/Export Roles and XMLport 104002 Import/Export Permissions to export the new default roles and permissions from the CRONUS International Ltd. demonstration database in Microsoft Dynamics NAV 2013 R2. You can add control add-ins in the Control Add-ins window in the Microsoft Dynamics NAV Windows client. For more information, see How to: Register a Windows Client Control Add-in. For example, the following client control add-ins are available from the Microsoft Dynamics NAV 2013 R2 product media:
      • Microsoft.Dynamics.Nav.Client.BusinessChart
      • Microsoft.Dynamics.Nav.Client.PageReady
      • Microsoft.Dynamics.Nav.Client.PingPong
      • Microsoft.Dynamics.Nav.Client.VideoPlayer
    15. Delete the upgrade toolkit objects.
      1. In the Upgrade - New Version window, choose Mark/Delete Upgrade Toolkit.
        This deletes all upgrade toolkit objects, except tables
      2. In the Microsoft Dynamics NAV development environment, delete the upgrade tables by setting a field filter for objects where the Version List contains Upgrade Toolkit Table - marked for deletion.

    The database has now been through a data upgrade to Microsoft Dynamics NAV 2013 R2.

    Best regards,

    The Microsoft Dynamics NAV Service Experience team

     

  • Microsoft Dynamics NAV Team Blog

    Commerce Gateway for Microsoft Dynamics NAV 2013

    • 0 Comments

    This is a follow up on the blog entry Coming soon – Commerce Gateway for Microsoft Dynamics NAV 2013.

    We have released a sample application which illustrates how a get a Commerce Gateway solution to work in Microsoft Dynamics NAV 2013. The same solution will apply to Microsoft Dynamics NAV 2013 R2.

    The sample shows how you should set up the connection between Microsoft BizTalk and Microsoft Dynamics NAV using a web service. To get the bits for the sample, request hotfix 2892792 from Microsoft Support.

    The KB contains the following:

    1. A whitepaper describing the required steps to get the solution to work on Microsoft Dynamics NAV 2013, including how to change the upgrade tool to keep the Commerce Gateway objects as well as suggested code changes to make all objects work. The whitepaper also includes a description on how to change the BizTalk setup.
    2. A .fob file with some of the objects to make the solution work. Please note that it is only a subset of the Commerce Gateway solution, mainly the communication objects. This includes a new code unit to be exposed as a web service.
    3. A Microsoft Excel sheet showing all objects that are relevant for Commerce Gateway as well as an identification of the objects that have changed.
    4. Please note: The solution still utilizes the Commerce Gateway Request Client and the Request Server in the Microsoft Dynamics NAV 2009 version, so the limitations for a 32 bit installation are still true.

    Rikke Lassen

    Senior Program Manager

  • Microsoft Dynamics NAV Team Blog

    Microsoft Dynamics NAV 2013 R2 PLLP Toolkit Released

    • 1 Comments

    The Microsoft Dynamics NAV 2013 R2 PLLP Toolkit is now available on PartnerSource. With the Partner Localization and Translation Licensing Program (PLLP) toolkit, you can create a localized version of Microsoft Dynamics NAV 2013 R2 and make this available in countries that are not supported directly by Microsoft. The toolkit includes tools and a whitepaper that wil help you translate platform resource files and build a country/region-specific installer.

    You can find the PLLP Toolkit on the Dynamics NAV 2013 R2 download page at this location: 

    https://mbs.microsoft.com/partnersource/support/selfsupport/productreleases/MSDNAV2013R2DownloadPage.htm

     

    Best regards,

    Michael Riddersholm Petersen 

    Microsoft Dynamics NAV 

  • Microsoft Dynamics NAV Team Blog

    Microsoft Dynamics NAV 2013 R2 Management Pack for System Center Released

    • 1 Comments

    We are excited to announce that we have released the Microsoft Dynamics NAV 2013 R2 Management Pack for System Center. You can find the Management Pack and guide on the Microsoft Download Center here: http://www.microsoft.com/en-in/download/details.aspx?id=36388. The guide walks you through the details of deploying, configuring and using the management pack.

    In this blog, we are focusing on describing the benefits of the management pack, as well as some of the internals of how it works, and how it is meant to be used.

    What is new in the Management Pack?

    The Microsoft Dynamics NAV 2013 R2 Management Pack for System  Center is built on top of the previous version. The new features include:

    • New rules that collect data on all Microsoft Dynamics NAV performance counters.
    • Two new monitors for Microsoft Dynamics NAV Server instances. One of the monitors checks certificates that protect communication for the different communication endpoints. The other monitor checks the health of the individual tenants that are mounted on the server instances.

    The new monitors are simple event-based monitors that use events that are logged by each server instance. Therefore, each server instance is responsible for notifying the management pack about its own health. For certificates, this functionality is built into the server, but for tenants the story is a little different.

    Monitoring tenants with the Task Scheduler

    Microsoft Dynamics NAV 2013 R2 does not have built in monitoring, but combined with the windows Task Scheduler, an administrator can create logic that can be used to determine tenants’ health. Rules can be created that detect issues, automatically perform recoveries, and ultimately notify an operations manager of issues if the recoveries are not successful.

    Notifying and alerting an operations manager is handled via events, so the management pack has a set of simple event monitors that are triggered based on these events. Events are logged to the Windows Application event log of the computer hosting the Microsoft Dynamics Server instances.

    An example

    The following is an example of a Task Scheduler task that can be used for monitoring whether all tenant databases are available.

    This tasks runs a Windows PowerShell script that contains the actual logic. The script runs every minute. The scripts must be run in elevated mode (as an Administrator) and created as a Microsoft Dynamics NAV user.

    <?xml version="1.0" encoding="UTF-16"?>

    <Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">

      <RegistrationInfo>

        <Date>2013-09-25T11:13:51.6449819</Date>

        <Author>.\Administrator</Author>

        <Description>Test all tenant databases hosted by server instance running on the local machine.</Description>

      </RegistrationInfo>

      <Triggers>

        <TimeTrigger>

          <Repetition>

            <Interval>PT1M</Interval>

            <StopAtDurationEnd>false</StopAtDurationEnd>

          </Repetition>

          <StartBoundary>2013-10-01T11:04:09</StartBoundary>

          <Enabled>true</Enabled>

        </TimeTrigger>

      </Triggers>

      <Principals>

        <Principal id="Author">

          <UserId>.\Administrator</UserId>

          <LogonType>S4U</LogonType>

          <RunLevel>HighestAvailable</RunLevel>

        </Principal>

      </Principals>

      <Settings>

        <MultipleInstancesPolicy>Parallel</MultipleInstancesPolicy>

        <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>

        <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>

        <AllowHardTerminate>true</AllowHardTerminate>

        <StartWhenAvailable>true</StartWhenAvailable>

        <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>

        <IdleSettings>

          <StopOnIdleEnd>true</StopOnIdleEnd>

          <RestartOnIdle>false</RestartOnIdle>

        </IdleSettings>

        <AllowStartOnDemand>true</AllowStartOnDemand>

        <Enabled>true</Enabled>

        <Hidden>false</Hidden>

        <RunOnlyIfIdle>false</RunOnlyIfIdle>

        <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>

        <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>

        <WakeToRun>false</WakeToRun>

        <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>

        <Priority>7</Priority>

        <RestartOnFailure>

          <Interval>PT1M</Interval>

          <Count>2</Count>

        </RestartOnFailure>

      </Settings>

      <Actions Context="Author">

        <Exec>

          <Command>powershell</Command>

          <Arguments>.\Test-TenantDB.ps1</Arguments>

          <WorkingDirectory>C:\ScheduledMonitoring</WorkingDirectory>

        </Exec>

      </Actions>

    </Task>

    The task expects a working directory that is named C:\ScheduledMonitoring and contains the PowerShell script Test-TenantDB.ps1

    The script iterates through all the tenants hosted by all the local Microsoft Dynamics NAV Server instances, and invokes the OnRun function on Codeunit 1. The OnRun function contains no logic, so the invocation will just act as a ping, which detects whether the tenant database is available.

    The Invoke-NAVCodeunit script can be used for multiple purposes. It is very easy to use the following template to invoke random methods and execute real synthetic transactions that make sense in your environment.

    Test-TenantDB.ps1

    #--------------------------------------------------------------------------

    #     Copyright (c) Microsoft Corporation.  All rights reserved.

    #--------------------------------------------------------------------------

     

    if ((Get-PSSnapin -Registered "Microsoft.Dynamics.Nav.Management" -ErrorAction SilentlyContinue) -ne $null) {

        Add-PSSnapin "Microsoft.Dynamics.Nav.Management" }

     

    $errorVariable = $null

    $hasError = $false

     

    # test is all tenant databases can be accessed by the running server instance.

    Get-NAVServerInstance | where { $_.State -eq "Running" } | foreach {

        $serverInstance =  $_.ServerInstance

        Get-NAVTenant $serverInstance | foreach {

            # codeunit 1 will always exist

            Invoke-NAVCodeunit $ServerInstance -CodeunitId 1 -Tenant $_.Id -ErrorVariable $errorVariable -ErrorAction Continue

            if ($errorVariable -ne $null -and $errorVariable.Count -gt 0) { $hasError = $true }

        }

    }

     

    if ($hasError -eq $true) {

        # we can respond to this error level

        exit 1

    }

    Generating event log entries that will be escalated to SCOM

    There are two generic event log monitors in the management pack, one for server instances and one for mounted tenants. These monitors are described in detail in the Management Pack Guide for Microsoft Dynamics NAV 2013 R2. The communication with these monitors is rather simple when creating scheduled monitoring tasks. Basically, you can run any type of logic that matches your infrastructure and application, and then either rely on the server instance to create the proper events or create escalation events in your script.

    For a server instance named DynamicsNAV71, the format looks like this:

    # write a generic server instance event log entry that will be picked up by SCOM

    Write-EventLog -LogName 'Application' -Source “MicrosoftDynamicsNavServer$DynamicsNAV71” -EntryType Error -Message "Server instance: DynamicsNAV71 - <Here goes the actual error message, that you will send to the operations manager> " -EventId 911

    For tenants, the format differs slightly. If the server instance named DynamicsNAV71 hosts a tenant named default, then the format looks like this:

    # write a generic server instance event log entry that will be picked up by SCOM

    Write-EventLog -LogName 'Application' -Source “MicrosoftDynamicsNavServer$DynamicsNAV71” -EntryType Error -Message "Server instance: DynamicsNAV71 Tenant ID: default - <Here goes the actual error message, that you will send to the operations manager> " -EventId 911 

    The following PowerShell script, which monitors the TCP ports on all the endpoints, shows how to use the manually generated event log entries to communicate with SCOM.

    Test-TcpPortState.ps1

    #--------------------------------------------------------------------------

    #     Copyright (c) Microsoft Corporation.  All rights reserved.

    #--------------------------------------------------------------------------

     

    if ((Get-PSSnapin -Registered "Microsoft.Dynamics.Nav.Management" -ErrorAction SilentlyContinue) -ne $null) {

        Add-PSSnapin "Microsoft.Dynamics.Nav.Management" }

     

    $hasError = $false

     

    # call netstat to retrieve the status of the tcp ports on the local machine

    Function Get-TcpPortState

    {

    param(

     

               [Parameter(Position=0,ValueFromPipeline=$true)]

               [System.Int32]$Port='0'

               )

    process

               {

               netstat -ano | select-string -Pattern '\s+(TCP)' | foreach {

     

                       $item = $_.line.split(' ',[System.StringSplitOptions]::RemoveEmptyEntries)

     

                       if($item[1] -notmatch '^\[::' -and $item[1].split(':')[-1] -like $Port)

     {

              

                           New-Object -TypeName PSObject -Property @{State = $item[3]} | select -Property 'State'

     }

                          }

               }

    }

     

    # check the port status for all server instance endpoints

    Get-NAVServerInstance | where { $_.State -eq "Running" } | foreach {

        $serverInstanceFull =  $_.ServerInstance

        (Get-NAVServerConfiguration $serverInstanceFull) |  where { $_.key -like '*Port'} | foreach {

            $serverInstanceShort = $serverInstanceFull.Split('$')[1]

            $portName = $_.key

            $port = $_.value

            $state = (Get-TcpPortState $port).State

            if($state -eq $null -or $state -ne 'LISTENING')

            {

                # write an generic event log entry, that will be picked up by SCOM

                Write-EventLog -LogName 'Application' -Source $serverInstanceFull -EntryType Error -Message "Server instance: $serverInstanceShort - is not listening on $portName=$port" -EventId 911

                $hasError = $true

            }

        }

    }

     

    if ($hasError -eq $true) {

        # we can respond to this error level

        exit 1

    }

     

    Best regards,

    Stefan Omdahl & John Swymer

  • Microsoft Dynamics NAV Team Blog

    NAV Design Patterns: Your project now!

    • 0 Comments

    As the design patterns hit the NAV C/AL developers world, they've got quite a reaction from the community:

    "We've also tried this in our company, but it worked | didn't work"
    "Have you ever thought of... ?"
    "This pattern would be better if ..."
    "I have a few examples of patterns that we use and work..."
    "We've upgraded much faster by implementing this new pattern ..." (this one is my favorite... and soon to come)

    Wouldn't it be awesome, if any C/AL developer who has something to say, could comment, edit or add new NAV Design Patterns?

    To open this to the community, we've added a NAV Design Patterns Wiki on the Dynamics Community webpage. What you'll find there:

    • The patterns published so far on the blog
    • New patterns! from our latest release. Explaining the MiniApp. Explaining new paradigms we used for better error handling, for localisations, for better user experiences
    • The possibility to comment (yes, we update the patterns if the comments are good)
    • The chance to be an author and to get credit on it. See how.

    As promised at NAV Tech Days 2013, to make it easy for you to write a pattern, find here the template that we've used, explained.

    And this is the teaser for our latest pattern:

    Easy Update of Setup or Supplementary Information

    By Anders Larsen at Microsoft Development Center Copenhagen

    Meet the Pattern

    Users or the administrator must regularly update setup or supplementary information in the day-to-day business, such as setting up a new type of customer. This setup task often arrives when their focus is on registration and execution instead of setup.

    The navigation experience around these extra steps is often quite troublesome and time-consuming. To enable users to easily perform the needed update, a guide often gives the best support.

    To guide users, we can prompt them with a dialog on which they can update the setup or supplementary information instantly and easily, so that they can proceed with the business task without being side-tracked. 

    Continue reading on NAV Patterns Wiki..

    Hoping this work will bring value to you,

    The NAV Design Patterns team

  • Microsoft Dynamics NAV Team Blog

    Creating URLs to Microsoft Dynamics NAV Clients

    • 6 Comments

    The URL builder function, GETURL, is released in Microsoft Dynamics NAV 2013 R2 to reduce coding time for developers who need to create various URL strings to run application objects in either the win client, the web client, or on web services. In addition, the GETURL function makes multitenancy features more transparent to C/AL developers.

    Details

    Ever had to construct win client URLs like the one below?

    dynamicsnav://myserver:7046/myInstance/myCompany/runpage?page=26

    Today, Microsoft Dynamics NAV also provides a web client. This means that you must update your code to construct web client URLs too. What about multitenancy? The URL Builder should know if it is running in a multitenant setup and it should know how to choose the right tenant. What about maintaining this code?

    The good news is that GETURL has been introduced to handle all URL building for you.

    GETURL automatically handles:

    • Multitenancy
    • Correct URL format for each client
    • Publicly accessible hostnames.

    Usage

    The format is:

    [String :=] GETURL(ClientType[, Company][, Object Type][, Object Id][, Record])

    Where:

    • Client Type can be: Current, Default, Windows, Web, SOAP, or OData. This enables a range of scenarios for the C/AL developer, such as moving to the web client without changing code to decide where the URL should point to. This is done either by setting Client Type to Current, and just ensuring that web is used to invoke the link creation, or by setting Client Type to Default and changing its value to Web when it is ready to move to the web platform.
    • Object Type and Object ID define the type of the application object to run (Table, Page, Report, Codeunit, Query, or XMLport) and its ID.
    • Record specifies the actual data to run the URL on, such as:

    Vendor.GET("Account No.");

    GETURL(CLIENTTYPE:WEB,COMPANYNAME, OBJECTTYPE::Page,27,Vendor)

    Note: It is currently not possible to set filters on the record that you sent as a last parameter to the GETURL function. However, it is possible to write your own code to compute and append the filter string to the URL that is created by the GETURL function.

    The server name and instance are extracted automatically by GETURL and do not need to be specified by the C/AL developer. Furthermore, the multitenancy setup is transparent to the C/AL developer. No multitenancy parameters are specified when you call GETURL, because the function knows from the server setup if it is running in a multitenant environment and if so, it will add a string like "&tenant=MyTenant" to the URL.

    When to Use

    The GETURL function can generally be used every time a URL must be created. The following are some scenarios where the function is particularly useful.

    • Document approvals. For more information, see the “NAV Usage Example” section.
    • Reports containing drill-down links. (Beware of the resource cost of adding a new URL element to the Report dataset.)
    • When planning to write code for, or migrate to, various display targets (Microsoft Dynamics NAV Windows client, Microsoft Dynamics NAV web client, Microsoft Dynamics NAV web services) without having to explicitly specify which client to use.

    Examples of Usage

    The following are examples of calls to GETURL and their corresponding return value:

    Command

    URL

    GETURL(CLIENTTYPE::Win)

    dynamicsnav://MyServer:7046/DynamicsNAV71//

    GETURL(CLIENTTYPE::Web)

    https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient

    GETURL(CLIENTTYPE::OData)

    http://MyServer:7048/DynamicsNAV71/OData

    GETURL(CLIENTTYPE::SOAP)

    http://MyServer:7047/DynamicsNAV71/WS/Services

    GETURL(CLIENTTYPE::Current) ie. When running this code on a Win client session

    dynamicsnav://MyServer:7046/DynamicsNAV71//

    GETURL(CLIENTTYPE::Default) ie. When the Server config key DefaultClient is set to Windows

    dynamicsnav://MyServer:7046/DynamicsNAV71//

    GETURL(CLIENTTYPE::Windows,COMPANYNAME)

    dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/

    GETURL(CLIENTTYPE::Windows,'')

    dynamicsnav://MyServer:7046/DynamicsNAV71//

    GETURL(CLIENTTYPE::Windows,'NONEXISTING Corp')

    dynamicsnav://MyServer:7046/DynamicsNAV71/NONEXISTING Corp/

    GETURL(CLIENTTYPE::Web,COMPANYNAME)

    https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient?company=CRONUS

    GETURL(CLIENTTYPE::Web,'')

    https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient

    GETURL(CLIENTTYPE::Web,'NONEXISTING Corp')

    https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient?company=NONEXISTING Corp

    GETURL(CLIENTTYPE::OData,COMPANYNAME)

    http://MyServer:7048/DynamicsNAV71/OData/Company('CRONUS')

    GETURL(CLIENTTYPE::OData,'')

    http://MyServer:7048/DynamicsNAV71/OData

    GETURL(CLIENTTYPE::OData,'NONEXISTING Corp')

    http://MyServer:7048/DynamicsNAV71/OData/Company('NONEXISTING Corp')

    GETURL(CLIENTTYPE::SOAP,COMPANYNAME)

    http://MyServer:7047/DynamicsNAV71/WS/CRONUS/Services

    GETURL(CLIENTTYPE::SOAP,'')

    http://MyServer:7047/DynamicsNAV71/WS/Services

    GETURL(CLIENTTYPE::SOAP,'NONEXISTING Corp')

    http://MyServer:7047/DynamicsNAV71/WS/NONEXISTING Corp/Services

    GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Table,27)

    dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runtable?table=27

    GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Page,27)

    dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runpage?page=27

    GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Report,6)

    dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runreport?report=6

    GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Codeunit,5065)

    dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runcodeunit?codeunit=5065

    GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Query,9150)

    dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runquery?query=9150

    GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::XmlPort,5150)

    dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runxmlport?xmlport=5150

    GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Page,27) ie. When the Web Service is published

    http://MyServer:7048/DynamicsNAV71/OData/Company('CRONUS')/PAG27Vendors

    GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Query,9150)  ie. When the Web Service is published

    http://MyServer:7048/DynamicsNAV71/OData/Company('CRONUS')/QUE9150MyCustomers

    GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Page,27)  ie. When the Web Service is published

    http://MyServer:7047/DynamicsNAV71/WS/CRONUS/Page/PAG27Vendors

    GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Codeunit,5065)  ie. When the Web Service is published

    http://MyServer:7047/DynamicsNAV71/WS/CRONUS/Codeunit/COD5065EmailLogging

    GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Page,27,record) List Page

    dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runpage?page=27&bookmark=23;FwAAAAJ7/0kAQwAxADAAMwAw

    GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Page,26,record) Card Page

    dynamicsnav://MyServer:7046/DynamicsNAV71/CRONUS/runpage?page=26&bookmark=23;FwAAAAJ7/0kAQwAxADAAMwAw

    GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Page,27,record) List Page

    https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient?company=CRONUS&page=27&bookmark=23;FwAAAAJ7/0kAQwAxADAAMwAw

    GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Page,26,record) Card Page

    https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient?company=CRONUS&page=26&bookmark=23;FwAAAAJ7/0kAQwAxADAAMwAw

    GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Page,27,record)

    http://MyServer:7048/DynamicsNAV71/OData/Company('CRONUS')/PAG27Vendors('IC1030')

    GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Page,27)

    https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient?company=CRONUS&page=27

    GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Report,6)

    https://navwebsrvr:443/DynamicsNAV71_Instance1/Webclient?company=CRONUS&report=6

    If the GETURL function is called with invalid parameters, it will return an empty string. In that case, you can find the related error text by calling the GETLASTERRORTEXT function.

    Function Call

    Error Message

    GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Table,27)

    The specified object type parameter for the GetUrl function is not valid.

    GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Codeunit,5065)

    The specified object type parameter for the GetUrl function is not valid.

    GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::Query,9150)

    The specified object type parameter for the GetUrl function is not valid.

    GETURL(CLIENTTYPE::Web,COMPANYNAME,OBJECTTYPE::XmlPort,5150)

    The specified object type parameter for the GetUrl function is not valid.

    GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Table,27)

    The specified object type parameter for the GetUrl function is not valid.

    GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Page,27)

    The Page object, 27, that is specified for the GetUrl function has not been published in the Web Services table.

    GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Report,6)

    The specified object type parameter for the GetUrl function is not valid.

    GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Codeunit,5065)

    The specified object type parameter for the GetUrl function is not valid.

    GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::Query,9150)

    The Query object, 9150, that is specified for the GetUrl function has not been published in the Web Services table.

    GETURL(CLIENTTYPE::OData,COMPANYNAME,OBJECTTYPE::XmlPort,5150)

    The specified object type parameter for the GetUrl function is not valid.

    GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Table,27)

    The specified object type parameter for the GetUrl function is not valid.

    GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Page,27)

    The Page object, 27, that is specified for the GetUrl function has not been published in the Web Services table.

    GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Report,6)

    The specified object type parameter for the GetUrl function is not valid.

    GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Codeunit,5065)

    The Codeunit object, 5065, that is specified for the GetUrl function has not been published in the Web Services table.

    GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Query,9150)

    The specified object type parameter for the GetUrl function is not valid.

    GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::XmlPort,5150)

    The specified object type parameter for the GetUrl function is not valid.

    GETURL(CLIENTTYPE::SOAP,COMPANYNAME,OBJECTTYPE::Page,27,record)

    You cannot specify a record parameter for the GetUrl function when the object type is SOAP

    NAV Usage Example

    The following example shows how to use the GETURL function in codeunit 440 to ensure that the notification mail in Document Approvals can link to both the Microsoft Dynamics NAV Windows client and the Microsoft Dynamics NAV web client:

    This resulting UI looks as follows.

    The first link opens the approval document in the Microsoft Dynamics NAV Windows client. The second link (Web view) opens the same document in the Microsoft Dynamics NAV web client.

     

    Best regards,

    Mike Borg Cardona, Bogdana Botez, and the Microsoft Dynamics NAV team

  • Microsoft Dynamics NAV Team Blog

    Creating your first Hello World control add-in for the Web client

    • 0 Comments

    In Microsoft Dynamics NAV 2013 R2, the Microsoft Dynamics NAV Web client now also supports extensibility, enabling control add-ins that display, for example, a chart or a map.

    This means that you can write new control add-ins that you can use on both the Windows client and on the Web client. The following tutorial will walk you through the steps of creating a Hello World example that displays on the Web client.

    To complete the following steps, you will need:

    • Microsoft Dynamics NAV 2013 R2 with a developer license. For more information, see System Requirements for Microsoft Dynamics NAV 2013 R2.
    • CRONUS International Ltd. demonstration database.
    • Microsoft Visual Studio 2008 Express, Microsoft Visual Studio 2008, Microsoft Visual Studio 2010, or Microsoft Visual Studio 2012.
    • Microsoft .NET Framework Strong Name tool (sn.exe). This is included with Visual Studio and the Windows SDK.
      • By default, the Microsoft .NET Framework Strong Name tool is located in C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bin\NETFX <version> Tools or in a location similar to this one, depending on what operating system you are using.
    • Experience using Visual Studio.

    To create your first Hello World control add-in for the Web client

    1. In Visual Studio, create a new Visual C# project of type Class Library. Name the solution HelloWorld.
    2. Add a reference to the following assembly:
      Microsoft.Dynamics.Framework.UI.Extensibility.dll.
    3. Open the Class1.cs file and add the following lines of code:

      // Copyright ©Microsoft Corporation. All Rights Reserved.

      // This code is released under the terms of the Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)

      using System;

      using System.Collections.Generic;

      using System.Linq;

      using System.Text;

      using System.Threading.Tasks;

      using Microsoft.Dynamics.Framework.UI.Extensibility;

       

       

      namespace HelloWorld

      {

          public class Class1

          {

              [ControlAddInExport("HelloWorld")]

              public interface iHelloWorld

              {

                  [ApplicationVisible]

                  event ApplicationEventHandler ControlAddInReady;

              }

          }

      }

    4. In Visual Studio, on the Project menu, choose ClassLibrary Properties, and then choose Signing. Select the Sign the Assembly check box and choose
      a strong name key file.

    5. Now build the project.

    6. Once the project is built, you must copy the output assembly file to the computer that is running the Microsoft Dynamics NAV Development Environment. You locate and copy the control add-in assembly file (.dll), which is in the control add-in project output folder. By default, this is C:\Documents\MyDocuments\Visual Studio\Projects\[Your Addin Project]\[Your Class Library]\bin\Debug.

    7. On the computer running the development environment, paste the assembly file in the Add-ins folder. By default, this is C:\Program Files (x86)\Microsoft Dynamics NAV\71\RoleTailored Client \Add-ins.

      At this point, in more complicated scenarios, you will create a manifest file and any resource files that you need to display your control add-in, such as images or style sheets. But for this HelloWorld example, we will skip right to registering the control add-in in Microsoft Dynamics NAV.

    8. To register a control add-in, you include it in the Control Add-ins page in the Microsoft Dynamics NAV client. Enter the name of the control add-in as stated in the Microsoft.Dynamics.Framework.UI.Extensibility.ControlAddInExport, which in this code example is HelloWorld.

    9. Enter the public key token, which you can determine by running the Microsoft .NET Framework Strong Name tool (sn.exe) on the assembly.

    10. Enter a descriptive text for your control add-in.
      Now only a few steps remain to include your HelloWorld control add-in on a page.

    11. From the Microsoft Dynamics NAV Development Environment, open Object Designer.

    12. Create a new page and add a field control that can hold the HelloWorld control add-in. Something very simple like this will do:

    13. Open the Properties window for the field control, locate the ControlAddIn property and select the HelloWorld control add-in from the Client Add-in lookup window. Choose the OK button.

    14. Save and compile the page. Remember the page ID for the next step.

    15. Run the new page from a web browser with the following command:
      http://MyWebServer:8080/DynamicsNAV71/WebClient/list.aspx?company=CRONUS%20International%20Ltd.&page=MyPageID

    16. You should now see something like this:

    Now you probably want to try a more advanced example. Go to Help for Microsoft Dynamics NAV 2013 R2 and read through the documentation on extending Microsoft Dynamics NAV. For more information, see Walkthrough: Creating and Using a Client Control Add-in in the MSDN Library.

    Best regards,

    The Dynamics NAV team

  • Microsoft Dynamics NAV Team Blog

    How to Deploy a Microsoft Dynamics NAV 2013 R2 Help Server

    • 8 Comments

    As most of you have already found out, we, the NAV R&D team, have developed a new Help Server that shows Help on a website. Help is available for the Windows client as in earlier versions. With the Help Server, the same Help is available from the Web client. Choose a field, and context-sensitive Help opens.

    The Help Server is a website that displays HTML files. Yes, you read correctly: HTML files. So you don’t have to decompile the Microsoft CHM files anymore. But the really good news is that the Help that you created for your current NAV solution will still work with the new Help Server. You just need to build it again with the new Help Toolkit, and then copy the resulting HTML files to the relevant folder on the Help Server website. Then, you can start connecting your users to the Help Server.

    Here are the main steps for deploying your Help to your customers.

    1. Install the Microsoft Dynamics NAV 2013 R2 Help Server. For more information, see Microsoft Dynamics NAV Help Server in the MSDN Library.
      • When you choose the Help Server option in Microsoft Dynamics NAV Setup, a Help Server website is set up for you with folders containing the HTML Help that Microsoft provides.
    2. Install the Microsoft Dynamics NAV 2013 Help Toolkit that is available for download from PartnerSource.
    3. Rebuild your existing Help files with the NAV 203 version of HelpBuilder, but change some of the configuration settings. For more information, see Upgrading Your Existing Help Content in the MSDN Library.

    4. Add the HTML files that HelpBuilder creates to the relevant language-specific folders on your Help Server website.

    5. Grant your users access to the website.

    6. Configure the Microsoft Dynamics NAV 2013 R2 clients to look up Help on your Help Server.

      • This configuration is part of Microsoft Dynamics NAV 2013 R2 Setup. Alternatively, you can configure the Web client server components and the Windows clients manually.

    7. Start a Microsoft Dynamics NAV 2013 R2 client and access Help.

    You can set up a Help Server that all your users can access, or you can set up multiple Help Servers. You can modify the Microsoft-provided Help content without decompiling anything, and you can add and remove Help content whenever you want to. You can add links to existing Word documents or PDF documents to the navigation pane of the Help Server website, so that you users have a single point of entry for Help.

    With the Microsoft Dynamics NAV 2013 R2 Help Server, you can provide the Help content that is relevant for your users, and you can update Help without modifying each client computer.

    We will improve the Help Server in future releases of Microsoft Dynamics NAV, so we hope you will like it as much as we do.

     

    Best regards,

    The Dynamics NAV team

Page 3 of 41 (615 items) 12345»