Showing posts with label NAV 2017. Show all posts
Showing posts with label NAV 2017. Show all posts

Wednesday, September 19, 2018

Connection Error while launching debugger in NAV

Recently I was working on a project where we have switched the authentication from Windows to NAVUserPassword.

To access different databases and instances we have created different config files and have used them in our shortcut to launch them, everything was working fine but when I try to debug an issue, I was getting the following error, which complains about the DnsIdentity

SNAGHTMLd9b5b4

The key is when  you launch the debugger it uses the config file (ClientUserSettings.config.) located at C:\Users\YourUserName\AppData\Roaming\Microsoft\Microsoft Dynamics NAV\70 and depending on the version you are on it would be 80 or 90 folder. It does not use your custom config files you have created to launch the application.

So, you need to make sure this file is also updated with proper authentication using the ClientServicesCredential which should be NAVUserPassword if you are using UserName/Password. In my case everything was set properly except the DnsIdentity Property value which is blank.

Once I updated the DnsIdentity Value with proper subject name which is the CN name , the debugger started without any issues.

For more information about DnsIdentity and Certificates please check the following link

https://docs.microsoft.com/en-us/dynamics-nav/how-to--configure-authentication-of-microsoft-dynamics-nav-web-client-users

Share:

Friday, January 5, 2018

January 2018 Cumulative Updates for NAV 2013, 2013 R2, 2015, 2016 and 2017

Here are links to the release notes and download link for the CU's released.

NAV 2013 – Cumulative Update 58

You can download the cumulative update from KB4058596

NAV 2013 R2 – Cumulative Update 51

You can download the cumulative update from KB4058597

NAV 2015 – Cumulative Update 39

You can download the cumulative update from KB4058598

NAV 2016 – Cumulative Update 27

You can download the cumulative update from KB4058599

NAV 2017 – Cumulative Update 14

You can download the cumulative update from KB4058600

Share:

Friday, September 22, 2017

How to print a remote file from NAV

fax-1889061_1920

I have seen couple of times the requirement where we need to print a document from NAV which is not a report, it could be a marketing campaign letter, sales sheets or any other document.

Most of the time we upload these kind of documents on a website/remote site, so if we need print those documents with every invoice or any other statement, below is the function you can use from NAV.

In the below example I just took a random PDF URL from the web and used it for testing.

The key in this function is to download the document from the web using WebClient locally and then use the Process to print the document to the printer.

LOCAL PROCEDURE PrintRemoteFile@1240060002();
     VAR
       FileURL@1240060000 : Text;
       ProcessStartInfo@1240060001 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Diagnostics.ProcessStartInfo";
       Process@1240060002 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Diagnostics.Process";
       WebClient@1240060003 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.WebClient";
       LocalFileName@1240060004 : Text;
     BEGIN
       FileURL := 'http://che.org.il/wp-content/uploads/2016/12/pdf-sample.pdf';
       ProcessStartInfo := ProcessStartInfo.ProcessStartInfo();
       WebClient := WebClient.WebClient();
       LocalFileName := 'C:\Temp\TempFile.pdf';
       WebClient.DownloadFile(FileURL,LocalFileName);
       ProcessStartInfo.FileName := LocalFileName;
       ProcessStartInfo.Verb := 'Print';
       ProcessStartInfo.CreateNoWindow := FALSE;
       Process := Process.Process;
       Process := Process.Start(ProcessStartInfo);
       MESSAGE('Document Printed');
     END;

If you have any other tips or suggestions to resolve this error, please do share them in the comments below.

Share:

Wednesday, February 22, 2017

Keyboard Shortcuts for the New NAV Development Environment

keys-97875_1280

The following table provides an overview of some of the shortcut key combinations that you can use when you're working with Dynamics NAV in Visual Studio Code. For a complete overview, see Key Bindings for Visual Studio Code

Editing

Keyboard Shortcut

Action

Ctrl+Space

Look up suggestions for the current object

Ctrl+X

Cut

Ctrl+C

Copy

Ctrl+V

Paste

Ctrl+F2

Select all occurrences

F12

Go to definition

Alt+F12

Peek definition

Shift+F12

Show References

Ctrl+Shift+Space

Look up parameter hints

Ctrl+K Ctrl+C

Add line comment

Ctrl+K Ctrl+U

Remove line comment

Ctrl+Shift+P

Show All Commands

Errors

Keyboard Shortcut

Action

F8

Move to the next error or warning

Shift+F8

Move to the previous error or warning

Compile

Keyboard Shortcut

Action

Ctrl+Shift+B

Compile and build the solution

F5

Build and deploy


