RSS

Tag Archives: Dynamics NAV

XMLPort: Import Into Temporary Table

Earlier today I wrote a blog post XMLPort: Export from temporary tables. The principle is the same when you want to import to a temporary table. Instead of calling a function in XMLPort before you call the export that inserts values into the temporary table you do the opposite, call a function after the import has completed that copies all the temporary data to your temporary record parameter.   Read the rest of this entry »

 
1 Comment

Posted by on 2015-08-08 in Okategoriserade

 

Tags: , , ,

Dynamics NAV System.StackOverflowException: NST crashes

We had this scenario were had new update of a partner addon that we should implement in the production environment. Before the implementation we had done a couple of tests to verify that the addon was working. But on the day we put update in the production environment the NST (NAV Service Tier) started to crash after 1,5h and continued to crash every five minutes. It was really bad, we had no clue about what was causing this except that it must come from the update. It was actually so bad that we decided to do a rollback by restoring a SQL backup.

When we looked in the eventviewer and we found three event that tells us about the crash.System.StackOverflowException

The first one says:
Faulting application name: Microsoft.Dynamics.Nav.Server.exe, version: 8.0.38457.0, time stamp: 0x5452bd3b
Faulting module name: unknown, version: 0.0.0.0, time stamp: 0x00000000
Exception code: 0xc00000fd
Fault offset: 0x00007ffbcab200d7
Faulting process id: 0x31bc
Faulting application start time: 0x01d0a33d1cface2b
Faulting application path: C:\Program Files\Microsoft Dynamics NAV\80\Service\Microsoft.Dynamics.Nav.Server.exe
Faulting module path: unknown
Report Id: a4e43f71-0f30-11e5-80c8-0050569da38d
Faulting package full name:
Faulting package-relative application ID:

The second and the third message from the source “Windows Error Reporting” gave the error message:
Fault bucket , type 0
Event Name: CLR20r3
Response: Not available
Cab Id: 0

Problem signature:
P1: Microsoft.Dynamics.Nav.Server
P2: 8.0.38457.0
P3: 5452bd3b
P4: RecordXXXXX
P5: 0.0.0.0
P6: 5577c927
P7: 4
P8: 0
P9: System.StackOverflowException
P10:

Attached files:

These files may be available here:
C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_Microsoft.Dynami_XXXX

Analysis symbol:
Rechecking for solution: 0
Report Id: a4e43f71-0f30-11e5-80c8-0050569da38d
Report Status: 4100

The interesting part of this message is P4 and P9. Here we can see that error appears in recordXXXXX and that it is a System.StackOverflowException.

System.StackOverflowException is: “The exception that is thrown when the execution stack overflows because it contains too many nested method calls. This class cannot be inherited.

After a lot of more testing we finally found the error. The reason was that we had a loop of infinity. We had function1 that called a function2 that in its turn called function1. A loop that never stops. This code was originally run from a OnValidate trigger in recordXXXXX. So to summarize this, look for a loop of infinity in the object that was stated in P4.

I hope this help you solve the problem. Good luck!

 
Leave a comment

Posted by on 2015-06-12 in Okategoriserade

 

Tags: , , , ,

Net.TCP Port Sharing: Dynamics NAV 2015 and Azure

If you come from the Dynamics NAV community you probably have seen the blog post from one of my favorite bloggers: Port Sharing with NAV2013. This blog describes in detail on how to set up port sharing to several NAV service tiers (NST).

So what is new then? If you run the 1VM/2VM script it will by default install a NST service with a local user account instead of using one of the system accounts. So if you follow Waldo´s instructions on how activate port sharing you will get an error like this:

The service MicrosoftDynamicsNavServer$DynamicsNAV80_Instance1 failed to start. This could be caused by a configuration error. Detailed error information:System.ServiceModel.CommunicationException: The service endpoint failed to listen on the URI ‘net.tcp://SERVERNAME:9001/DynamicsNAV80_Instance1/Service’ because access was denied. Verify that the current user is granted access in the appropriate allowAccounts section of SMSvcHost.exe.config. —> System.ComponentModel.Win32Exception: Access is denied
at System.ServiceModel.Activation.SharedMemory.Read(String name, String& content)

Read the rest of this entry »

 
1 Comment

Posted by on 2014-10-27 in Okategoriserade

 

Tags: , , , ,

Dynamics NAV ClickOnce: Install 2013/2015 Help Server

One of the less good things with the 1VM/2VM script is that it doesn’t install a NAV help server.

So in order to get the help server to work with the newly installed ClickOnce client in your Azure environment you have to do the following things:

  1. Install the help server from the NAV DVD on the current machine
  2. Add the help server URL to ClientUserSettings.config in the ClickOnce folder
  3. Add an endpoint to the Azure VM in the Azure portal
  4. Update the ClickOnce deployment

Read the rest of this entry »

 
1 Comment

Posted by on 2014-10-18 in Okategoriserade

 

Tags: , , ,

Dynamics NAV ClickOnce: “File, FILENAME application identity.manifest, has a different computed hash than specified in manifest.”

