I'm Joris "Interface" de Gruyter. Welcome To My

Code Crib

Microsoft Dynamics 365 / Power Platform - page 14

Page: 14 of 15

Apr 14, 2011 - New, Changed and Deprecated Features for Microsoft Dynamics AX 2012

Filed under: #daxmusings #bizapps

Microsoft has a released a comprehensive 207-page document entitled “New, Changed and Deprecated Features for Dynamics AX 2012”.

You can download XPS and PDF versions on the Microsoft Download Center.

  Read more...

Apr 12, 2011 - Dynamics AX 2012 Public Beta

Filed under: #daxmusings #bizapps

The opening keynote by Steve Ballmer at Convergence 2011 marked the public availability of the beta of AX 2012.

Check out Dynamics AX on MSDN, which now has an AX 2012 beta page.

You will need CustomerSource or PartnerSource access to download the betas. Remember the virtual image is Hyper-V, for which you will need a Hyper-V server, OR you can also try the unofficial non-supported way and try to run it using OracleBox.

  Read more...

Mar 16, 2011 - Unit test & TFS/VS updates

Filed under: #daxmusings #bizapps

First of all, Visual Studio 2010 SP1 was released. On top of that, Visual Studio Power Tools and Team Foundation Power Tools were also updated, you can now get the March 2011 update.

Secondly, I want to give an update on the TFS integration. I have gotten a lot of positive feedback on the TFS build scripts release. No word on anyone actually using or testing it, but I’m hopeful there will be feedback soon. I’m still encouraging people to please contribute their own scripts, no matter how minor you think they may be. Please contact me and I will add you as a developer on the CodePlex project so you can upload your own work. Meanwhile, I have slightly changed our scripts here to try something new. I figured there may be an easy way to incorporate the standard AX unit tests into the TFS build scripts. Basically, I added a line to the build script that executes an AX test suite from the client command line. This produces an XML file (Unit.xml) in the client configuration log folder, with the results of the unit tests. Next, a C# test project which, instead of performing tests in each test method, basically returns the result of a test method, as read from the XML file AX produced. Very simple to implement, worked like a charm without having to change anything in the TFS workflow (well, I did have to add msbuild back in just like the standard template). Expect that code on CodePlex soon. I will be talking to Microsoft probably this week, since they had another approach to this unit test framework which they wanted to discuss with me. More news on that soon I guess.

  Read more...

Mar 11, 2011 - AX TFS Build Script - fully released

Filed under: #daxmusings #bizapps

I have added four more scripts to the CodePlex project on http://dynamicsaxbuild.codeplex.com/ .

  1. CleanAOS.ps1 - this script “cleans” the AOS before a build. Move old layers to the old folder, remove indexes (object, label) etc.
  2. ExtractXMLCompileMessages.ps1 - this script extracts specific type of messages from the AX compile log XML and outputs them to the standard output
  3. BuildScript.ps1 - this is the main script we use in our TFS build, which uses an AXC file to find all the paths, AOS info etc and runs all the scripts for the build.

I have tried to outline the build flow and some comments per script on the documentation tab on the CodePlex project. Feel free to contact me with questions.

Next problem I will tackle and publish code for is the source control integration problem within AX (one-aos/multi-developer, TFS workspace, etc).

  Read more...

Feb 18, 2011 - AX TFS Builds - CodePlex Project

Filed under: #daxmusings #bizapps

During and after the Dynamics AX Technical Conference, I have spoken and emailed with a lot of people suffering from integration issues with TFS and AX 2009. After demoing our TFS setup to the Microsoft team, we are advising Microsoft on things to be fixed on the TFS integration in AX2012. Of course, they are also tied to how much new functionality they can introduce at this stage in the game, but we’re hopeful something will come out of it. At the technical conference, Microsoft demoed work item integration inside of AX during check-in. However, the big debate and issues are around the one-aos-multi-developer scenario. I’m not expecting all of those issues to be fixed, but they are talking about a workaround for us to overcome the integration issues. No final decisions yet.

In the meantime, I’ve been asked by several parties (including Microsoft) to release the scripts and code fixes we are using here internally at Streamline Systems, or at least document our changes and process. To that end, I have set up a CodePlex project called “Dynamics AX Build Scripts” where I will gradually release our scripts. I’m currently in the process of migration our CMD and VBS mess to Powershell versions, so as I get things converted and tested, I will put those scripts on CodePlex.

There are three scripts so far:

  1. AxCompileHTML2XML.ps1 - this scripts converts the html compile log to xml (basically strips out the few html elements) so it can be queried
  2. CompineXPOs.ps1 - this combines all the source tree XPOs into one big XPO that can be imported easily through command line
  3. CopyLabels.ps1 - this script accepts and FROM and TO path, and copies label files only if they actually contain any label data

All these are pieces to our overall big build script, which I will soon release as well.

I would like to use the CodePlex project as a place for the community to share their ideas and solutions for doing proper ALM with Dynamics AX. To that end, I would like to encourage people who have set up their own scripts to share those as well!