(Source: https://msdn.microsoft.com/en-us/dynamics-nav/newdev-keyboard-shortcuts)


Do you have any other shortcuts or suggestions? Please let me know in the comments below.

Share:

Thursday, February 16, 2017

Cumulative Update 03 for Microsoft Dynamics NAV 2017 (Build 15140)

Cumulative Update 03 includes all application and platform hotfixes and regulatory features that have been released for Microsoft Dynamics NAV 2017.

The cumulative update is intended mainly for solutions that are experiencing the problems described in the Knowledge Base article linked to below. However, you are advised to always keep your solution updated with the latest cumulative update. If you are in doubt about whether this cumulative update addresses your specific problem, or if you want to confirm whether any special compatibility, installation, or download issues are associated with this cumulative update, support professionals in Customer Support Services are ready to help you. For more information, see http://support.microsoft.com/contactus/.

The cumulative update includes hotfixes that apply to all countries and hotfixes specific to the following local versions:

Where to find Cumulative Update 03

You can download the cumulative update from KB 4011763  – Cumulative Update 3 for Microsoft Dynamics NAV 2017 (Build 15140).

You can press one of the countries in list above for a direct download or you can download the cumulative update from the Microsoft Download Center.

To learn more about other Cumulative Updates already released for Microsoft Dynamics NAV 2017 please see KB  3210255.

Warning

Before you install a cumulative update in a production environment, take the following precautions:

  1. Test the cumulative update in a non-production environment.
  2. Make a backup of the system or computer where the cumulative update is to be installed.

Additional Information

For information about how to install the cumulative update, see How to Install a Microsoft Dynamics NAV 2017 Cumulative Update.

Share:

Wednesday, January 4, 2017

How to upload files to FTP server using .NET Interop

upload-1118929

In my previous posts i have explained how to download the files from the FTP Server or  move the files from one folder to another on the FTP server. Here are the posts if you have missed them

How to download files from FTP server using .NET Interop

How to move files from one folder to another on FTP server.

In this post i will show you the code i have used to upload the files to the FTP server.   The FTPSetup is a Setup table which I have used to store the path, ftp server, user, and password information.

In the first function (UploadFilesToFTP) I have used an Array to store the paths of all the files from the upload directory, then I iterate through the array and execute second function to upload the file. In the second function it uses FTP Web Request method ‘STOR’ to upload the file to the server.


LOCAL PROCEDURE UploadFilesToFTP@1240060030();
     VAR
       FTPWebRequest@1240060000 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.FtpWebRequest";
       FTPWebResponse@1240060001 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.FtpWebResponse";
       NetworkCredential@1240060002 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.NetworkCredential";
       WebRequestMethods@1240060003 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.WebRequestMethods+File";
       UTF8Encoding@1240060004 : DotNet "'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Text.UTF8Encoding";
       ResponseStream@1240060005 : InStream;
       FileStream@1240060006 : DotNet "'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.FileStream";
       TempBlob@1240060008 : TEMPORARY Record 99008535;
       FileName@1240060007 : Text;
       OutStream@1240060009 : OutStream;
       SearchOption@1240060013 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.SearchOption" RUNONCLIENT;
       ArrayHelper@1240060012 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Array" RUNONCLIENT;
       ArrayLength@1240060011 : Integer;
       DirectoryHelper@1240060014 : DotNet "'mscorlib'.System.IO.Directory" RUNONCLIENT;
       i@1240060015 : Integer;
       RelativeServerPath@1240060016 : Text;
       ClientFilePath@1240060017 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.String" RUNONCLIENT;
       PathHelper@1240060010 : DotNet "'mscorlib'.System.IO.Path";
     BEGIN
       GetFTPSetup;
       ArrayHelper := DirectoryHelper.GetFiles(FTPSetup."FTP Local Upload FilePath",'*.txt',SearchOption.TopDirectoryOnly);

      ArrayLength := ArrayHelper.GetLength(0);

      IF ArrayLength = 0 THEN
         EXIT;

      FOR i := 1 TO ArrayLength DO BEGIN
         RelativeServerPath := FORMAT(ArrayHelper.GetValue(i - 1));
          UploadFileToFTP(RelativeServerPath);
       END;
     END;

    LOCAL PROCEDURE UploadFileToFTP@1240060031(FileToUpload@1240060018 : Text);
     VAR
       FTPWebRequest@1240060000 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.FtpWebRequest";
       FTPWebResponse@1240060001 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.FtpWebResponse";
       NetworkCredential@1240060002 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.NetworkCredential";
       WebRequestMethods@1240060003 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.WebRequestMethods+File";
       UTF8Encoding@1240060004 : DotNet "'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Text.UTF8Encoding";
       ResponseStream@1240060005 : InStream;
       FileStream@1240060006 : DotNet "'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.FileStream";
      Stream@1240060020 : DotNet "'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.Stream";
       FileDotNet@1240060019 : DotNet "'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.File";
       TempBlob@1240060008 : TEMPORARY Record 99008535;
       FileName@1240060007 : Text;
       OutStream@1240060009 : OutStream;
       SearchOption@1240060013 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.SearchOption" RUNONCLIENT;
        i@1240060015 : Integer;
       RelativeServerPath@1240060016 : Text;
       ClientFilePath@1240060017 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.String" RUNONCLIENT;
       PathHelper@1240060010 : DotNet "'mscorlib'.System.IO.Path";
     BEGIN
       GetFTPSetup;
       FTPWebRequest := FTPWebRequest.Create(FTPSetup."FTP Local Upload FilePath" + PathHelper.GetFileName(FileToUpload));
       FTPWebRequest.Credentials := NetworkCredential.NetworkCredential(FTPSetup."FTP UserName",FTPSetup."FTP Password");
       FTPWebRequest.UseBinary := TRUE;
       FTPWebRequest.UsePassive := TRUE;
       FTPWebRequest.KeepAlive := TRUE;
       FTPWebRequest.Method := 'STOR';

      FileStream := FileDotNet.OpenRead(FileToUpload);
       Stream := FTPWebRequest.GetRequestStream();
       FileStream.CopyTo(Stream);
       Stream.Close;

      FTPWebResponse := FTPWebRequest.GetResponse();
       FTPWebResponse.Close();
     END;

Please leave your comments, feedback or any suggestions you have for me to improve my blog and also if you have any questions, feel free to post.

Share: