<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Florian's weblog</title><link>http://blogs.msdn.com/b/floditt/</link><description>My first experience with Microsoft Dynamics AX, BC.Net and the Enterprise Portal at Microsoft.</description><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.21163 (Build: 5.6.583.21163)</generator><item><title>Limitations of the Dynamics Ax service references</title><link>http://blogs.msdn.com/b/floditt/archive/2010/07/01/limitations-of-the-dynamics-ax-service-references.aspx</link><pubDate>Thu, 01 Jul 2010 09:39:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10033335</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=10033335</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2010/07/01/limitations-of-the-dynamics-ax-service-references.aspx#comments</comments><description>&lt;p&gt;The &lt;a href="http://floditt.blogspot.com/2010/07/limitations-of-dynamics-ax-service.html"&gt;article about service-references limitations&lt;/a&gt; is available on my new blog.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10033335" width="1" height="1"&gt;</description></item><item><title>Cross domain access to AIF Web Services (Dynamics Ax 2009)</title><link>http://blogs.msdn.com/b/floditt/archive/2010/06/30/cross-domain-access-to-aif-web-services-dynamics-ax-2009.aspx</link><pubDate>Wed, 30 Jun 2010 21:29:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10033141</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=10033141</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2010/06/30/cross-domain-access-to-aif-web-services-dynamics-ax-2009.aspx#comments</comments><description>&lt;p&gt;I published the &lt;a href="http://floditt.blogspot.com/2010/06/cross-domain-access-to-aif-webservices.html"&gt;new article&lt;/a&gt; on &lt;a href="http://floditt.blogspot.com/"&gt;my new blog&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10033141" width="1" height="1"&gt;</description></item><item><title>.net programming for Dynamics AX developers slides</title><link>http://blogs.msdn.com/b/floditt/archive/2010/06/30/net-programming-for-dynamics-ax-developers-slides.aspx</link><pubDate>Wed, 30 Jun 2010 21:27:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10033140</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=10033140</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2010/06/30/net-programming-for-dynamics-ax-developers-slides.aspx#comments</comments><description>&lt;p&gt;I published &lt;a href="http://www.dittgen.net/florian/webcast1.pdf"&gt;the slides&lt;/a&gt; from my &lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/03/19/webcast-net-for-x-programmers.aspx"&gt;last years presentation&lt;/a&gt; on &lt;a href="http://floditt.blogspot.com/"&gt;my new blog&lt;/a&gt;. This is has been the working draft, but it contains much more slides as the final version, so I’m publishing this one.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10033140" width="1" height="1"&gt;</description></item><item><title>Installing the COM Business Connector</title><link>http://blogs.msdn.com/b/floditt/archive/2010/06/23/installing-the-com-business-connector.aspx</link><pubDate>Wed, 23 Jun 2010 16:11:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10029074</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=10029074</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2010/06/23/installing-the-com-business-connector.aspx#comments</comments><description>&lt;p&gt;I published the&lt;a href="http://floditt.blogspot.com/2010/06/installing-com-business-connector.html"&gt; new article&lt;/a&gt; on &lt;a href="http://floditt.blogspot.com/"&gt;my new blog&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10029074" width="1" height="1"&gt;</description></item><item><title>My blog is Moving</title><link>http://blogs.msdn.com/b/floditt/archive/2010/02/05/my-blog-is-moving.aspx</link><pubDate>Fri, 05 Feb 2010 09:40:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9958699</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9958699</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2010/02/05/my-blog-is-moving.aspx#comments</comments><description>&lt;p&gt;I’m moving to &lt;a href="https://www.blogger.com"&gt;Blogger&lt;/a&gt; since I’m writing these articles for personal purposes and I want to have as much control as possible on my postings. So Please be aware that I will will publish my next articles &lt;a href="http://floditt.blogspot.com/"&gt;on the new blog&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9958699" width="1" height="1"&gt;</description></item><item><title>Enterprise Portal license required for workflows with dynamics Ax 2009</title><link>http://blogs.msdn.com/b/floditt/archive/2010/01/25/enterprise-portal-license-required-for-workflows-with-dynamics-ax-2009.aspx</link><pubDate>Mon, 25 Jan 2010 16:58:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9953051</guid><dc:creator>flo2005</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9953051</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2010/01/25/enterprise-portal-license-required-for-workflows-with-dynamics-ax-2009.aspx#comments</comments><description>&lt;p&gt;Dynamics Ax workflow does require the Enterprise Portal (EP) license. License changes since Dynamics Ax 4 can be found &lt;a href="https://partner.microsoft.com/UK/productssolutions/dynamics/40070431"&gt;here&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Please double-check that the EP license is well configured when the BC.Net throws the following exception (can be found in the Windows application-EventLogs):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Session log on for Microsoft Dynamics failed.     &lt;br /&gt;Dynamics Adapter LogonAs failed.      &lt;br /&gt;Microsoft.Dynamics.Framework.BusinessConnector.Session.Exceptions.FatalSessionExcept      &lt;br /&gt;ion      &lt;br /&gt;at       &lt;br /&gt;Microsoft.Dynamics.Framework.BusinessConnector.Session.DynamicsSession.HandleExcepti      &lt;br /&gt;on(String message, Exception exception, HandleExceptionCallback callback)      &lt;br /&gt;at       &lt;br /&gt;Microsoft.Dynamics.Framework.BusinessConnector.Session.DynamicsAdapter.LogonAs(Strin      &lt;br /&gt;g user, String domain, NetworkCredential bcProxyCredentials, String company, String       &lt;br /&gt;language, String objectServer, String configuration)&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9953051" width="1" height="1"&gt;</description></item><item><title>Delete TEMP files when sending mails with attached files</title><link>http://blogs.msdn.com/b/floditt/archive/2010/01/25/delete-temp-files-when-sending-mails-with-attached-files.aspx</link><pubDate>Mon, 25 Jan 2010 15:53:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9953014</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9953014</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2010/01/25/delete-temp-files-when-sending-mails-with-attached-files.aspx#comments</comments><description>&lt;p&gt;Attaching Documents is a frequently used functionality in Ax (PDF is just an example, but it is true for any attached file):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/DeleteTEMPfileswhensendingmailswithattac_ED92/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/DeleteTEMPfileswhensendingmailswithattac_ED92/image_thumb_3.png" width="598" height="395" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That is why tmp-files, that are generated each time you are using this, might consume quickly an important part of your hard disk, since they are not deleted at the end of the process. The temp-files are copies of the generated text, pdf or RTF files from the tmp-directory. This directory is defined as an user environment variable:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/DeleteTEMPfileswhensendingmailswithattac_ED92/image37.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/DeleteTEMPfileswhensendingmailswithattac_ED92/image37_thumb.png" width="258" height="284" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/DeleteTEMPfileswhensendingmailswithattac_ED92/image_22.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/DeleteTEMPfileswhensendingmailswithattac_ED92/image_thumb_10.png" width="297" height="186" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The easiest way is to schedule a batch which is cleaning the temp directly each time you are starting or shutting down your system. But even this is sometimes not enough. The it is necessary to change the X++ code.&lt;/p&gt;  &lt;p&gt;When sending a report as an attachment, the kernel calls the method &lt;a href="http://msdn.microsoft.com/en-us/library/aa873275.aspx"&gt;reportSendMail&lt;/a&gt; of the &lt;a href="http://msdn.microsoft.com/en-us/library/aa592681.aspx"&gt;Info&lt;/a&gt;-class and passes all necessary information about the attachment in a variable of type &lt;a href="http://msdn.microsoft.com/en-us/library/aa634996.aspx"&gt;PrintJobSettings&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The email is sent in the last line of this method:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;m.sendMailAttach(p1.mailTo(),p1.mailCc(), p1.mailSubject(),&lt;span class="str"&gt;'axapta report'&lt;/span&gt;, &lt;span class="kwrd"&gt;true&lt;/span&gt;, p1.fileName(), fileName);&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;“m” is a variable of type &lt;a href="http://msdn.microsoft.com/en-us/library/aa854620.aspx"&gt;SysINetMail&lt;/a&gt;. The path and file-name of the temp-file is passed as argument with p1.fileName(). Because the tmp-file is only used to attach the file to mail by using the &lt;a href="http://msdn.microsoft.com/en-us/library/aa585769.aspx"&gt;Mapi&lt;/a&gt;, the is no risk to delete the file at the end of this process. The best place to delete this file is after the &lt;a href="http://msdn.microsoft.com/en-us/library/aa612545.aspx"&gt;logoff&lt;/a&gt; of the Mapi session in the method sendMailAttach:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.logoff();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (!isRunningOnServer())&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(WinAPI::fileExists(_attachPath))&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                WinAPI::deleteFile(_attachPath);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Line 2 to 8 is the new code. Line 2 checks if the code is called from the AOS, which is always false, but to be sure that any other custom-code will work, it is better to check this nevertheless. It would be better to encapsulate the delete-call in a try-catch-block, because deleting files is always a risk and must be treated, but this is just an example of course.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9953014" width="1" height="1"&gt;</description></item><item><title>Working with Images (BLOBS) between Dynamics Ax and external applications (UPDATED: 06/01/2010)</title><link>http://blogs.msdn.com/b/floditt/archive/2010/01/04/working-with-images-blobs-between-ax-and-external-applications.aspx</link><pubDate>Mon, 04 Jan 2010 15:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9943390</guid><dc:creator>flo2005</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9943390</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2010/01/04/working-with-images-blobs-between-ax-and-external-applications.aspx#comments</comments><description>&lt;p&gt;&lt;u&gt;&lt;i&gt;(updated the 05/01/2010 and 06/01/2010)&lt;/i&gt;&lt;/u&gt;&lt;/p&gt;  &lt;h1&gt;The idea&lt;/h1&gt;  &lt;p&gt;Whenever you need to transfer data in a platform specific format (like Images), the easiest way of doing this is to create an envelope (in Xml) and put the data in an encoded format in this envelope. &lt;/p&gt;  &lt;p&gt;Here’s a schema that shows such a scenario:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/Dessin1_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/Dessin1_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Dessin1" border="0" alt="Dessin1" src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/Dessin1_thumb.jpg" width="423" height="414" mce_src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/Dessin1_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1&gt;The Ax layer&lt;/h1&gt;  &lt;p&gt;On the Ax layer (the 2nd row) the image is transformed in a &lt;a href="http://en.wikipedia.org/wiki/Base64" mce_href="http://en.wikipedia.org/wiki/Base64"&gt;base64&lt;/a&gt; string (the text file in the schema) and then put into an Xml-document (the envelope in the schema).&lt;/p&gt;  &lt;p&gt;Just have a look at the table CompanyImage, that is used to persist the picture of an employee:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_thumb_5.png" width="413" height="348" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The type of the column in which the image is saved is “&lt;a href="http://msdn.microsoft.com/en-us/library/aa874816.aspx"&gt;Container&lt;/a&gt;”. There is no explicit type for Images, but you will notice that the table in the SQL-Server database uses the type “&lt;a href="http://msdn.microsoft.com/en-us/library/ms189574.aspx"&gt;Image&lt;/a&gt;” to persist the container information. The image-type of the SQL-Server 2008 &lt;a href="http://msdn.microsoft.com/en-us/library/ms187993.aspx"&gt;is defined as&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Variable-length binary data from 0 through 2^31-1 (2,147,483,647) bytes.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In contrast to its name (“image”) this type is used to persist any binary data from Ax (container). Working in X++ with the binary data in the container requires the conversion to the type &lt;a href="http://msdn.microsoft.com/en-us/library/aa550840.aspx"&gt;BinData&lt;/a&gt; which provides all necessary information to load, save, encode or decode binary data. This is what I will do in the following example.&lt;/p&gt;  &lt;p&gt;Here’s a simple code that reads out the image (&lt;a href="http://msdn.microsoft.com/en-us/library/aa642726.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa642726.aspx"&gt;CompanyImage&lt;/a&gt;) and puts this in a &lt;a href="http://msdn.microsoft.com/en-us/library/aa611587.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa611587.aspx"&gt;XmlDocument&lt;/a&gt;:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; XmlDocument  getImageXml(dataAreaId refDataAreaId, tableId refTableId, recId refRecId)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    XmlDocument xmlEnvelope;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    XmlElement childNode;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    str content;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    CompanyImage ci;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    BinData bin = &lt;span class="kwrd"&gt;new&lt;/span&gt; BinData();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="rem"&gt;//getting image from CompanyImage&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;ci = CompanyImage::find(refDataAreaId, refTableId, refRecId);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&lt;span class="rem"&gt;//creating BinData object from Container in the CompanyImage object&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;bin.setData(ci.Image);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&lt;span class="rem"&gt;//encoding the image to base64&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;content = bin.base64Encode();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&lt;span class="rem"&gt;//creating the envelope and inserting a XmlElement that contains the image&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&lt;span class="rem"&gt;//in a base64 string&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;xmlEnvelope = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;childNode =  xmlEnvelope.CreateElement(&lt;span class="str"&gt;&amp;quot;image&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;childNode.innerXml(content);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;xmlEnvelope.AppendChild(childNode);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; xmlEnvelope;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Here’s the code for testing this function&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Job11(Args _args)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    str xmlContent;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    XmlDocument xmlEnvelope;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    recId refRecId;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    tableId refTableId;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    dataAreaId refDataAreaId;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; i;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="rem"&gt;//Sample Data...&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;refDataAreaId = &lt;span class="str"&gt;&amp;quot;ceu&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;refTableId = 103;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;refRecId = 5637144576;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;xmlEnvelope = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&lt;span class="rem"&gt;//getting image from CompanyImage&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;xmlEnvelope = A1::getImageXml(refDataAreaId, refTableId, refRecId);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;xmlContent = xmlEnvelope.xml();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Just an useful hint: If you need to encode large images, you might run into an issue with the &lt;a href="http://msdn.microsoft.com/en-us/library/aa878526.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa878526.aspx"&gt;base64Encode&lt;/a&gt; method. Unfortunately this is not documented on msdn, but this is related to a limitation of the buffer size. This can be fixed as described by &lt;a href="http://www.blogger.com/profile/10380093517542701179" mce_href="http://www.blogger.com/profile/10380093517542701179"&gt;Paul Steynberg&lt;/a&gt; &lt;a href="http://paulsteynberg.blogspot.com/2008/09/setting-maxbuffersize-for-dynamics-ax.html" mce_href="http://paulsteynberg.blogspot.com/2008/09/setting-maxbuffersize-for-dynamics-ax.html"&gt;on his blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Whenever you communicate with an external application that can’t convert the Ax type XmlDocument, you need to wrap the method getImageXml with a method that returns a string:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; str  getImage(dataAreaId refDataAreaId, tableId refTableId, recId refRecId)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; A1::getImageXml(refDataAreaId, refTableId, refRecId).xml();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h1&gt;The client (using BC.Net)&lt;/h1&gt;

