Hi all,
Packt publishing has released another book about Microsoft Dynamics AX 2012: Implementing Microsoft Dynamics AX 2012 with Sure Step 2012.
Packt was kind enough to give me a copy for review, so expect a review in the following weeks. If you’re as excited about the book as I am, you can order a copy from packtpub.com or amazon.com.
Thanks in advance to Keith Dunkinson and Andrew Birch for writing this book and sharing their knowledge.
Hi All,
This week, one of our customers got the following error when printing an SSRS report:
An item with the same key has already been added
Redeploying the report didn’t solve the issue. After restarting the AOS services and then redeploying the report, the issue was solved.
I’ve seen some forum/blog post about this, and I can confirm that this works.
This issue has popped up twice already, the previous time being a few months ago. No code was changed or anything, so I have no explanation for the error. Luckily, it’s easy to solve.
After a lot of hard work, the book Microsoft Dynamics AX 2012 Services is finally available for purchase.
Those who pre-ordered will probably have downloaded the e-book already. Others will have to wait for their paper copy to arrive.
I myself don’t have a copy yet, so I’m watching my mail box just like you :). I have received my copies on the 10 jan 2012, yours should arrive shortly!
from Packt Publishing,
from amazon.com,
or from amazon.co.uk.
I’m very proud to present my first book: Microsoft Dynamics AX 2012 Services, co-authored with Kenny Saelen and published by Packt Publishing.
As the title suggests, the book is about services in Microsoft Dynamics AX 2012. The book covers the service architecture, AIF document services, custom services, system services, consumption of web services, SysOperation and much more. A more elaborate description of the contents can be found on the website of Packt Publishing.
We are still working on finalizing the book but it is already available for preorder. I’m happy there is a discount for preorders, so if you want the book, it’s best to preorder it.
I would like to thank everyone that is involved in the making of this book, especially coauthor Kenny and the reviewers.
As we are still finalizing the book, you all have the opportunity to contribute. If you have ideas or things you would like to see covered, post them below and if possible, we will take that into account.
Preorder from Packt Publishing,
or from amazon.
P.S. The cover is not final :-)
Hi all!
Tables contain many properties, one of which is the DeveloperDocumentation field. This field describes the purpose of the table, most of the time in the following format: “The [name of table] table contains [what the table contains]”.
When you don’t specify the developer documentation by creating a label, you will get the following best practice error:
Mandatory property DeveloperDocumentation not specified.
When you do create a label, you will get the following best practice warning:
DeveloperDocumentation label should not be marked to be translated.
Wait what?
The solution is to add {locked} in the description of the label using the label editor.
The developer documentation is aimed at developers and should not be translated, so create the label using the same value as the en-us label in all languages.
— This blog post is mostly a reminder to myself, I tend to forget this :)
Hi AX-enthusiasts!
Decisions Spring 2012 is a (free online) virtual conference about Dynamics products.
If you didn’t attend the conference in the past, be sure to check it out now because it is a great opportunity meet other AX professionals and expand your knowledge about AX.
The AX Day is on the 18th of June, you can register here.
See you there.
Hi all!
You might have noticed that this site was offline for a few hours,
that’s because it has been moved to an upgraded server.
Everything is up and running again, I hope this didn’t cause any inconveniences for you.
Thanks to SiteHosting for helping out.
Hi all!
When I was at the technical conference in Nice last year, I attended the session about performance (BRK224), and during a demo, something interesting was shown: how to add one BOF service as a runtime task to another BOF service in batch.
You can watch the session recording here, the code is shown about 44 minutes, 50 seconds in.
If you are unfamiliar with runtime tasks and how to use them, read my post about batch multithreading for an explanation. The basic principle stays the same, but in the example below, we will be using the Business Operation Framework (aka BOF, aka SysOperation) instead of RunBaseBatch.
The first thing you’ll need to do, is create 2 BOF services, one that will create the runtime tasks, and one that will represent the runtime task. If you don’t know how to do that, read this post: SysOperation Introduction. You can download the xpo file for the following example below.
This service will be our runtime task. It’s a regular BOF service, nothing special about it. In my example, the service operation contains some testing code so we can see if our service is working:
The data contract for this service has one member:
This is the service that will create the runtime tasks. Starting for a regular BOF service, make sure that the service class extends SysOperationServiceBase. This enables us to call the isExecutingInBatch() method later on.
The service operation that creates the runtime tasks looks like this:
For this demo, I created a loop that creates 5 runtime tasks.
When you execute this in batch, you can check the batch task history for the batch to see the tasks that have been created.
You can click the Parameters button to verify if the correct values were used to execute the task.
You can download the XPO here.
Links
Another example can be found on Kenny Saelen’s blog: Business Operation Framework and multi-threading
Related posts
AX2012: SysOperation part 1: Data Contracts and Service Operations
AX2012: SysOperation part 2: SysOperationServiceController
AX2012: SysOperation part 3: SysOperationAutomaticUIBuilder
AX2009: Batch multithreading (RunBaseBatch)
Hi all!
Wondering if you’re getting the right salary?
Nigel Frank is organizing its yearly salary survey for Dynamics professionals.
You’ll get a copy of the results for free if you take part in the survey, and you can also win some prizes.
Just click the banner to take part in the survey.
The session recordings and slides from the Technical Conference in Nice 2011 are available here:
https://mbs.microsoft.com/partnersource/newsevents/news/MSDAXTechnicalConf2011Recordings
Some of you asked if the session recordings from the Technical Conference in Nice were available online, and I’m glad to inform you that they will be available on PartnerSource starting January 4th, 2012.
Just click this link in early January to view the recordings: https://mbs.microsoft.com/partnersource/training/news/MSDYAX_TechConferenceFall.htm https://mbs.microsoft.com/partnersource/newsevents/news/MSDAXTechnicalConf2011Recordings.
Some of the sessions were really interesting, so be sure to check it out!
Update 2012/01/09: The recordings are not online yet. Will keep you updated.
Update 2012/01/17: Available now!
Hi everyone, and greetings from the Microsoft Dynamics AX Technical Conference 2011 in Nice.
Among other sessions, I saw Arijit Basu’s session about Implementing AX Technical Solution Architecture, and found it pretty inspiring. He demonstrated a lot of tools and methods that will come in very handy and I’m sure I’ll talk about more on this blog in the future. Tools like the Application Analysis Tool in particular look very promising.
Some of these tools are available through the website that Sri Srinivasan announced: InformationSource (beta).
You can download these in the “Services” section. There is also an extensive library of Q&A’s, and a lot of documentation (Word and Powerpoint documents, video’s,…) that dive deep into what they call Core Concepts of AX.
You will need to log in with your PartnerSource or CustomerSource account.
Be sure to check it out, it’s awesome (really!).
Also, for those who haven’t seen this yet, a nice screenshot of the POS (Point of Sales) of AX For Retail:
It almost makes me feel sad that my company isn’t focusing on the retail sector :).
I’m looking forward to tomorrow, especially to mfp‘s talk about MorphX and TFS.
See you then (or there)!
Hi everyone :-).
I am tasked with doing data migration for a project that is about to go live. One of the things that have to be converted are item groups (InventItemGroup) and their linked dimensions (InventItemGroupForm).
Importing the InventItemGroup table is easy, but InventItemGroupForm is a little bit trickier.
There is a job below that shows how to fill in the LedgerDimension field on the InventItemGroupForm table. I’m not saying I completely understand the new dimension framework, but this method worked for me, and I hope it helps you when you have to do the same thing.
You will notice that you won’t be able to import the InventItemGroupForm table with the excel add-on. You’ll have to use a custom job (or make you own import framework like I did).
This white paper can help too: Implementing the Account and Financial Dimensions Framework (White paper)
Note december 2012: The code is wrong, it works but you shouldn’t do it this way.
When I figure everything out, there will be a blogpost :).
Comments with ideas / insights / improvements are welcome as always.
Hi everyone,
Together with some colleagues, I will be attending the Technical Conference in Nice next week.
I’m very exited, as this is a first for me (but hopefully not last).
I will bring you the news when I get back.
See you there!
Hi everyone.
This is the third and final part in my series of posts about SysOperation (at least for now). You can find part 1 here and part 2 here.
I will demonstrate how to override methods on the dialog (in this case modified()), and how to read and set properties of controls.
For the sake of this demo, we will add a checkbox to the dialog that will allow us to set the enabled property of the date control.
It should look like this:
We will need to modify the data contract so a checkbox is displayed on the dialog that we can use to enable or disable the date control.
Add this variable to the class declaration of the KlForCustTesterDataContract class:
Then add this method to that same data contract
There’s nothing new here, we already did all of this in part 1
We will extend the SysOperationAutomaticUIBuilder class so we can override methods and properties of controls on our dialog.
First, create a new class, KlForCustTesterUIBuilder:
Things we will need in this class are:
So we add these variables to the class declaration:
We will first write the method that will override the modified of the checkbox control. Simply add a new method to the KlForCustTesterUIBuilder class:
The code above sets the enabled method on the dialogFieldTransDate object based on the value property of dialogFieldAllowModifyDate object, or alternatively, the _checkBoxControl variable.
As you may remember, we declared the DialogField variables in the class declaration. Of course we will still have to initialize these variables , and that’s what we’ll do when overriding the postBuild method.
Next, we need to override the postBuild method on our KlForCustTesterUIBuilder class. This method will be called after the dialog is created, so it is a good place to put our logic.
Override the method:
Next, let’s add some code to this method, starting with the code that retrieves the data contract object, which is pretty easy:
Next, we retrieve the DialogField objects:
In the code above, the bindInfo() method returns an object of type SysOperationUIBindInfo. This contains information about which dialog controls the data members are bound to. By providing a reference to the parmTransDate and parmAllowModifyDate member when calling the getDialogField() method, we get the dialog control that is associated with each member.
Next, we will register the method we want to override:
As you can see, we can use the registerOverrideMethod() method to override methods on dialog. This is a huge improvement over overriding methods on dialogs in 2009. We simply point to the method we want to override (FormCheckBoxControl.modified) and the method the needs to be executed (KlForCustTesterUIBuilder.allowModifyDateModified).
Finally, we initialize the value of the enabled property, and the complete method will look like this:
Now, we’ve created the UIBuilder class, but we still have to link it to our data contract. That’s what the SysOperationContractProcessingAttribute attribute is for.
To link the UIBuilder class to the data contract, open the classDeclaration method of the KlForCustTesterDataContract class, and add the SysOperationContractProcessingAttribute:
But wait (you already know what I’m going to say right), first click the Generate Incremental CIL button to generate CIL.
Right click the KlForCustTesterServiceController menu item we created on day 2, and choose open. You should see this dialog:
When you check the checkbox, you should see that the date field is enabled.
Download the XPO for part 3 here.
That concludes my blog posts about SysOperation, I hope you like it, and I’m looking forward to your feedback.
Have fun making batches!