Queries included in the URL in Dynamics 365 for Operations

Occasionally you need to pass a link to a form in Dyn365O and you would like to include the query you used to filter out the relevant data.

In order to do this you need to flip a switch in your user options.user-options

When that is set to Yes the query will be added in unreadable format in the URL. In this case we are going to add a filter on Workers.

Open the Workers form and click the funnel:

workers-add-filter

Add a filter. In this case I want all workers with personnel number starting with 0001:

workers-get-url

After clicking Apply the parameter q is added to the URL. The complete URL can now be copied and opened in another browser. In this case I have copied from my MacBook to a Windows 10-machine and after login I get the same data as on my Mac:

open-url-in-different-system

The URL is a bit massive and brings back memories of Sharepoint URLs back in the days; but it does the trick.

Advertisements

Running the CRT samples on AX7

The RetailSDK delivered with AX7 includes a lot of great sample code making it easier to get things rolling when learning how to customise the solution.

One of the sample projects is the CommerceRuntimeSamples. Before you are able to run it you need to do a couple of tweaks though. If not it will crash and burn with error messages that do point you in the right direction on how to fix it. This blog post is made to safe you some time and getting it fixed without having to go troubleshooting.

The first error that pops up is this one:

operatinguniterror

A configuration error in the Microsoft.Dynamics.Commerce.Runtime.dll. The reason is that it cannot find the right Operation Unit Id. It is specified in the commerceruntime.config and all you have to do is put in the operating id of the channel you would like to work with. In this case I use Houston, which has the id 039:

operating-unit

Next is this error:

storageerror

A storage exception in the same dll and same piece of code. This time we have to look in the app.config file. In here we have a list of connection strings that all point at database names as they appeared in AX 2012 Retail. In AX7 demo servers all data for all channels is in the AxDB database so the fix is to change the database names in the connection strings to AxDB:

catalog-db-name

Now you are able to run the samples and start debugging to learn.

debugactive

 

 

No icon on buttons in LCS or AX7

In LCS or New Dynamics AX you might have noticed that you have buttons missing their icon/image. It looks like this:

The solution is really simple. Add the sites as trusted sites and you’re good.

Open Internet Options in your browser and go to the Security tab. Select Trusted sites and click Sites:

internetoptionssecurity

Add the current site to the list:

trustedsites

You’ll need both LCS and AX on the list to keep them both looking good.

Associate worker with AAD account – Service unavailable

When trying to associate a worker with an AAD user in New Dynamics AX you can in some of the releases get an error saying “The service you are trying to reach is currently unavailable. Please contact your System Admin…”.

Workers_--_Error

Now in the New Dynamics AX the System Admin is often pretty hard to find unless you have a mirror so here is something that might get you passed that error. There’s no fancy stuff here. More a matter of how to approach the task.

Click “Associate existing account”:

Workers_--_StartAssociate

Change “Filter using columns” to “Search using email” and put in the email of the user:

Workers_--_SearchByEmail

 

Click Search and select the user on the list:

Workers_--_FindUser

Click OK and you’re back on the worker with a association to your user:

Workers_--_AssociationDone

 

The good part is that you can do this within a few seconds compared to having to wait for the full AAD to be loaded before you can pick the user, which you are going to be searching for anyways.

There is a hot fix released for this error, but if you just need to get it fixed now then the above work-around could help you out.

 

Lifecycle Services and Azure Resource Manager – First bump on the road…

We have been using Lifecycle Services (LCS) for hosting environments for both AX 2012 and AX7 (sorry, New Dynamics AX) so it was somewhat a trivial task deploying new servers. Until we met Azure Resource Manager, that is. Adding servers to an old project ended up giving us this error message:

Lifecycle Services can’t connect to the Azure subscription using Azure Resource Manager. Click the Microsoft Azure Settings button and edit the selected Connector to provide the required permissions to ERP applications in your Azure subscription.

Error_message

The fix is fairly simple. Go to the Azure connector in your project. You’ll find it in the Project settings. Select it and click Edit. What you need to do is to flip this one to Yes:

Project_Flip_This

It will then lead you through a couple of steps regarding your management certificate and how you need to download it and upload it to the Azure Portal. No need to worry about that because you already did that when you created the connector so just click Next.

You could then end up with another obstacle in the form of missing rights on the Azure tier:

Project_Need_To_Add_Role

Go to Azure Portal and go to your subscription. Click this button to do add access:

Azure_Add_Access_Add

The following is pretty straight forward. Select a role and select the user:

Azure_Add_Access

Azure_Add_Access_Select_User

Azure_Add_Access_User_Done

Going back into LCS and click Next might present you with the same error like above with the Dynamics Deployment Service needs access but hang in there. It seems like there’s a bit of delay, so just give it another go after a minute or two.

As soon as your connector has been updated you’re good to go and can deploy the server.

Debugging Commerce Runtime in the New Dynamics AX (AX7)

 

The New Dynamics AX has certainly shown us new ways of working and for the developer the learning curve has been pretty steep.

With everything being Visual Studio for the developers new work routines are implemented and that goes for debugging as well.

Now, the Visual Studio debugger is great. So we are not losing any ground. We do however have to think a bit different in order to nail those tricky troubleshooting situations. In this post I will show how to debug the Commerce Runtime part of the Retail Server.

 

Step 1 – Getting the IIS ready

Navigate to the Retail Server folder. One way to get there is to open the IIS Manager. Locate and select the RetailServer in the Sites list to the left and select Explore. In the web.config file change

<compilation debug="false" targetFramework="4.5" />

to

<compilation debug="true" targetFramework="4.5" />

When you save the file you cannot save it to its original position. Save it to your desktop or somewhere else neutral and then copy it to the original folder.

Restart the IIS

 

Step 2 – Set the breakpoint

Now start up Visual Studio and open the solution CommerceRuntime in the RetailSDK folder \RetailSDK\Code\CommerceRuntime.

In the solution explorer locate the Discount.cs file in Runtime.PricingEngine project and add a breakpoint. Just to keep it simple I have put it into the constructor:Breakpoint Discount constructor

 

Step 3 – Start the Modern POS

Now it is time to fire up the Modern POS. Just do a login and leave it there for a while.

 

Step 4 – Get the debugger ready

Go back to Visual Studio, go to the Debug menu and select Attach to process.

Change the code type from automatic to Managed (v4.6, v4.5, v4.0)

AX7POSDebugCodeType

Mark Show processes from all users, select the w3wp.exe processes and click Attach.

AX7POSDebugProcess

I know that you probably only need to attach to one of them; but it is much easier just selecting them all.

Take a quick look at your breakpoints to make sure that they are active. If not you might be missing a reference in the commerceruntime file.

Breakpoint active Discount constructor

Step 5 – Back to the POS to get the debugger activated

What we need to do now is to get the POS to require an instance of the Discount object on the retail server. In this example I add a pair of sunglasses to the basket:

Add product to get the Discount object instantiated

That gets us into the debugger and we can do what we need to do in order to see how it works or start troubleshoot.

Debugger activated

I hope this helps you get a bit deeper into the retail server or other services related to the New Dynamics AX.

 

 

 

Test access to Retail server on The New Dynamics AX

Just a quick heads-up on a feature allowing you to test the access to the Retail server in The New Dynamics AX.

From a browser open the site:

https://<my server name>ret.cloudax.dynamics.com/healthcheck?testname=ping

It shows you a ping test result looking like this:

RetailServerTest

If you need the results in a more developer-friendly format you can add a &resultFormat=xml which gives you something like this:

RetailServerTestXML