&lt;p&gt;Now that we have a method that return a string instead of a XmlDocument, we can directly use CLR objects instead of using wrapper classes. In .Net we can handle the XmlDocument-content from the Ax 2009 in a &lt;a href="http://msdn.microsoft.com/en-us/library/system.string.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.string.aspx"&gt;string&lt;/a&gt;. But, since Xml is much more flexible than a simple encoded string, a method that does the conversion to a &lt;a title="XmlDocument Class" href="http://msdn2.microsoft.com/6kza7w4k.aspx" mce_href="http://msdn2.microsoft.com/6kza7w4k.aspx"&gt;System.Xml.XmlDocument&lt;/a&gt; is recommended:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Getting the Xml-envelope with the image&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;refDataAreaId&amp;quot;&amp;gt;ceu&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;refTableId&amp;quot;&amp;gt;103&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;refRecId&amp;quot;&amp;gt;5637144576&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;The Xml-envelope with the image as content&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; XmlDocument GetXmlDocument(&lt;span class="kwrd"&gt;string&lt;/span&gt; refDataAreaId, &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; refTableId, &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="kwrd"&gt;long&lt;/span&gt; refRecId)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            XmlDocument xml = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (Axapta ax = &lt;span class="kwrd"&gt;new&lt;/span&gt; Axapta())&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                ax.Logon(refDataAreaId, &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty, &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty, &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt; xmlImageValue = (&lt;span class="kwrd"&gt;string&lt;/span&gt;)ax.CallStaticClassMethod(&lt;span class="str"&gt;&amp;quot;A1&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;getImage&amp;quot;&lt;/span&gt;, refDataAreaId, 103, 5637144576);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                xml = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Xml.XmlDocument();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                xml.InnerXml = xmlImageValue;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                ax.Logoff();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; xml;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;Please be aware that this is just an example and that in a real world application you must implement an exception handling which I do not implement here to have code that is easier to read. &lt;/p&gt;

&lt;p&gt;Now that we do have the xmlEnvelope with the encoded image as content, we need a method that does read out the content and returns the image:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Image UnwrapImage(XmlDocument xmlEnvelope)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            XmlElement imageContent = (XmlElement) xmlEnvelope.FirstChild;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; base64Image = imageContent.InnerXml;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] imageBytes = Convert.FromBase64String(base64Image);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            MemoryStream stream = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream(imageBytes);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            Image content = Image.FromStream(stream);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; content;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;All that we need is an event that dos call this method and that assigns the image-content for example to a visual control like a picture-box:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; button6_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; refDataAreaId = &lt;span class="str"&gt;&amp;quot;ceu&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; refTableId = 103;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="kwrd"&gt;long&lt;/span&gt; refRecId = 5637144576;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            XmlDocument xmlEnvelope =&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                GetXmlDocument(refDataAreaId,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                    refTableId,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                    refRecId);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            Image content = UnwrapImage(xmlEnvelope);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            pictureBox1.Image = content;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h1&gt;The Ax layer (using the AIF)&lt;/h1&gt;

