<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Palle Agermark's WebLog</title><subtitle type="html">About Dynamics AX development</subtitle><id>http://blogs.msdn.com/palle_agermark/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/palle_agermark/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2006-12-21T11:23:00Z</updated><entry><title>Turn off regular expressions in TextBuffer</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/06/26/turn-off-regular-expressions-in-textbuffer.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/06/26/turn-off-regular-expressions-in-textbuffer.aspx</id><published>2007-06-26T12:22:27Z</published><updated>2007-06-26T12:22:27Z</updated><content type="html">When you work with objects of the TextBuffer class they use regular expressions internally when applying operations on the text. So this example probably wouldn't perform as you'd expect, since "&amp;lt;" is a control character used by the regular expression engine: textBuffer.replace("&amp;lt;Apples&amp;gt;", "&amp;lt;Cake"); To mitigate this, you can turn off the regular expression engine: textBuffer.regularExpressions(false); Mmmmm, cake…. This posting is provided "AS IS" with no warranties, and confers no rights...(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/06/26/turn-off-regular-expressions-in-textbuffer.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3541600" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author></entry><entry><title>Import data from InfoPath forms to AX 4.0</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/06/25/import-data-from-infopath-forms-to-ax-4-0.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/06/25/import-data-from-infopath-forms-to-ax-4-0.aspx</id><published>2007-06-25T10:51:22Z</published><updated>2007-06-25T10:51:22Z</updated><content type="html">Here is a very high-level description on how you can import data from an InfoPath form to AX 4.0: Create the AX web service you want to use (e.g. to create a sales order) Create a new InfoPath form Define the web service as data source in InfoPath and point InfoPath to the web service's WSDL (URL) Drag and drop the required fields (e.g. the entire DocumentContext and a subset of fields on SalesOrder) onto the InfoPath form Save &amp;amp; publish Now, you can use the InfoPath form to fill in customer...(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/06/25/import-data-from-infopath-forms-to-ax-4-0.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3515265" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author></entry><entry><title>AX 4.0 Enterprise Portal and WSS 3.0 - Themes</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/06/25/ax-4-0-enterprise-portal-wss-3-0-themes.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/06/25/ax-4-0-enterprise-portal-wss-3-0-themes.aspx</id><published>2007-06-25T10:43:00Z</published><updated>2007-06-25T10:43:00Z</updated><content type="html">When you apply other themes from WSS, like Reflector or Plastic, Enterprise Portal (EP) retains the default theme. This is because EP doesn't ship with style sheets for all the themes of WSS. To customize the EP style sheet to match the WSS theme you can create a new style sheet file for EP. Take a copy of AXEP.css and customize it to match the theme (the comments in the css file points to the equivalent SharePoint style elements) and name the new file as AXEP&amp;lt;themename&amp;gt;.css. This file is in...(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/06/25/ax-4-0-enterprise-portal-wss-3-0-themes.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3515176" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author><category term="Dynamics AX 4.0" scheme="http://blogs.msdn.com/palle_agermark/archive/tags/Dynamics+AX+4.0/default.aspx" /></entry><entry><title>Access SharePoint Document Library through UNC Path</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/06/25/access-sharepoint-document-library-through-unc-path.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/06/25/access-sharepoint-document-library-through-unc-path.aspx</id><published>2007-06-25T10:32:00Z</published><updated>2007-06-25T10:32:00Z</updated><content type="html">I usually don't just link to other blogs from this blog, but this tip is very helpful and I seem to return to it again and again for reference. So here is the link: http://blogs.msdn.com/solutions/archive/2006/07/19/671873.aspx This posting is provided "AS IS" with no warranties, and confers no rights....(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/06/25/access-sharepoint-document-library-through-unc-path.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3514995" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author></entry><entry><title>Deploying AX with other directory servers than Active Directory</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/06/25/deploying-ax-with-other-directory-servers-than-active-directory.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/06/25/deploying-ax-with-other-directory-servers-than-active-directory.aspx</id><published>2007-06-25T10:19:00Z</published><updated>2007-06-25T10:19:00Z</updated><content type="html">As you may very well know AX can't be deployed with other directory servers than Active Directory (AD). But a product like Microsoft Identity Integration Server (MIIS) allows you to integrate between AD and other directory servers. This will allow you to use AD only for AX while continuing to use another directory server for all other purposes. You can find more details about MIIS at http://www.microsoft.com/technet/miis/default.mspx . This posting is provided "AS IS" with no warranties, and confers...(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/06/25/deploying-ax-with-other-directory-servers-than-active-directory.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3514771" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author><category term="Dynamics AX 4.0" scheme="http://blogs.msdn.com/palle_agermark/archive/tags/Dynamics+AX+4.0/default.aspx" /></entry><entry><title>SysImport without confirmation dialog</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/06/21/sysimport-without-confirmation-dialog.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/06/21/sysimport-without-confirmation-dialog.aspx</id><published>2007-06-21T15:04:00Z</published><updated>2007-06-21T15:04:00Z</updated><content type="html">If you run a something like the following, you'll be met with a confirmation dialog for existing elements. private void importAOT(str fileName) { SysImportElements sysImport = new SysImportElements(); sysImport.newFile(fileName); sysImport.parmImportAot(true); sysImport.import(); } This is of course not desirable if you are trying to write some kind of automated task. Change the sysImport.import statement to this: sysImport.import(#impRemoveExcess | #impIgnoreCheckStatus); The macros are located...(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/06/21/sysimport-without-confirmation-dialog.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3404243" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author></entry><entry><title>Create file directory on the AOS fileserver from code</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/06/20/create-file-directory-on-the-aos-from-code.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/06/20/create-file-directory-on-the-aos-from-code.aspx</id><published>2007-06-20T14:46:00Z</published><updated>2007-06-20T14:46:00Z</updated><content type="html">WinAPIServer does not have createDirectory method, so best option is to use ClrInterop. static void createFileDirectory(Args _args) { FilePath path; new InterOpPermission(InteropKind::ClrInterop).assert(); System.IO.Directory::CreateDirectory(path); CodeAccessPermission::revertAssert(); } This posting is provided "AS IS" with no warranties, and confers no rights....(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/06/20/create-file-directory-on-the-aos-from-code.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3403887" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author></entry><entry><title>Remove HTML tags from a string</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/06/19/remove-html-tags-from-a-string.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/06/19/remove-html-tags-from-a-string.aspx</id><published>2007-06-19T14:11:00Z</published><updated>2007-06-19T14:11:00Z</updated><content type="html">Just stumbled on this little, but usefull, method. Web::stripHTML(...) removes HTML tags from a string and returns the actual text of the HTML string. The HTML must be fairly simple though. This posting is provided "AS IS" with no warranties, and confers no rights....(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/06/19/remove-html-tags-from-a-string.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3403024" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author></entry><entry><title>How to disable a configuration key from X++</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/06/19/how-to-disable-a-configuration-key-from-x.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/06/19/how-to-disable-a-configuration-key-from-x.aspx</id><published>2007-06-19T13:52:00Z</published><updated>2007-06-19T13:52:00Z</updated><content type="html">Please be aware that by running this code, you'll loose data in any table associated with the configuration key. ConfigurationKeySet configurationKeySet = new ConfigurationKeySet(); ; configurationKeySet.loadSystemSetup(); configurationKeySet.enabled(configurationKeyNum(MyConfigKey)); SysDictConfigurationKey::save(configurationKeySet.pack()); SysSecurity::reload(true, false); This posting is provided "AS IS" with no warranties, and confers no rights....(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/06/19/how-to-disable-a-configuration-key-from-x.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3402893" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author></entry><entry><title>What is MST?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/04/24/what-is-mst.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/04/24/what-is-mst.aspx</id><published>2007-04-24T09:30:54Z</published><updated>2007-04-24T09:30:54Z</updated><content type="html">I have been with Microsoft for a little more than four years now and twice my team has been involved in an investigation to figure out what MST, as in AmountMST, is short for. Now by writing this blog post I hope to save us from a potential third investigation. Actually this time we found the key to the answer in a help text and it will of course be part of future documentation. The abbreviation doesn't seem to any kind industry standard, but MST is short for "Monetary Standard". I have a short explanation...(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/04/24/what-is-mst.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2256486" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author></entry><entry><title>Use regular expressions in the Find dialog</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/03/22/use-regular-expressions-in-the-find-dialog.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/03/22/use-regular-expressions-in-the-find-dialog.aspx</id><published>2007-03-22T14:52:00Z</published><updated>2007-03-22T14:52:00Z</updated><content type="html">The cross reference in AX is to me a very important tool to stay on top of things. I use it for research trying figure out how things are connected and I use it when I refactor code to see if I need to change any surrounding code. In our development environment we have had a period where the cross reference has been incomplete though, which has forced me to use the Find dialog a bit more than I usually do. The search criteria you enter in either "Named" or "Containing text" is treated as a regular...(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/03/22/use-regular-expressions-in-the-find-dialog.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1930425" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author><category term="Dynamics AX 3.0" scheme="http://blogs.msdn.com/palle_agermark/archive/tags/Dynamics+AX+3.0/default.aspx" /><category term="Dynamics AX 4.0" scheme="http://blogs.msdn.com/palle_agermark/archive/tags/Dynamics+AX+4.0/default.aspx" /></entry><entry><title>Create a project from items checked out with the version control</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/02/28/create-a-project-from-item-checked-out-with-the-version-control.aspx" /><link rel="enclosure" type="application/octet-stream" length="2090" href="http://blogs.msdn.com/palle_agermark/attachment/1772905.ashx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/02/28/create-a-project-from-item-checked-out-with-the-version-control.aspx</id><published>2007-02-28T10:54:00Z</published><updated>2007-02-28T10:54:00Z</updated><content type="html">I regularly install a new build of AX, so I have to export and import the stuff I'm working on. I have written the following job to help me create a Private Project of whatever is checked out. static void SysCreatePendingObjectsProject(Args _args) { Dialog dialog; DialogField dialogFieldProjectName; SysProjectFilterRunBase upgradeProject; SysVersionControlTmpItem item; TreeNode treeNode; UtilElements utilElements; void createProject(SysElementName _projectName) { ProjectNode upgradeNode; upgradeNode...(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/02/28/create-a-project-from-item-checked-out-with-the-version-control.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1772905" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author><category term="Dynamics AX 4.0" scheme="http://blogs.msdn.com/palle_agermark/archive/tags/Dynamics+AX+4.0/default.aspx" /></entry><entry><title>One piece of code to update a field in multiple tables</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/01/26/one-piece-of-code-to-update-a-field-in-multiple-tables.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/01/26/one-piece-of-code-to-update-a-field-in-multiple-tables.aspx</id><published>2007-01-26T16:07:00Z</published><updated>2007-01-26T16:07:00Z</updated><content type="html">I got inspired by Max Belugins blog post about " Abstract Macros " and I got to think about how I would have solved one of the tasks he once set out to solve with this concept. Basically Max wanted to update a field, of same type, in several tables without writing code for each table. My approach to this would be to create a table map for the tables I want to update. For each table I make a mapping to the field I want to update. In the following example with my approach, I update all "City" fields...(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/01/26/one-piece-of-code-to-update-a-field-in-multiple-tables.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1536660" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author></entry><entry><title>Missing datatype in the Fincancial Dimension Wizard</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2007/01/11/missing-datatype-in-the-fincancial-dimension-wizard.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2007/01/11/missing-datatype-in-the-fincancial-dimension-wizard.aspx</id><published>2007-01-11T10:43:00Z</published><updated>2007-01-11T10:43:00Z</updated><content type="html">The Fincancial Dimensions Wizard is really helpfull if you need to add new dimensions to the system. It has come to my attention though that it skips an extended datatype which also should be updated. The datatype is DimensionExtCodeId and it is important to update if you use the AIF framework. You can easily add it to the wizard by adding this line to the run method: this.addElementToEDT(typeId(DimensionsExtCodeId), labelDimension, strFmt("External code type for converting %1", labelDimension));...(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2007/01/11/missing-datatype-in-the-fincancial-dimension-wizard.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1449753" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author><category term="Dynamics AX 4.0" scheme="http://blogs.msdn.com/palle_agermark/archive/tags/Dynamics+AX+4.0/default.aspx" /><category term="Bugs" scheme="http://blogs.msdn.com/palle_agermark/archive/tags/Bugs/default.aspx" /></entry><entry><title>Dynamics AX 4.0 SP1 Localized is available</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/palle_agermark/archive/2006/12/21/dynamics-ax-4-0-sp1-localized-is-available.aspx" /><id>http://blogs.msdn.com/palle_agermark/archive/2006/12/21/dynamics-ax-4-0-sp1-localized-is-available.aspx</id><published>2006-12-21T13:23:00Z</published><updated>2006-12-21T13:23:00Z</updated><content type="html">You can now download the localized version of 4.0 SP1. It supports the following 32 countries/regions: Austria, Australia, Belgium, Brazil, Canada, China, Czech Republic, Denmark, Estonia, Finland, France, Germany, Hungary, Iceland, India, Italy, Ireland, Latvia, Lithuania, Malaysia, Mexico, Netherlands, New Zealand, Poland, Russia, Singapore, South Africa, Spain, Switzerland, United Kingdom, United States and Turkey. You can download it from Partner Source: https://mbs.microsoft.com/partnersource/downloads/servicepack/ax40sp1_download.htm...(&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2006/12/21/dynamics-ax-4-0-sp1-localized-is-available.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1339595" width="1" height="1"&gt;</content><author><name>Palle Agermark</name><uri>http://blogs.msdn.com/members/Palle+Agermark.aspx</uri></author><category term="Dynamics AX 4.0" scheme="http://blogs.msdn.com/palle_agermark/archive/tags/Dynamics+AX+4.0/default.aspx" /></entry></feed>