Thursday, November 26, 2015

Dynamics AX 2012 R3 CU10 released

The latest cumulative update of hotfixes for the AX 2012 R3 has been released from LCS, the original release post from the Dynamics AX in Market Engineering team can be found here. The latest build has been updated to 6.3.3000.110 but if you use slip stream option for a full installation the build number will be shown as 6.3.3000.111.
Coming back to the post what's updated in the latest hotfix basket in Retail, probably the most important is the POS performance. The biggest strength in the Retail POS is its ability to automatically calculate the best discount that can be applied to the transaction based on the products/store/customer/period combinations. But it turns out to be the biggest performance backdrop if the discounts/products increases more than tens of thousands of records. It seems there has been some issues addressed for these scenarios by adding a maximum number of steps/loops before the best price has been picked up for the product within the shopping cart. And this has been implemented as a configuration in the Retail parameters. The functionality should have come long time back, even though too late but better now than never.

Wednesday, August 26, 2015

Retail Time Clock Entries

If you have been using the Retail Module, you might have noticed there are couple of operations called Time Clock and View Time Clock.



The time clock operations enable the Store to capture the Cashier/Supervisors working shift schedule by capturing their clock in/out information. The functionalities enables HQ to capture the exact times that a cashier has come for work, duration of breaks and when he signed off for the day. This is not linked to the Login/Log off details of the cashiers but built as a decoupled functionality to store the time registrations for employees.
The huge potential that we can see it is fully integrated with the Retail and HR module, enabling you to generate working time reports or send this data to payroll systems to process the cashiers salary. Please do note the operations performed in the Time clock entries are all real time meaning the Terminal should be fully online and active connection available to make the time clock entries. Before you can start using the Time registration for Employees, make sure to activate Time registration in terminals for those employees.
After you have made some Clock in/Break For Lunch/Clock out, you can immediately start seeing the Time registration transactions under the Worker > Time Registration Tab > Journal Registrations.



Tuesday, August 11, 2015

Azure Marketplace - Evaluation version for Dynamics AX 2012 R3

Life Cycle Services has just announced in their July 2015 Release that they are releasing the Evaluation version of AX for all Customers and Partners. This follows a similar concept of Dynamics CRM when they offered a 30 day trials for anyone who wanted to try the CRM online. 
The details that you would need is a valid LCS account and Azure portal access, some of the other details that you need to select/check are Location, Sizing, LCS project and T&C's. Currently you will only be able to deploy the AX 2012 R3 version, and it aptly seems to pave the way for the AX 7.0 version which is supposed to be fully web based client. You can access the Market place for Dynamics AX Evaluation copy from this link. Have fun with the evaluation versions and make sure your Azure subscriptions don't burn up too quickly by turning off the VM's when not in use.


Saturday, July 11, 2015

Easily move Retail Till Layouts between environments

Many of the times we would like to see the Till layout in our Live environment on our Testing instance. The usual way would be to replicate manually the changes on the Till layout designer one by one or move the complete transaction DB from Live to Testing instance. Both of which will give a lot of downtime or a bit cumbersome! A easy hack to replicate the details would be to just copy over all the relevant tables via SQL insert. I had went through the table relationships and have compiled the necessary ones which you can use for the copy functionality. The data for design is predominantly saved as XML data which is used by the .NET runtime on POS for building the layout or an activeX component for designer in AX which allows for layout changes. At no point you should manipulate the XML data directly as it can make the layout to crash, we need to allow the ActiveX designer to generate the XML data, that's one of the reasons you need to provide additional Read/Write permissions for AX database for the users who manage the Till Layout designs.
The list of tables that are involved in the Till Layouts are,
  • RETAILBUTTONGRID
  • RETAILBUTTONGRIDBUTTONS
  • RETAILIMAGES
  • RETAILTILLLAYOUT
  • RETAILVISUALPROFILE
  • RetailDeviceTypes
  • RetailPOSTheme
  • RetailTillLayoutZone
  • RetailTillLayoutZoneReference


AX 2012 R2 has the first 5 tables as the remaining tables were included in R3 with the introduction of MPOS. And here is the sample SQL Select into statement, please make sure you've moved the records in Testing table to a backup table before executing the statement.

select * into [--TestInstance--].[dbo].[RETAILBUTTONGRID]
 from [--LiveInstance--].[dbo].[RETAILBUTTONGRID] 

Kindly test carefully and evaluate relationships of the tables to be sure there has not been any changes incorporated by Microsoft in version or hotfix changes.

Tuesday, June 16, 2015

Dynamics AX 2012 R3 CU9 Released