&lt;p&gt;The first schema was based on the communication with Xml data. I was not explicitly showing the possibility to use the BC.Net because the real advantage of the xmlEnvelope data is given when all the communication is based on Xml. This is the case with &lt;a href="http://en.wikipedia.org/wiki/Web_service" mce_href="http://en.wikipedia.org/wiki/Web_service"&gt;WebServices&lt;/a&gt;. Creating an &lt;a href="http://msdn.microsoft.com/en-us/library/bb496535.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb496535.aspx"&gt;AIF-service&lt;/a&gt; that exposes a method returning the XmlEnvelope is quite easy. First you need a class that is derived from the AifDocumentService and that implements the following methods: &lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; AifSampleImageService extends AifDocumentService&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; str  getImage(dataAreaId refDataAreaId, tableId refTableId, recId refRecId)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; A1::getImageXml(refDataAreaId, refTableId, refRecId).xml();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt;()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    ;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    super();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; AifSampleImageService construct()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; AifSampleImageService();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;After that a new Service and the operator needs to be configured in the AOT:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_thumb.png" width="453" height="185" mce_src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Be careful that the security key is configured. Otherwise this will result in an authorization error.&lt;/p&gt;

&lt;p&gt;Once the Service is configured this new service is available in the AIF-configuration by refreshing the available AIF-services and enabling the new AIF-service the AIF-services in the AIF-administration:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_thumb_1.png" width="638" height="161" mce_src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_thumb_1.png" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Then the services need to be regenerated (“Generate button). The new service is now available and accessible with the Internet Explorer:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_thumb_2.png" width="648" height="353" mce_src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_thumb_2.png" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The Xml-schema (Xsd) that represents the AIF-operator is the following:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:schema&lt;/span&gt; &lt;span class="attr"&gt;elementFormDefault&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;qualified&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;targetNamespace&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://tempuri.org&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xmlns:xs&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xmlns:tns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://tempuri.org&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;AifSampleImageServiceGetImageRequest&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:complexType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:sequence&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt; &lt;span class="attr"&gt;minOccurs&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;refDataAreaId&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;nillable&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;xs:string&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt; &lt;span class="attr"&gt;minOccurs&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;refRecId&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;xs:long&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt; &lt;span class="attr"&gt;minOccurs&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;refTableId&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;xs:int&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xs:sequence&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xs:complexType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;AifSampleImageServiceGetImageResponse&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:complexType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:sequence&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt; &lt;span class="attr"&gt;minOccurs&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;response&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;nillable&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;xs:string&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xs:sequence&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xs:complexType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xs:schema&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;As you can see in line 15, the return type of the operator “GetImage” has the type “string”. This is certainly not the best solution in a &lt;a href="http://en.wikipedia.org/wiki/Service-oriented_architecture" mce_href="http://en.wikipedia.org/wiki/Service-oriented_architecture"&gt;SOA&lt;/a&gt;-context, since you loose the type information of your Xml-document. In a real world application it would be much better to define a special type within Ax that describes the format.&amp;#160; It seems to be clear, that the following schema explains perfectly, that image-element contains a encoded base64 value:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:schema&lt;/span&gt; &lt;span class="attr"&gt;attributeFormDefault&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;unqualified&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;elementFormDefault&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;qualified&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xmlns:xs&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xs:element&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;image&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;xs:base64Binary&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xs:schema&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;The type “&lt;a href="http://www.w3.org/TR/xmlschema-2/#base64Binary" mce_href="http://www.w3.org/TR/xmlschema-2/#base64Binary"&gt;base64Binary&lt;/a&gt;” is part of the Xml-schema specification of the W3C and defined as:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;b&gt;base64Binary&lt;/b&gt; represents Base64-encoded arbitrary binary data. The &lt;a href="http://www.w3.org/TR/xmlschema-2/#dt-value-space" mce_href="http://www.w3.org/TR/xmlschema-2/#dt-value-space"&gt;·value space·&lt;/a&gt; of &lt;b&gt;base64Binary&lt;/b&gt; is the set of finite-length sequences of binary octets. For &lt;b&gt;base64Binary&lt;/b&gt; data the entire binary stream is encoded using the Base64 Alphabet in &lt;a href="http://www.w3.org/TR/xmlschema-2/#RFC2045" mce_href="http://www.w3.org/TR/xmlschema-2/#RFC2045"&gt;[RFC 2045]&lt;/a&gt;. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is exactly what the XmlDocument contains:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;lt;?xml version=&lt;span class="str"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; encoding=&lt;span class="str"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;?&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;lt;envelope&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;lt;image&amp;gt; [the image encoded in a base64 value] &amp;lt;/image&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;lt;/envelope&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;How to create data types is explained on the &lt;a href="http://blogs.msdn.com/aif/" mce_href="http://blogs.msdn.com/aif/"&gt;Aif blog&lt;/a&gt; in a good article about &lt;a href="http://blogs.msdn.com/aif/archive/2008/12/16/creating-custom-dynamics-ax-services.aspx" mce_href="http://blogs.msdn.com/aif/archive/2008/12/16/creating-custom-dynamics-ax-services.aspx"&gt;creating custom Ax services&lt;/a&gt;. There you could implement the method “&lt;a href="http://msdn.microsoft.com/en-us/library/cc619873.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc619873.aspx"&gt;getSchema&lt;/a&gt;” of the interface “&lt;a href="http://msdn.microsoft.com/en-us/library/cc617109.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc617109.aspx"&gt;AifXmlSerializable&lt;/a&gt;”. The article explains you in detail how to do this and this would go too far for this article. Just keep in mind that communicating Xml-documents in a string is a ‘no do’ in a SOA environment and that there are better ways with Dynamics Ax.&lt;/p&gt;