Ok, you have probably landed here because you are trying to update your ClickOnce deployment but gets the error “application identity.manifest, has a different computed hash than specified in manifest.” .

In my case the reason was that I had done the wrong order when building the deployment.

Read the rest of this entry »

 
1 Comment

Posted by on 2014-10-18 in Okategoriserade

 

Tags: , ,

Dynamics NAV Role Center: Wrong Language In Profile

We had this customer where the role centers/profiles seemed messed up. The language was in swenglish, a combination of both swedish and english.

SwenglishProfile

First I thought this was a another bieffect of cumulative update 8 to Dynamics NAV 2013 R2 were Microsoft screwed and missed and wrote over several local language captions. Affected countries are Sweden, Norway, Denmark, Germany and perhaps some more. Hopefully they will fix it to cumulative update 12. Anyway, I checked it and this wasn’t the fault so I did what every smart person does. I googled it.  Trying to find some information by googling phrases like:

Wrong language in the ribbon

Profile with wrong language

Role center language problem

But I came up very short. When I investigated the issue further I noticed that the faulty captions couldn’t be changed in either pages or menuitems. I then realised that the language must be like the charts, it is localized and is found in a blob somewhere. I found How to:Export or Import Profiles on msdn. By exporting it to a XML file and open it I could verify that I have found the source to my language problem.

So why did we have faulty language version? I realised that the cronus database we were using didn’t come from a swedish installation but came from our add-on partner which had used a W1 version. Why did they use a W1? Well, it is an international addon and it is always easier to demo and maintain a version in W1 then maintaining it in other languages.

The solution is export all the profiles from a swedish cronus and then import them into the target database. I calculated the profiles to be ~25 so it would take some time to export/import them all since you can only do it one by one. But since I like automation I instead created a tool that exports all the profiles and imports them all at once. If you are interested in having it, comment and I’ll maybe publish the code in a blog post.

 
Leave a comment

Posted by on 2014-10-07 in Okategoriserade

 

Tags: , ,

Dynamics NAV Performance: Record Data Operations

NAV has come very far as product and it has changed a lot over time and the big question today is, do you change with it or do you code like it is 1990? 🙂

When we were using native databases we used find(‘-‘) to find a record set. When SQL arrived we instead used findfirst because it was much faster. But what should we use nowadays?

I have created a function to measure all the record operations in a 2009 R2 SQL environment and in a 2013 R2.

Here is an example of the measuring code:

InitTime := TIME;
FOR Loop:=1 TO RECLoop DO BEGIN
  GLEntry.RESET;
  GLEntry.SETRANGE("G/L Account No.",'2645');
  IF GLEntry.FINDFIRST THEN;
END;
FindSetDuration := TIME - InitTime;

Lets take a look at the result in Dynamics NAV 2009 R2 (SQL):

PerformanceRecordDataOperations2009

Here are no big surprises. Find(‘-‘) is not the fastest operation anymore since the switch from native to sql database. Findfirst is the fastest operation and is good to use if you just want to see if a record set is empty or not.

Lets take a look at the result in 2013 R2:

Performance2013RecordDataOperations

If you start by comparing the overall times with the 2009 you can see major difference. Both tests have been run on the same machine, same and yet the 2013 R2 version is almost twice as fast as the 2009!

The next big surprise is IsEmpty. In 2009 R2 this was the slowest operation, in 2013 R2 this is the fastest operation!

What can we learn from this? If we want to optimize your code from a SQL perspective we should use IsEmpty instead of findfirst whenever we need to check if a record set is empty or not. For instance:

Setrange(x)
If findfirst then begin
  Findset
  Repeat
     //Do stuff
  Until next = 0;
end;

Should now instead be:

Setrange(x)
If Not IsEmpty then begin
  Findset
  Repeat
     //Do stuff
  Until next = 0;
end;
 
2 Comments

Posted by on 2014-10-07 in Okategoriserade

 

Tags: ,

 
Dynamics 365 Business Central for Partners

Reflections from the ERP field

Freddys blog

Learn something new... - then Teach someone!

Stefano Demiliani Technical Blog

Reflections from the ERP field

David Worthington's NAV Performance Blog

Micosoft Dynamics NAV Performance Testing & Optimization

Freddys Blog

Reflections from the ERP field

Mark Brummel Blog | Microsoft Dynamics NAV

Master Classes Design Patterns and more...

Vjeko.com

ideas in the cloud

Goprowe AB

Reflections from the ERP field

ArcherPoint Developer Blog

Reflections from the ERP field

The NAV Viking´s Blog

- Sharing my experience in the Dynamics NAV world

Comments for waldo's blog

Reflections from the ERP field

Nav Can Be Fun

Its Really Fun to Work with Microsoft Dynamics Nav / D365 Business Central

Navision-Girl.Com

Reflections from the ERP field

Kine's Info

Reflections from the ERP field

blog.wibeck.org/

Just another WordPress.com site

NAV/SQL Performance - My Two Cents

Reflections from the ERP field

Hougaard.com – Applied Hacking

Reflections from the ERP field

Kauffmann @ Dynamics 365 Business Central

Reflections from the ERP field