AX 2012 R3 CU9 is officially released with the KB3063879. The release has been positioned only for AX 2012 R3 hence it seems the previous releases for R1 and R2 will need to wait a bit longer. An attractive option for the CU9 release is if the existing environment is linked to LCS they you may upgrade it directly from LCS website. Here is the link to the actual release which has all the information and notes related to Installation guides and change history.

Tuesday, May 19, 2015

MB6-701 Dynamics AX 2012 Retail Certification successfully cleared

Hurray! I've managed to complete the AX 2012 Retail certification yesterday. During registrations probably first thing you will notice is Microsoft will direct us to Pearson VUE instead of Prometric. I wanted to grab the second shot offer before it ends this month end so I quickly scheduled it for this week based on the online slots available. 
The exam duration is 1.5 hours for 50 questions and the testing UI felt more like a windows app. Most of the questions are modeled based on how we apply the retail concepts and configuration setups rather than direct question and answers. If you have enough experience configuring the retail components this should not be an issue. Using the elimination rule for the options will come in handy to arrive at the correct answer. For the time being am just glad I didn't need to use the second shot offer!



Friday, April 24, 2015

Retail Transaction Service Connection - Error 13010 Could not connect to the Transaction Service

The retail transaction service on the POS can get cranky at times by not being able to reach the backoffice HQ to do a specific operation. The error message for 13010 is very generic meaning there is a connection issue between POS client and Retail Transaction service. More indepth details can be found from the Event viewer log where the error arises. The current issue in discussion happened when there was a sudden failure due to Business connector for Transaction service was unable to access Dynamics AX.

There are a few possible causes for the error could be due to permissions and rights issue for the business connector service account which might have been modified by the system administrator. If that's not the case and you are sure that the service account was not changed recently then it is recommended to Reset the IIS. The IIS reset will refresh the security tokens that might have linked to the service accounts. The business connector in my case was able to successfully connect back to AX after the IIS reset and Transaction service was back to normal.


Detailed event viewer entries
1)
LSRetailPosis.TransactionServices.InvokeMethod: System.ServiceModel.Security.MessageSecurityException: An unsecured or incorrectly secured fault was received from the other party. See the inner FaultException for the fault code and detail. ---> System.ServiceModel.FaultException: An error occurred when verifying security for the message.
   --- End of inner exception stack trace ---

Server stack trace:
   at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)
   at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.DoOperation(SecuritySessionOperation operation, EndpointAddress target, Uri via, SecurityToken currentToken, TimeSpan timeout)
   at System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.GetTokenCore(TimeSpan timeout)
   at System.IdentityModel.Selectors.SecurityTokenProvider.GetToken(TimeSpan timeout)
   at System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySessionChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ReliableChannelBinder`1.ChannelSynchronizer.SyncWaiter.TryGetChannel()
   at System.ServiceModel.Channels.ReliableChannelBinder`1.ChannelSynchronizer.SyncWaiter.TryWait(TChannel& channel)
   at System.ServiceModel.Channels.ReliableChannelBinder`1.ChannelSynchronizer.TryGetChannel(Boolean canGetChannel, Boolean canCauseFault, TimeSpan timeout, MaskingMode maskingMode, TChannel& channel)
   at System.ServiceModel.Channels.ReliableChannelBinder`1.Send(Message message, TimeSpan timeout, MaskingMode maskingMode)
   at System.ServiceModel.Channels.SendReceiveReliableRequestor.OnRequest(Message request, TimeSpan timeout, Boolean last)
   at System.ServiceModel.Channels.ReliableRequestor.Request(TimeSpan timeout)
   at System.ServiceModel.Channels.ClientReliableSession.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ClientReliableDuplexSessionChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Microsoft.Dynamics.Retail.TransactionServices.ClientProxy.ITransactionService.InvokeMethod(RequestInfo requestInfo, String methodName, Object[] parameters)
   at LSRetailPosis.TransactionServices.InvokeMethod(String methodName, Object[] parameters).


2)
BC.Net connectivity failure.AXNET.Logon() method called with Company: null | Language: null | ObjectServer:

   at Microsoft.Dynamics.BusinessConnectorNet.Axapta.Logon(String company, String language, String objectServer, String configuration)
   at Microsoft.Dynamics.Retail.TransactionServices.AxaptaWrapper.CreateAxapta(RequestInfo info)

3)
Axapta.Logon() failed. Exception details: Microsoft.Dynamics.AX.ManagedInterop.NoSecurityKeyException
   at Microsoft.Dynamics.BusinessConnectorNet.Axapta.Logon(String company, String language, String objectServer, String configuration)
   at Microsoft.Dynamics.Retail.TransactionServices.AxaptaWrapper.CreateAxapta(RequestInfo info)