Contact me using the “contact me” button on the right menu, if you have stuff to contribute, and I will get you setup as a contributor on the project.

Dynamics AX Build Scripts

  Read more...

Jan 11, 2011 - Dynamics Ax 6.0 Technical Conference (2)

Filed under: #daxmusings #bizapps

Preparations are in the final stages for next week’s Technical Conference. As a first of its kind you will not be disappointed. The new version of AX has so many new things to offer, you will be blown away! The only thing you will regret at the end of the conference, is that the product isn’t actually released yet!

Lab times and days are not announced yet, but I will be sure to post details on the instructor-led lab I will be holding at the conference. Expect some great new X++ features, .NET integration and debugging options to be a part of it!

Still awaiting the official ok, but I’m hoping to release all details with documentation and code on my blog.

  Read more...

Nov 14, 2010 - Dynamics Ax 6.0 Technical Conference

Filed under: #daxmusings #bizapps

If you haven’t heard yet, you absolutely need to click the banner above. I you have heard, but haven’t registered, time is running out! Currently we have registrations out of 44 countries, and the event is going strong to be sold out.

There will be lots of session on all of the numerous, exciting technical changes in 6.0. Trust me, you will not be disappointed, and there is plenty to learn (and re-learn) for anyone working with Ax, whether you’re a developer, consultant, or user.

I will be presenting one of the hands-on labs on X++, stay tuned for more information. And keep an eye on the site, session content is gradually being published.

http://www.microsoft.com/dynamics/DynamicsAXTechnicalConference2011

  Read more...

Oct 13, 2010 - Dynamics Ax 2009 and TFS 2010 (part 2)

Filed under: #daxmusings #bizapps

I’m happy to report our TFS implementation is taking shape.<div>We our now actively using TFS for two implementations, and planning to add more projects soon, including clients we are supporting that are live already.</div><div> </div><div>Our current setup involves a TFS server, which also hosts the unfortunately named “Team Server” for Ax which manages the object IDs.</div><div>We have a Hyper-V hosted virtual server 2008 for each client project, where only developers have access. This virtual server hosts the Ax development environment hooked into TFS.</div><div>When development is ready to be tested by our consultants, one of the developers is responsible for merging the code into the TEST branch. This is done based on changesets, the policy is the changeset check-in comments need to clearly identify the development task number. Based on the changeset comments’ task numbers, the developer (we’ve dubbed him the “branch manager”) merges changesets into the TEST branch (at which point the TFS development work items are associated… a great tool for reporting what went into a new release!). TFS detects any code conflicts, which can fairly easily be resolved using the TFS compare tool (on the XPOs).</div><div>When all is merged, we have a TFS build that will be queued, which automatically refreshes our AOS server (combines all XPOs into one, shuts down the AOS, moves the layers into “old”, copies the most recent label files from the source control tree into the application directory, deletes label and layer indexes, starts the AOS, imports the code + compile, runs a synchronize). The whole build process takes about 30-40 minutes. When all is done, it actually stops the AOS again, copies the layers out and TFS puts those in the drop folder together with the label files (and starts the AOS again).</div><div>When things are properly tested and ready for client/user testing, we merge those changesets into the RELEASE branch, which will then also again build a release AOS, more for the purpose of getting a layer file built (and for one client test the final product before shipping to client, to make sure there’s no branch/merge issues).</div><div>Our drop folder now contains labels and layer to be shipped to the client.</div><div> </div><div>Important to note our script to combine XPOs will add a macro in the XPO that contains the build number from TFS. This is necessary to easily identify the build number a client has running on their different environments.</div><div> </div><div>That said (and noting we’re pretty excited about our new process which has been great so far), several obstacles had to be overcome to get here.</div><div>Besides my explanation in the previous post about using TFS 2010, there are SEVERE limitations to the setup. On a given machine, only one user can use a particular local repository folder or TFS complains (as I understand it, it’s more a Ax limitation of using TFS options such as public workspaces) about the workspace already being in use.</div><div>A workaround would be to use a separate folder for each user. Well, there’s two Ax issues with that. First, Ax expects to find the XPO for a source controlled object in your local repository. So if someone added an object in the Ax AOT, you will see it in the AOT, but your local repository will probably not have the XPO. Annoying Ax-AOT errors ensue.</div><div>Secondly, there is just no way to specify different folders for different users in the Ax source control setup.</div><div> </div><div>The solution we came up with consists of (1) a customization to the Ax - TFS integration to support different folders for different users, and (2) make those user folders NTFS junctions to the same folder, so all XPOs will always exist.</div>

  Read more...

Aug 25, 2010 - Dynamics Ax 2009 and Team Foundation Server (TFS)

Filed under: #daxmusings #bizapps

