Microsoft plans new Business Applications Summit in July
How I fooled myself for 5 years…
I’m working quite a long time at a customer now. In August 2013, I was (re)hired to help on a migration from Dynamics AX4 to Dynamics AX 2012. As I had worked at this customer before, I know about some issues related to performance of the ledger balances. Now in AX2012 the update of balances were different. During posting of accounting entries, records in a table called “Dimension set unprocessed transactions” are inserted. A batch job will take care of updating the balances. Now how did I fool myself?
The background
I have written about this topic in the past as well. That post was related to performance which can be read here: “Rebuild balances in ax 2012 – Do you have a minute or more…”
Update of balances should be scheduled as a batch job to have the dimension set balances updated. When opening e.g. the Trial balance list page, the update balances job is also run for the dimension set selected on the list page. This is real-time processing and the user has to wait for this job to be completed.
The reason for this is to ensure that the report is mentioning the latest actual amounts. I had checked the behavior and noticed that the records related to the selected dimension sets were indeed processed and updated in the balances. Other unprocessed transactions did remain in the table. Now closer to the point where I got a wrong assumption…
When you plan for scheduling a batch job, you will be prompted with a Financial dimension set. At this customer we do have more than 20 dimension sets active. We decided to plan the 10 most used dimension sets to run every 10 minutes. Effective it did start one each minute. Sounds logical, right?
The clue
There were some blockings on the balance tables and I started the investigation where it came from. I thought, we possibly also had to schedule additional sets. But then also consider available threads, avoid possible deadlocks, etc. During measurements, I noticed that all unprocessed transactions were picked up by one single batch job which was (I thought) set to run only one dimension set. This appeared to be true. I also have checked the coding of the class which handles this batch job. Indeed, it is NOT using the parameter when running in batch. Even the default task description of the batch job is giving you the idea that it runs for a single dimension set. It is only used when you run the update balances manually on the client. So, in fact, we did already run every dimension set for every minute… Now we changed the batch settings to run only one batch job with a given recurrence which gives the batch jobs form a better overview with less tasks.
What about the blockings?
Well, we have to find out if the blockings were caused by a full rebuild due to a consolidation or year-end process. Possibly there will be a need to be able to not only rebuild for a given company or dimension set, but also a given fiscal year or even a shorter period. But this will be part of a further analysis…
That’s all for now. Till next time!
Microsoft Dynamics CommunitySubscribe to this blogger RSS FeedMy book on Merging global address book records in AX 2012
The post How I fooled myself for 5 years… appeared first on Kaya Consulting.
"Object reference not set to an instance of an object Error" When you do show all Fields
Dynamics AX Obscurities Series: SQL Server Integration Services after SQL version Upgrade
timezones
Just wanted to share this overview of the time zones used in Dynamics AX 2012 and the TZId value that is used to store UTCDateTime values in SQL.
Timezone description | TimeZone | TZId field |
---|---|---|
(GMT-12:00) International Date Line West | 24 | 24001 |
(GMT-11:00) Midway Island, Samoa | 65 | 65001 |
(GMT-10:00) Hawaii | 39 | 39001 |
(GMT-09:00) Alaska | 2 | 2001 |
(GMT-08:00) Pacific Time (US & Canada) | 58 | 58001 |
(GMT-08:00) Tijuana, Baja California | 59 | 59001 |
(GMT-07:00) Arizona | 75 | 75001 |
(GMT-07:00) Mountain Time (US & Canada) | 47 | 47001 |
(GMT-07:00) Chihuahua, La Paz, Mazatlan | 48 | 48001 |
(GMT-06:00) Central America | 15 | 15001 |
(GMT-06:00) Central Time (US & Canada) | 21 | 21001 |
(GMT-06:00) Guadalajara, Mexico City, Monterrey | 22 | 22001 |
(GMT-06:00) Saskatchewan | 11 | 11001 |
(GMT-05:00) Bogota, Lima, Quito, Rio Branco | 63 | 63001 |
(GMT-05:00) Eastern Time (US & Canada) | 29 | 29001 |
(GMT-05:00) Indiana (East) | 74 | 74001 |
(GMT-04:00) Atlantic Time (Canada) | 6 | 6001 |
(GMT-04:00) La Paz | 64 | 64001 |
(GMT-04:00) Manaus | 17 | 17001 |
(GMT-04:00) Santiago | 57 | 57001 |
(GMT-04:30) Caracas | 85 | 85001 |
(GMT-03:30) Newfoundland | 54 | 54001 |
(GMT-03:00) Brasilia | 28 | 28001 |
(GMT-03:00) Buenos Aires, Georgetown | 62 | 62001 |
(GMT-03:00) Greenland | 36 | 36001 |
(GMT-03:00) Montevideo | 83 | 83001 |
(GMT-02:00) Mid-Atlantic | 45 | 45001 |
(GMT-01:00) Azores | 10 | 10001 |
(GMT-01:00) Cape Verde Is. | 12 | 12001 |
(GMT) Casablanca, Monrovia, Reykjavik | 37 | 37001 |
(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, Londo | 35 | 35001 |
(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna | 79 | 79001 |
(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Pragu | 18 | 18001 |
(GMT+01:00) Brussels, Copenhagen, Madrid, Paris | 60 | 60001 |
(GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb | 19 | 19001 |
(GMT+01:00) West Central Africa | 78 | 78001 |
(GMT+02:00) Amman | 43 | 43001 |
(GMT+02:00) Athens, Bucharest, Istanbul | 38 | 38001 |
(GMT+02:00) Beirut | 46 | 46001 |
(GMT+02:00) Minsk | 27 | 27001 |
(GMT+02:00) Cairo | 30 | 30001 |
(GMT+02:00) Harare, Pretoria | 68 | 68001 |
(GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius | 33 | 33001 |
(GMT+02:00) Jerusalem | 42 | 42001 |
(GMT+02:00) Windhoek | 51 | 51001 |
(GMT+03:00) Baghdad | 5 | 5001 |
(GMT+03:00) Kuwait, Riyadh | 3 | 3001 |
(GMT+03:00) Moscow, St. Petersburg, Volgograd | 61 | 61001 |
(GMT+03:00) Nairobi | 25 | 25001 |
(GMT+03:00) Tbilisi | 34 | 34001 |
(GMT+03:30) Tehran | 41 | 41001 |
(GMT+04:00) Abu Dhabi, Muscat | 4 | 4001 |
(GMT+04:00) Baku | 9 | 9001 |
(GMT+04:00) Caucasus Standard Time | 84 | 84001 |
(GMT+04:00) Yerevan | 13 | 13001 |
(GMT+04:30) Kabul | 1 | 1001 |
(GMT+05:00) Ekaterinburg | 31 | 31001 |
(GMT+05:00) Islamabad, Karachi, Tashkent | 80 | 80001 |
(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi | 40 | 40001 |
(GMT+05:30) Sri Jayawardenepura | 69 | 69001 |
(GMT+05:45) Kathmandu | 52 | 52001 |
(GMT+06:00) Almaty, Novosibirsk | 50 | 50001 |
(GMT+06:00) Astana, Dhaka | 16 | 16001 |
(GMT+06:30) Yangon (Rangoon) | 49 | 49001 |
(GMT+07:00) Bangkok, Hanoi, Jakarta | 66 | 66001 |
(GMT+07:00) Krasnoyarsk | 56 | 56001 |
(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi | 23 | 23001 |
(GMT+08:00) Irkutsk, Ulaan Bataar | 55 | 55001 |
(GMT+08:00) Kuala Lumpur, Singapore | 67 | 67001 |
(GMT+08:00) Perth | 77 | 77001 |
(GMT+08:00) Taipei | 70 | 70001 |
(GMT+09:00) Osaka, Sapporo, Tokyo | 72 | 72001 |
(GMT+09:00) Seoul | 44 | 44001 |
(GMT+09:00) Yakutsk | 82 | 82001 |
(GMT+09:30) Adelaide | 14 | 14001 |
(GMT+09:30) Darwin | 7 | 7001 |
(GMT+10:00) Brisbane | 26 | 26001 |
(GMT+10:00) Canberra, Melbourne, Sydney | 8 | 8001 |
(GMT+10:00) Guam, Port Moresby | 81 | 81001 |
(GMT+10:00) Hobart | 71 | 71001 |
(GMT+10:00) Vladivostok | 76 | 76001 |
(GMT+11:00) Magadan, Solomon Is., New Caledonia | 20 | 20001 |
(GMT+12:00) Auckland, Wellington | 53 | 53001 |
(GMT+12:00) Fiji, Kamchatka, Marshall Is. | 32 | 32001 |
(GMT+13:00) Nuku’alofa | 73 | 73001 |
Preview of what’s coming in Spring 2018 in Dynamics 365 for Finance and Operations Enterprise edition
Summit EMEA 2018 Preview: Why Microsoft Dynamics AX/365 overlaying is the new smoking
Microsoft re-org on intelligent cloud and edge adds more AI to Biz Apps group
Free Webinar on Microsoft ERP (Dynamics 365 for Finance and operations) in Urdu
Hi all, We are conducting a one hour session with one of my fellow form System limited Karachi.
Currently we will conduct this session in local language in Urdu.
The knowledge and Experience we share this session certainly gain from implementation and Customization Dynamics 365 for Finance and Operations from System limited platform.
Presenter profile:
Ali Raza Zaidi: Dynamics 365 for finance and operations Consultant, Microsoft MVP and Microsoft Certified trainer.
Working for Systems limited Pakistan.
Hasan Akhtar Khan : Technical Consultant. Round 4 years Technical Side experience for Customization, integration and SSRS report development for Dynamics Ax 2012 and Dynamics 365 for finance and operations.
Agenda:
- What is ERP.
- Why we need ERP while having custom solution.
- What is Microsoft Solution ( Dynamics 365 for Finance and Operations).
- On premises VS Cloud Based
- List of Modules In Dynamics 365 for Finance and Operations.
- Navigation, menus and Workspace.
- Workflow as Business Process
- Very Precise introduction to Procurement process In D365 for Finance and Operations
- Very Precise Introduction to Sale Order Processing In D365 for Finance and Operations.
- Layered Architecture
- Development with Extensions VS Overlays.
- Reporting Overview
- SSRS Report development Architecture.
- TFS and Code versioning.
Question Answer Session
Join Us at below Skype for business link at 31 March Evening 6 to 7 Pm
https://meet.lync.com/alirazazaidi/alirazazaidi/1FV4EFDH
DevOps for Dynamics365 for Finance & Operations: Continuous Learning
Dynamics ax 2012 client in specific language
1. Open command prompt.
2. Type Ax32.exe –language=culture_id
Example : Ax32.exe –language=en-us
Resource Forecasts in Dynamics 365 for Project Service Automation
One significant benefit of using Dynamics 365 for Project Service Automation (PSA) is the structured approach to allocating project resources. Resource requests can be fulfilled quickly and effectively, which increases resource utilization and helps to deliver successful projects. Using resource requests, bookings and actuals, we can also derive a picture of what skills, roles, service lines, and other resource attributes are in demand and which may be in short supply when considering things like industry trends, opportunity pipeline and the like. In this post, I’ll walk through how to extend the set of built-in analytics that comes with PSA to gain insights in how skills and roles are distributed in your organization and how they match up against anticipated demands based on the opportunity pipeline. In the attachment there is an example of one of the views you can build with this model, and answers the question “How Does my capacity by role align to demands in my future projects”.
Please see the attached document for the steps on making the changes required to open up these capabilities.
Dynamics AX 365 insert not allowed for field ‘XXXX'”,”type”:”System.InvalidOperationException”
I was working on creating the new Data entity related to Case Details on Dynamics ax 365, The creation went well and simple. when i tried to consume the new Data entity from odata client using c#, i got this exception.
An error occurred while processing this request.{
“error”:{
“code”:””,”message”:”An error has occurred.”,”innererror”:{
“message”:”insert not allowed for field ‘CaseId'”,”type”:”System.InvalidOp
erationException”,”stacktrace”:” at Microsoft.Dynamics.Platform.Integration.Se
rvices.OData.Update.UpdateProcessor.CreateEntity_Save(ChangeOperationContext con
text, ChangeInfo changeInfo)\r\n at Microsoft.Dynamics.Platform.Integration.Se
rvices.OData.Update.ChangeInfo.ExecuteActionsInCompanyContext(IEnumerable`1 acti
onList, ChangeOperationContext operationContext)\r\n at Microsoft.Dynamics.Pla
tform.Integration.Services.OData.Update.ChangeInfo.TrySave(ChangeOperationContex
t operationContext)\r\n at Microsoft.Dynamics.Platform.Integration.Services.OD
ata.Update.UpdateManager.SaveChanges()\r\n at Microsoft.Dynamics.Platform.Inte
gration.Services.OData.AxODataBatchHandler.<ExecuteRequestMessagesAsync>d__10.Mo
veNext()”
}
}
}
This error is related to CaseId field on Case Details, after enough investigation i found that validatefield method from corresponding table is being fired and not allowing manual insertion on CaseId field. As this field is Number sequence bound. But our requirement was to create the case using custom value provided from Odata client using c#.
After enough research i got the clue to skip the table level validation from data entity. So i have decided to modify the data entity and override following methods and skip the table level validation for the CaseId field.
Thanks
Amir- Happy daxing
Consuming Dynamics AX 365FO Data entities using Web API (Part 3)
Hi Guys,
This is with the 3rd and final part of same demo, In this post we will see what is the code we need to write on wep api project to get the data from Dynamics ax 365. In this post we will be reading the purchase order data from Dynamics ax 365. In case if you have not read the previous two parts then follow these links
To start with, we need to add few dll references on Web api project. Please make sure Microsoft.OData.Client dll should be of same version what we have referenced in AuthenticationUtility and ODataUnity project(These projects are previously discussed in last blogs).
using Manage Nuget Package option we can install package for Microsoft.OData.Client
Now with the simple coding part, we need to reference following dll.
I have created this initConfiguration method to authenticate my call using Azure, GetAuthenticationHeader method is given on OAuthHelper class, we will pass true for web api projects.
Then i have created this fillOrder method to fill the list based on the query i have read from Dynamics ax 365 for purchase orders.
This is the main web api method for reading the purchase orders, i am reading top 50 for now.
After all this simple coding and all the configuration effort, when i click run on the project, i got this cool browser with my results of orders.
This is the result after all the effort,
Add Spending/Approval limit to Purchase Order Workflow #MSDyn365FO
I feel this is very limiting when you try to use purchase order workflow via hierarchy assignment. The set up is there but you really can’t use it to the end. When you try to set up a stop condition, you can’t really use it.
Vote for the idea for Microsoft to develop this.
https://experience.dynamics.com/ideas/idea/?ideaid=6b55a93d-7235-e811-bbd3-0003ff68aa57
Below is a screenshot of how I have added it.
To add these fields or any dynamic (calculated) field is very simple. Just a parm method to the workflow document class.
For this example, I just copied the parm method and made it point to the PurchTable.
Copy from PurchReqDocument to PurchTableDocument
Here is a class I put together to show you how I added the spending limit.
https://github.com/munib00/WorkflowPlus/blob/master/AxClass_PurchTableDocument_WP_Extension.xpp