&lt;h1&gt;The .Net client (Consuming the AIF-service)&lt;/h1&gt;

&lt;p&gt;The Wsdl, that is exposed by this new service, can now be referenced in a Visual Studio 2008 project as a Service Reference:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_thumb_3.png" width="506" height="414" mce_src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_thumb_3.png" /&gt;&lt;/a&gt; &lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_thumb_4.png" width="445" height="436" mce_src="http://blogs.msdn.com/blogfiles/floditt/WindowsLiveWriter/WorkingwithImagesBLOBSbetweenAxandextern_E065/image_thumb_4.png" /&gt;&lt;/a&gt; &lt;/pre&gt;

&lt;pre class="csharpcode"&gt;The GetXmlDocument method from the first example (using the BC.Net) is changed to consume a WebService:&lt;/pre&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;The Xml-envelope with the image as content&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; XmlDocument GetXmlDocumentFromAif(&lt;span class="kwrd"&gt;string&lt;/span&gt; refDataAreaId,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; refTableId,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;long&lt;/span&gt; refRecId)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            XmlDocument xml = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            AifSampleImageServiceClient client = &lt;span class="kwrd"&gt;new&lt;/span&gt; AifSampleImageServiceClient();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; xmlImageValue = client.getImage(refDataAreaId, refRecId, refTableId);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            xml = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Xml.XmlDocument();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            xml.InnerXml = xmlImageValue;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; xml;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;pre class="csharpcode"&gt;&amp;#160;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Now the an event lets us consume get and unwrap the image and display in a PictureBox as in the first example. The method UnwrapImage is taken from the first example.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; button8_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; refDataAreaId = &lt;span class="str"&gt;&amp;quot;ceu&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; refTableId = 103;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="kwrd"&gt;long&lt;/span&gt; refRecId = 5637144576;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            XmlDocument xmlEnvelope =&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                GetXmlDocument(refDataAreaId,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                    refTableId,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                    refRecId);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            Image content = UnwrapImage(xmlEnvelope);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            pictureBox1.Image = content;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9943390" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/X_2B002B00_/">X++</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/BC-Net/">BC.Net</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/AIF+/">AIF </category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax2009/">Ax2009</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/The+CLR+for+X_2B002B00_+programmers+/">The CLR for X++ programmers </category></item><item><title>Memory leaks and profiling with .Net</title><link>http://blogs.msdn.com/b/floditt/archive/2009/11/04/memory-leaks-and-profiling-with-net.aspx</link><pubDate>Wed, 04 Nov 2009 21:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9917568</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9917568</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/11/04/memory-leaks-and-profiling-with-net.aspx#comments</comments><description>&lt;P&gt;I wrote some moths ago &lt;A href="http://blogs.msdn.com/floditt/archive/2008/12/15/1-the-garbage-collector-in-x-and-the-clr.aspx" mce_href="http://blogs.msdn.com/floditt/archive/2008/12/15/1-the-garbage-collector-in-x-and-the-clr.aspx"&gt;an article about the GC&lt;/A&gt; and highlighted some particularities (unsafe and unmanaged code, disposing and finalizing, etc). &lt;/P&gt;
&lt;P&gt;When you are developing with .Net you will be sometimes faced to memory or resource&amp;nbsp;leaks. Especially if you are using the BC.Net, since the BC.Net is using unsafe and unmanaged code. But even&amp;nbsp;with X++ you&amp;nbsp;will be&amp;nbsp;more and more faced to such problems.&amp;nbsp;So it is very useful to know as much as possible about causes, identification and resolving. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/fmarguerie/" mce_href="http://weblogs.asp.net/fmarguerie/"&gt;Fabrice Marguerie&lt;/A&gt; (co-author of &lt;A href="http://linqinaction.net/" mce_href="http://linqinaction.net/"&gt;LINQ in Action&lt;/A&gt;) wrote a &lt;A href="http://msdn.microsoft.com/en-us/library/ee658248.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee658248.aspx"&gt;great article&lt;/A&gt; on MSDN (&lt;A href="http://weblogs.asp.net/fmarguerie/archive/2009/11/03/article-detect-avoid-memory-leaks.aspx" mce_href="http://weblogs.asp.net/fmarguerie/archive/2009/11/03/article-detect-avoid-memory-leaks.aspx"&gt;his blog entry&lt;/A&gt; for the trackback) about this subject. Enjoy this article!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917568" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/BC-Net/">BC.Net</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Troubleshooting/">Troubleshooting</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Programming/">Programming</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Thoughts/">Thoughts</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/The+CLR+for+X_2B002B00_+programmers+/">The CLR for X++ programmers </category></item><item><title>IDynamicsAXExpressionBuilder returned error code 0x80131509 - reloaded</title><link>http://blogs.msdn.com/b/floditt/archive/2009/08/20/idynamicsaxexpressionbuilder-returned-error-code-0x80131509-reloaded.aspx</link><pubDate>Thu, 20 Aug 2009 12:21:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9876665</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9876665</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/08/20/idynamicsaxexpressionbuilder-returned-error-code-0x80131509-reloaded.aspx#comments</comments><description>&lt;p&gt;As I already wrote it in the update of that blog entry in &lt;a href="http://blogs.msdn.com/floditt/archive/2009/05/05/idynamicsaxexpressionbuilder-returned-error-code-0x80131509.aspx"&gt;my first posing&lt;/a&gt; about this issue:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The origin of this issue can be found in the method '&lt;a href="http://msdn.microsoft.com/en-us/library/cc615095.aspx"&gt;buildEnumerationXml&lt;/a&gt;' of the class '&lt;a href="http://msdn.microsoft.com/en-us/library/cc642449.aspx"&gt;SysExpression&lt;/a&gt;':&lt;/p&gt;    &lt;p&gt;Currently, a loop iterates until the last element: &lt;/p&gt;    &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; (i = sysDictEnum.firstValue(); i &amp;lt;= sysDictEnum.lastValue(); i = sysDictEnum.nextValue(i)) &lt;/pre&gt;
  &lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

  &lt;p&gt;I you replace this (sysDictEnum.lastValue(); ) by the number of elements (sysDictEnum.values();) the issue is solved. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;[UPDATE 03/09/2009]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The hotfix for this bug has been published: KB974925 (Build: 5.0.1500.1255).&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9876665" width="1" height="1"&gt;</description></item><item><title>Importing Leads and Contacts</title><link>http://blogs.msdn.com/b/floditt/archive/2009/08/19/importing-leads-and-contacts.aspx</link><pubDate>Wed, 19 Aug 2009 01:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9874654</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9874654</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/08/19/importing-leads-and-contacts.aspx#comments</comments><description>&lt;P&gt;You can find a very good description on &lt;A href="http://blogs.msdn.com/emeadaxsupport" mce_href="http://blogs.msdn.com/emeadaxsupport"&gt;our team&amp;nbsp;blog&lt;/A&gt; (EMEA Dynamics AX Support) how to import leads and contact Xml files with Dynamics Ax 2009 &lt;A href="http://blogs.msdn.com/emeadaxsupport/archive/2009/04/23/how-to-import-crm-leads.aspx" mce_href="http://blogs.msdn.com/emeadaxsupport/archive/2009/04/23/how-to-import-crm-leads.aspx"&gt;here&lt;/A&gt;. The problem you will be faced by using this is, that you can’t import data with non Ascii characters, which might cause some difficulties. The reason for that is the way how the Xml files is proceeded during the transformation process. &lt;/P&gt;