We have been trying to push clients to use VSS (Visual SourceSafe) as much as we can on new projects, with minor success. For a client not used to development it is hard to convince them of the benefits.<div>It would be even harder to convince them on using TFS, since it requires even more setup. It is also a known fact that setting up TFS 2005/2008 is not something you want to do for your weekend amusement.</div><div> </div><div>That changes with TFS 2010. The setup is (pretty much) a breeze and in my testing I got TFS up and running in no time at all. I’m not convinced TFS is a good product for your average implementation, but for internal use or bigger projects, it is a pretty cool product.</div><div> </div><div>TFS 2010 may now be easy to setup, but the integration with Ax 2009 has some undocumented features.</div><div> </div><div>Here’s some unsolicited advice on things that took me forever to find.</div><div> </div><div>1. Despite what the “Using Ax 2009 with TFS” whitepaper may imply, there actually IS a way to get Ax to put its stuff in a sub-folder of your team project, namely by using workspaces. I found this clue in the whitepaper “Migration from VSS to TFS”… Unfortunately Ax uses the VS2008 client which means it does not support public workspaces (so you’ll have to set it up for each user separately).</div><div>2. Since Ax 2009 is “not certified” for TFS 2010 yet, it does not hook up to it out of the box. What you’ll need to do is install VS2008 with SP1, then install the hotfix from KB974558 (Visual Studio 2008 “forward compatibility”) which will allow VS2008 clients to connect to a TFS 2010 back-end.</div><div>3. Yes you can get the build to do the “combineXPO” trick. I duplicated the default build template, and in that workflow found the step where it calls msbuild. Delete the msbuild node, and replace with your own scripts. Removing msbuild saves you some serious headaches (errors on missing source files, trying to copy the final executable, etc). Also, the older tricks you will find by searching the web will not work anymore in TFS2010, you can no longer add xml commands into your csproj file, since most of the TFS properties (build number, droplocation, etc) are totally out of scope in 2010. In other news, I decided not to use the combineXPO executable linked to above, but made my own small VBScript (technically all you need to do is avoid duplicating header/footer information that is contained within each of the XPOs).</div><div> </div><div>There is some other (outdated) information on doing cool things with scripts, namely on MSDN, in the Ax4.0 section. I could not find this information in the Ax 2009 SDK at all.</div><div> </div><div>I’m currently looking into hooking up ax unit tests into the build process and getting detailed testing information reported.</div>

  Read more...

Jul 7, 2010 - Ax Security (Part 1)

Filed under: #daxmusings #bizapps

Security has always been and continues to be a bit of a hassle in current Ax versions. In anticipation of the new role/task based security in Ax6, I will talk a bit on how the current security works.

Upto version 2009, Ax' security is based on security keys. Security keys are a hierarchy of nodes in the security tree, as you can see on the user group permissions screen. Objects in the AOT get assigned security keys in their properties, which makes them show up in the hierarchy on the permissions screen. This is where the confusion begins.

Security "inheritance".

Security keys can have a parent security key, which on its turn may have a parent security key, etc. This is what makes the hierarchy. If a parent security key has a certain permission granted, it will trickle down to every security key underneath it, and down to every object at the lowest level. Of course, at any level the permission level may be overridden, which then changes the permissions for the security keys and objects underneath, etc.

So technically, setting permissions on the highest level key will grant that permission implicitly to everything underneath.

Forms (screens)

Forms are usually a bit of a challenge. First of all, although it appears that way, a form does not have security directly attached to it. The security is set on a menu item (an entry in the menu used to open the form) which in its turn links to a form. Technically, you can have multiple menu items linked to the same form, with different security.

Additionally, the access to the form is not only controlled by the access given to the menu item, but also by the security given to the tables used on the form. If security is set on both, the user will experience the lowest security settings (if full control set to menu item and read-only on table, the user will get read-only… the same read-only result when read-only on menu-item and full control on table).

Another issue with forms is the buttons (which technically are menu items) that appear on the screen. They have separate security, which can be set on the form security in the security tree, or on the menu item itself (if you know where it appears in the tree).

Here's the caveat. If you give access to a menu item button on a screen, the user will get access to that menu item from anywhere else it is available (other screens, on the menu, etc).

It is VERY tempting to click the "cascade" button. I've always strongly recommended people never ever to click that button. First of all, you are giving access to all these menu items available on the forms. You will also cascade your security down to the tables. Which means, if you need full control to a table somewhere else, setting view permissions and cascading it down will result in changing your table's security to view everywhere else in the system!

And of course if will also require you to explicitly remove security, to make some of the menu items "inherit" from their parents. If you set no security and cascade that down, you are removing access rather than removing the security. It is very confusing.

Deny permission

Ax does not have a "deny" permission. When users are in multiple groups, they will get the union (maximum) permissions of all the groups they are in. There's no way to have a group that denies permission which overrides any other permissions coming from other groups.

Security is a big topic and there's lots more to talk about. There are some tools one can build and will talk about that in an upcoming post. Missing tools/reports are for example: where's the security in the security setup tree for object X, who has what access to object Y, etc.

To put the above in technical perspective, we need to know how the security is stored. We can build on that to create some tools. Stay tuned.

  Read more...

 

Page: 14 of 15

Blog Links

Blog Post Collections

Recent Posts