&lt;P&gt;Ax creates first a copy of the Xml file and the Xslt File in the temp directory of the AOS which is by default:&lt;/P&gt;
&lt;P&gt;C:\Program Files\Microsoft Dynamics AX\50\Application\appl\DynamicsAx1\tmp\ &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Unfortunately this is done by reading out the Xml file into a container and then creating a new Xml file by using the method:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc639240.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc639240.aspx"&gt;SysImportUtil&lt;/A&gt;/&lt;A href="http://msdn.microsoft.com/en-us/library/cc557405.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc557405.aspx"&gt;createFileFromContainer&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Unfortunately because it is using the &lt;A href="http://msdn.microsoft.com/en-us/library/aa867230.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa867230.aspx"&gt;AsciiIo&lt;/A&gt; to create the file. Since this class is intended to encode the content of the container into Ascii, it is&amp;nbsp; incompatible with Xml files. The sample files are using Xml files encoded in &lt;A href="http://en.wikipedia.org/wiki/UTF-8" mce_href="http://en.wikipedia.org/wiki/UTF-8"&gt;Utf-8&lt;/A&gt; which is some kind of an extension to Ascii and this is the reason why you can’t use this import for non Ascii characters:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;[..] &lt;CODE&gt;AsciiIO&lt;/CODE&gt; supports only &lt;A href="http://en.wikipedia.org/wiki/ANSI" mce_href="http://en.wikipedia.org/wiki/ANSI"&gt;ANSI&lt;/A&gt; &lt;U&gt;c&lt;/U&gt;ode &lt;U&gt;p&lt;/U&gt;age (ACP) characters. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;But you can fix this by replacing the AsciiIo by the &lt;A href="http://msdn.microsoft.com/en-us/library/aa603840.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa603840.aspx"&gt;TextIo&lt;/A&gt; class. Msdn&amp;nbsp;describes it&amp;nbsp;as follow:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;CODE&gt;TextIO&lt;/CODE&gt; replaces &lt;CODE&gt;AsciiIO&lt;/CODE&gt; to provide support for non-ANSI code page file I/O. The &lt;A href="http://msdn.microsoft.com/en-us/library/aa881745.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa881745.aspx"&gt;&lt;CODE&gt;TextIO&lt;/CODE&gt; constructor &lt;/A&gt;has an additional optional parameter to set the code page of the file. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This is exactly what we need. The most common &lt;A href="http://en.wikipedia.org/wiki/Code_page" mce_href="http://en.wikipedia.org/wiki/Code_page"&gt;codepages&lt;/A&gt;&amp;nbsp;are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;0 - CP_ACP; the ANSI code page &lt;/LI&gt;
&lt;LI&gt;437 - OEM code page 437 &lt;/LI&gt;
&lt;LI&gt;850 - Code page 850 &lt;/LI&gt;
&lt;LI&gt;1200 - UTF-16&lt;A href="http://en.wikipedia.org/wiki/Endianness" mce_href="http://en.wikipedia.org/wiki/Endianness"&gt;LE&lt;/A&gt; (default value)&lt;/LI&gt;
&lt;LI&gt;1201 - UTF-16&lt;A href="http://en.wikipedia.org/wiki/Endianness" mce_href="http://en.wikipedia.org/wiki/Endianness"&gt;BE&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;65001 - UTF-8 &lt;/LI&gt;
&lt;LI&gt;54936: GB-18030 &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;So, if you want to use the Xml-files &lt;A href="http://blogs.msdn.com/emeadaxsupport/attachment/9564568.ashx" mce_href="http://blogs.msdn.com/emeadaxsupport/attachment/9564568.ashx"&gt;from the example&lt;/A&gt; without any modification you need to change the codepage to 65001, but it is easier to change the Xml-file to &lt;A href="http://en.wikipedia.org/wiki/UTF-16" mce_href="http://en.wikipedia.org/wiki/UTF-16"&gt;Utf-16&lt;/A&gt;.&amp;nbsp;This can be done&amp;nbsp;easily by using Visual Studio:&lt;/P&gt;
&lt;P&gt;Just open the Xml-file, change the Utf-8 to Utf-16 and safe the changes. Why not using the notepad ?&lt;/P&gt;
&lt;P&gt;Visual Studio reads out the Xml encoding information:&lt;/P&gt;&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN class=html&gt;xml&lt;/SPAN&gt; &lt;SPAN class=attr&gt;version&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="1.0"&lt;/SPAN&gt; &lt;SPAN class=attr&gt;encoding&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="utf-16"&lt;/SPAN&gt;?&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;
&lt;STYLE type=text/css&gt;.csharpcode {
	BACKGROUND-COLOR: #ffffff; FONT-FAMILY: consolas, "Courier New", courier, monospace; COLOR: black; FONT-SIZE: small
}
.csharpcode PRE {
	BACKGROUND-COLOR: #ffffff; FONT-FAMILY: consolas, "Courier New", courier, monospace; COLOR: black; FONT-SIZE: small
}
.csharpcode PRE {
	MARGIN: 0em
}
.csharpcode .rem {
	COLOR: #008000
}
.csharpcode .kwrd {
	COLOR: #0000ff
}
.csharpcode .str {
	COLOR: #006080
}
.csharpcode .op {
	COLOR: #0000c0
}
.csharpcode .preproc {
	COLOR: #cc6633
}
.csharpcode .asp {
	BACKGROUND-COLOR: #ffff00
}
.csharpcode .html {
	COLOR: #800000
}
.csharpcode .attr {
	COLOR: #ff0000
}
.csharpcode .alt {
	BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; WIDTH: 100%
}
.csharpcode .lnum {
	COLOR: #606060
}
&lt;/STYLE&gt;
and adds the required file signature to that file (called &lt;A href="http://en.wikipedia.org/wiki/Byte_Order_Mark" mce_href="http://en.wikipedia.org/wiki/Byte_Order_Mark"&gt;BOM&lt;/A&gt;). These information can be&amp;nbsp;consulted with the Visual Studio&amp;nbsp;binary editor (File/Open/File/&amp;lt;select Xml-file&amp;gt;/Open as/binary editor):&amp;nbsp;“EF BB BF” for Utf-8 and “FF FE” for Utf-16.&lt;/P&gt;
&lt;P&gt;So in order to import data with non-Ascii data, you have to:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;replace the AsciiIo class by TextIo &lt;/LI&gt;
&lt;LI&gt;import Utf-16 encoded Xml data. &lt;/LI&gt;&lt;/OL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9874654" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/X_2B002B00_/">X++</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/AIF+/">AIF </category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Troubleshooting/">Troubleshooting</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Programming/">Programming</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Thoughts/">Thoughts</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax_2D00_Troubleshooting/">Ax-Troubleshooting</category></item><item><title>Template Wizard does create SheetNames with more than 30 characters</title><link>http://blogs.msdn.com/b/floditt/archive/2009/08/18/template-wizard-does-create-sheetnames-with-more-than-30-characters.aspx</link><pubDate>Tue, 18 Aug 2009 22:14:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9874427</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9874427</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/08/18/template-wizard-does-create-sheetnames-with-more-than-30-characters.aspx#comments</comments><description>&lt;p&gt;The Template Wizard (Administration/Periodic/Data export/import/Excel spreadsheets/Template Wizard) creates unfortunately SheetNames that might exceed 30 characters, which is not allowed by Excel and results in annoying message boxes that are requesting a new SheetName with less than 31 characters. &lt;/p&gt;  &lt;p&gt;The following code change in the method &lt;a href="http://msdn.microsoft.com/en-us/library/aa575181.aspx"&gt;SysDataExcelDef&lt;/a&gt;/&lt;a href="http://msdn.microsoft.com/en-us/library/aa638285.aspx"&gt;buildTmpExcelWorksheet&lt;/a&gt; will resolve this problem:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="rem"&gt;//modifications done for working with long tablenames&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="rem"&gt;//    str tempSheetName;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="rem"&gt;//    str suffixName;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="rem"&gt;//    int suffixlength;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="rem"&gt;//original code:&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="rem"&gt;//tmpExcelWorksheet.SheetName = tmpExcelWorksheet.TableName + '_' + int2str(sysExpImpTable.OccurrenceId) + '-1';&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        tempSheetName = tmpExcelWorksheet.TableName + &lt;span class="str"&gt;'_'&lt;/span&gt; + int2str(sysExpImpTable.OccurrenceId) + &lt;span class="str"&gt;'-1'&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (strlen(tempSheetName) &amp;gt; 30)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            tempSheetName = tmpExcelWorksheet.TableName;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            suffixName =  &lt;span class="str"&gt;'_'&lt;/span&gt; + int2str(sysExpImpTable.OccurrenceId) + &lt;span class="str"&gt;'-1'&lt;/span&gt;; &lt;span class="rem"&gt;//as this is done in the original code&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            suffixLength = strlen(suffixName);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            tempSheetName = substr(tempSheetName, 0, 30 - suffixLength);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            &lt;span class="rem"&gt;//assigning the new name&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            tmpExcelWorksheet.SheetName = tempSheetName + suffixName;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            tmpExcelWorksheet.SheetName = tempSheetName;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9874427" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/X_2B002B00_/">X++</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Troubleshooting/">Troubleshooting</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax2009/">Ax2009</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax_2D00_Troubleshooting/">Ax-Troubleshooting</category></item><item><title>Large Xml-documents with an AIF-WebService.</title><link>http://blogs.msdn.com/b/floditt/archive/2009/08/11/large-xml-documents-with-an-aif-webservice.aspx</link><pubDate>Tue, 11 Aug 2009 12:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9864098</guid><dc:creator>flo2005</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9864098</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/08/11/large-xml-documents-with-an-aif-webservice.aspx#comments</comments><description>If you are faced to 'large' Xml-documents with AIF-WebServices, you might be faced to difficulties for Inbound and OutBound services. The following two points should be applied for the client app.config, if the client uses the WCF for communicating with...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/08/11/large-xml-documents-with-an-aif-webservice.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9864098" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/AIF+/">AIF </category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Troubleshooting/">Troubleshooting</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax2009/">Ax2009</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax_2D00_Troubleshooting/">Ax-Troubleshooting</category></item><item><title>‘0’-values don’t appear in Xml files generated by the AIF</title><link>http://blogs.msdn.com/b/floditt/archive/2009/08/11/0-values-don-t-appear-in-xml-files-generated-by-the-aif.aspx</link><pubDate>Tue, 11 Aug 2009 11:57:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9864053</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9864053</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/08/11/0-values-don-t-appear-in-xml-files-generated-by-the-aif.aspx#comments</comments><description>Numeric values that are 0 (not null) are not serialized and don't appear in the Xml file. The reason for this is, that the numeric types in Dynamics Ax are not nullable (must have a value) and do interpret the value 0 as a &amp;quot;null value&amp;quot; (0 as...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/08/11/0-values-don-t-appear-in-xml-files-generated-by-the-aif.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9864053" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/AIF+/">AIF </category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Troubleshooting/">Troubleshooting</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax2009/">Ax2009</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax_2D00_Troubleshooting/">Ax-Troubleshooting</category></item><item><title>AIF-service call with COM and .Net Business Connector</title><link>http://blogs.msdn.com/b/floditt/archive/2009/08/11/aif-service-call-with-com-business-connector.aspx</link><pubDate>Tue, 11 Aug 2009 11:48:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9864043</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9864043</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/08/11/aif-service-call-with-com-business-connector.aspx#comments</comments><description>When executing an AIF-service with the COM and .Net Business Connector the client will not be notified about exceptions during the execution. The reason for this is, that AIF-services are always executed within a transaction ( ttslevel = 1) even when...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/08/11/aif-service-call-with-com-business-connector.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9864043" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/X_2B002B00_/">X++</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/AIF+/">AIF </category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Thoughts/">Thoughts</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax2009/">Ax2009</category></item><item><title>Request for the permission of type 'SecurityPermission' failed</title><link>http://blogs.msdn.com/b/floditt/archive/2009/08/10/request-for-the-permission-of-type-securitypermission-failed.aspx</link><pubDate>Mon, 10 Aug 2009 20:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9863395</guid><dc:creator>flo2005</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9863395</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/08/10/request-for-the-permission-of-type-securitypermission-failed.aspx#comments</comments><description>When you get the following exception while executing a report on the SSRS or within Ax: System.Security.SecurityException was unhandled Message=&amp;quot; Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/08/10/request-for-the-permission-of-type-securitypermission-failed.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9863395" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Troubleshooting/">Troubleshooting</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax2009/">Ax2009</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax_2D00_Troubleshooting/">Ax-Troubleshooting</category></item><item><title>base64Encode() of the kernel class ‘Image’ does return an empty string</title><link>http://blogs.msdn.com/b/floditt/archive/2009/08/10/base64encode-of-the-kernel-class-image-does-return-an-empty-string.aspx</link><pubDate>Mon, 10 Aug 2009 18:32:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9863268</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9863268</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/08/10/base64encode-of-the-kernel-class-image-does-return-an-empty-string.aspx#comments</comments><description>A partner asked me why the base64Encode method of the Image class does always return an empty string. In the following example: 1: Image image; 

 2: str sBase64Encode; 

 3: ; 

 4: image = new Image(); 

 5: image.loadImage(@ 'C:\sample.bmp...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/08/10/base64encode-of-the-kernel-class-image-does-return-an-empty-string.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9863268" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/X_2B002B00_/">X++</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Troubleshooting/">Troubleshooting</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/AxToolbox/">AxToolbox</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax4/">Ax4</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax2009/">Ax2009</category></item><item><title>Gender information in Employees-form and the Global Address Book (GAB)</title><link>http://blogs.msdn.com/b/floditt/archive/2009/08/10/gender-information-in-employees-form-and-the-global-address-book-gab.aspx</link><pubDate>Mon, 10 Aug 2009 12:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9863062</guid><dc:creator>flo2005</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9863062</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/08/10/gender-information-in-employees-form-and-the-global-address-book-gab.aspx#comments</comments><description>You can open the information about employees with the Global Address Book (Basic/Global Address Book) and with the Employees form (Basic/Employees). 
 Normally it is no problem to modify data in both forms, but unfortunately this is not true for the...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/08/10/gender-information-in-employees-form-and-the-global-address-book-gab.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9863062" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/X_2B002B00_/">X++</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Troubleshooting/">Troubleshooting</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax2009/">Ax2009</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax_2D00_Troubleshooting/">Ax-Troubleshooting</category></item><item><title>IDynamicsAXExpressionBuilder returned error code 0x80131509</title><link>http://blogs.msdn.com/b/floditt/archive/2009/05/05/idynamicsaxexpressionbuilder-returned-error-code-0x80131509.aspx</link><pubDate>Tue, 05 May 2009 18:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9588996</guid><dc:creator>flo2005</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9588996</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/05/05/idynamicsaxexpressionbuilder-returned-error-code-0x80131509.aspx#comments</comments><description>In forms that are using the ActiveX-control ExpressionBuilder (like TrvPolicyForm) you might be faced to the following error message: 
 
 Method 'initialize' in COM object of class 'IDynamicsAXExpressionBuilder' returned error code 0x80131509 (&amp;lt;unknown&amp;gt;...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/05/05/idynamicsaxexpressionbuilder-returned-error-code-0x80131509.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9588996" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Troubleshooting/">Troubleshooting</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax2009/">Ax2009</category></item><item><title>Webcast: .Net for X++ programmers</title><link>http://blogs.msdn.com/b/floditt/archive/2009/03/19/webcast-net-for-x-programmers.aspx</link><pubDate>Thu, 19 Mar 2009 20:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9490629</guid><dc:creator>flo2005</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9490629</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/03/19/webcast-net-for-x-programmers.aspx#comments</comments><description>I will do a short Webcast about .Net basics for X++ developers which is based on the articles I posted here recently. During 1 hour I’ll talk about the basics of .Net and how to do’s. If you are a X++ programmer and you are new to .Net, this Webcast might...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/03/19/webcast-net-for-x-programmers.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9490629" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Fun/">Fun</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/The+CLR+for+X_2B002B00_+programmers+/">The CLR for X++ programmers </category></item><item><title>Some links to IIS 7 information</title><link>http://blogs.msdn.com/b/floditt/archive/2009/03/03/some-links-to-iis-7-information.aspx</link><pubDate>Tue, 03 Mar 2009 13:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9456400</guid><dc:creator>flo2005</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9456400</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/03/03/some-links-to-iis-7-information.aspx#comments</comments><description>IIS 7 changed fundamentally since IIS 6. Here are some links that might help you when you feel lost with all these changes ;-) IIS 7 Links: http://technet.microsoft.com/en-us/library/cc732976.aspx ( IIS 7.0: Operations Gui de) http://www.iis.net/ConfigReference...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/03/03/some-links-to-iis-7-information.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9456400" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/EP/">EP</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/AIF+/">AIF </category></item><item><title>Deploying service references with Dynamics Ax 2009</title><link>http://blogs.msdn.com/b/floditt/archive/2009/02/09/deploying-service-references-with-dynamics-ax-2009.aspx</link><pubDate>Mon, 09 Feb 2009 16:46:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9408669</guid><dc:creator>flo2005</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9408669</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/02/09/deploying-service-references-with-dynamics-ax-2009.aspx#comments</comments><description>Service references are are great feature in Dynamics Ax 2009 and using WCF with Ax is now really easy. But unfortunately it is not easy to deploy this service reference. If you now need to deploy a service reference from the development environment to...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/02/09/deploying-service-references-with-dynamics-ax-2009.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9408669" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/AIF+/">AIF </category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Troubleshooting/">Troubleshooting</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax2009/">Ax2009</category></item><item><title>RPC error 1702 when calling a WinAPI method from a batch job</title><link>http://blogs.msdn.com/b/floditt/archive/2009/01/29/rpc-error-1702-when-calling-a-winapi-method-from-a-batch-job.aspx</link><pubDate>Thu, 29 Jan 2009 16:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9383121</guid><dc:creator>flo2005</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9383121</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/01/29/rpc-error-1702-when-calling-a-winapi-method-from-a-batch-job.aspx#comments</comments><description>You probably already noticed that error messages are sometimes not really helpful when you are trying to understand a problem. The following code creates such misleading error message: 1: public void run() 

 2: { 

 3: ; 

 4: if (WinApi::folderExists...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/01/29/rpc-error-1702-when-calling-a-winapi-method-from-a-batch-job.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9383121" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/X_2B002B00_/">X++</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Troubleshooting/">Troubleshooting</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Programming/">Programming</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax4/">Ax4</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax2009/">Ax2009</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax_2D00_Troubleshooting/">Ax-Troubleshooting</category></item><item><title>AxUpdatePortal Utility</title><link>http://blogs.msdn.com/b/floditt/archive/2009/01/28/axupdateportal-utility.aspx</link><pubDate>Wed, 28 Jan 2009 13:52:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9380573</guid><dc:creator>flo2005</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9380573</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/01/28/axupdateportal-utility.aspx#comments</comments><description>I just want to remind the existence of this nice little tool , which is be very useful for any deployment or redeployment of your WebParts and EP-sites. Basically it is a simple .Net command-line executable which calls the same method as the AxSetup does...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/01/28/axupdateportal-utility.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9380573" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/EP/">EP</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Troubleshooting/">Troubleshooting</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax2009/">Ax2009</category><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Ax_2D00_Troubleshooting/">Ax-Troubleshooting</category></item><item><title>Internet Explorer 8 RC1</title><link>http://blogs.msdn.com/b/floditt/archive/2009/01/27/internet-explorer-8-rc1.aspx</link><pubDate>Tue, 27 Jan 2009 13:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9377232</guid><dc:creator>flo2005</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/floditt/rsscomments.aspx?WeblogPostID=9377232</wfw:commentRss><comments>http://blogs.msdn.com/b/floditt/archive/2009/01/27/internet-explorer-8-rc1.aspx#comments</comments><description>Because I blogged about Google Chrome when it was getting beta, I’m doing this with the IE 8, too. You can now install the RC1 of this version, which is very close the the final version. This version is available here . The key features of this version...(&lt;a href="http://blogs.msdn.com/b/floditt/archive/2009/01/27/internet-explorer-8-rc1.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9377232" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/floditt/archive/tags/Fun/">Fun</category></item></channel></rss>
