<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Microsoft Dynamics Mobile Team blog</title><subtitle type="html">&lt;br/&gt;News and goodies direct to you from the product team!</subtitle><id>http://blogs.msdn.com/dynamicsmobile/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/dynamicsmobile/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-07-07T14:25:00Z</updated><entry><title>Microsoft Dynamics Mobile Has Been Discontinued</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2009/09/24/microsoft-dynamics-mobile-has-been-discontinued.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2009/09/24/microsoft-dynamics-mobile-has-been-discontinued.aspx</id><published>2009-09-24T15:01:00Z</published><updated>2009-09-24T15:01:00Z</updated><content type="html">&lt;P&gt;Microsoft Dynamics Mobile for Microsoft Dynamics AX and Microsoft Dynamics NAV has been discontinued. For more information, please visit PartnerSource at &lt;A title=https://mbs.microsoft.com/partnersource/solutions/mobile href="https://mbs.microsoft.com/partnersource/solutions/mobile" mce_href="https://mbs.microsoft.com/partnersource/solutions/mobile"&gt;https://mbs.microsoft.com/partnersource/solutions/mobile&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;In response to questions in the marketplace, we made this strategic decision to discontinue the current development of Microsoft Dynamics Mobile for Microsoft Dynamics AX and Microsoft Dynamics NAV due to the broad availability of such partner-developed mobile solutions. As part of Microsoft’s Support Lifecycle Policy, we will continue product support and maintenance of Microsoft Dynamics Mobile through January 14, 2014.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898924" width="1" height="1"&gt;</content><author><name>John Swymer</name><uri>http://blogs.msdn.com/members/John+Swymer.aspx</uri></author><category term="Dynamics Mobile" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Dynamics+Mobile/default.aspx" /><category term="NAV mobile" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/NAV+mobile/default.aspx" /><category term="AX mobile" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/AX+mobile/default.aspx" /></entry><entry><title>Configuring Permissions For Processing Mobile Documents in Microsoft NAV 2009 </title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2009/07/29/configuring-permissions-for-processing-mobile-documents-in-microsoft-nav-2009.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2009/07/29/configuring-permissions-for-processing-mobile-documents-in-microsoft-nav-2009.aspx</id><published>2009-07-29T10:35:00Z</published><updated>2009-07-29T10:35:00Z</updated><content type="html">&lt;P&gt;For a mobile document to process from the mobile document service to Microsoft Dynamics 2009, there are several permission settings in Microsoft Dynamics 2009 that you must configure. The permission settings vary depending on whether the mobile document service communicates with Microsoft Dynamics 2009 through an Application Server or a Web Service.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Note: &lt;/B&gt;For Microsoft Dynamics Mobile 1.5, the required permissions when using Application Server have changed from Microsoft Dynamics Mobile 1.1 and earlier versions.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Using Application Server&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;To process a mobile document in Microsoft Dynamics NAV 2009 through an Application Server, you must set up permissions in Microsoft Dynamics NAV 2009 on the following accounts:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Windows account of the mobile device user&lt;/LI&gt;
&lt;LI&gt;Application pool identity that is used by the Mobile Document Service.&lt;BR&gt;&lt;B&gt;Note:&lt;/B&gt; This was not required for Microsoft Dynamics Mobile 1.1 and earlier.&lt;/LI&gt;
&lt;LI&gt;Logon account that is used by the Application Server component.&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;IMG title="Microsoft Dymanics Mobile with Application Server" style="WIDTH: 542px; HEIGHT: 120px" height=120 alt="Microsoft Dymanics Mobile with Application Server" src="http://blogs.msdn.com/photos/dynamicsmobile/images/9851891/original.aspx" width=542 align=left mce_src="http://blogs.msdn.com/photos/dynamicsmobile/images/9851891/original.aspx"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The following table includes the set up that is required for each account in Microsoft Dynamics NAV 2009 to process a mobile document.&lt;/P&gt;
&lt;TABLE class="" borderColor=cyan cellSpacing=0 cellPadding=6 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR bgColor=cyan&gt;
&lt;TD class="" width="25%"&gt;&lt;B&gt;Microsoft Dynamics NAV 2009 setup&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width="25%"&gt;&lt;B&gt;Mobile user Windows account&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width="25%"&gt;&lt;B&gt;Document Service&amp;nbsp;application pool identity&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width="25%"&gt;&lt;B&gt;Application Server logon account&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A class="" title="Create Windows Login in NAV" href="http://go.microsoft.com/fwlink/?LinkID=159713" target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkID=159713"&gt;Windows login&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=""&gt;yes&lt;/TD&gt;
&lt;TD class=""&gt;yes&lt;/TD&gt;
&lt;TD class=""&gt;yes&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A class="" title="Adding NAV Users to Roles" href="http://go.microsoft.com/fwlink/?LinkID=159714" target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkID=159714"&gt;Roles on the Windows login&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=""&gt;The roles that give permission to process information in the request document. For example, if you have a document type that creates customers, then the user’s Windows Login must be assigned the S&amp;amp;R-CUSTOMER, EDIT role, which is the standard role for users who have permission to create, modify, and delete customers.&lt;/TD&gt;
&lt;TD class=""&gt;MOB-SERVER-NAS&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;P&gt;MOB-SERVER-NAS&lt;BR&gt;ALL&lt;/P&gt;
&lt;P&gt;Role of&amp;nbsp;each document type that Microsoft Dynamics NAV Application Server processes.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A class="" title="Adding mobile users" href="http://go.microsoft.com/fwlink/?LinkID=159715" target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkID=159715"&gt;Mobile User&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=""&gt;yes&lt;/TD&gt;
&lt;TD class=""&gt;yes&lt;/TD&gt;
&lt;TD class=""&gt;no&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A class="" title="Setting up document types" href="http://go.microsoft.com/fwlink/?LinkID=159716" target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkID=159716"&gt;Assigned to the document type&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=""&gt;yes&lt;/TD&gt;
&lt;TD class=""&gt;no&lt;/TD&gt;
&lt;TD class=""&gt;no&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;H3&gt;Using Web Services&lt;/H3&gt;
&lt;P&gt;To process a mobile request document in Microsoft Dynamics NAV 2009 using Web services, you must set up permissions in Microsoft Dynamics NAV 2009 for the following accounts:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Windows account of the mobile device user&lt;/LI&gt;
&lt;LI&gt;Identity of document handler that is used to process mobile request document. This can be the same as the document service’s identity.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;IMG title="Microsoft Dynamics Mobile with NAV Web services" style="WIDTH: 453px; HEIGHT: 117px" height=117 alt="Microsoft Dynamics Mobile with NAV Web services" src="http://blogs.msdn.com/photos/dynamicsmobile/images/9851833/original.aspx" width=453 align=left mce_src="http://blogs.msdn.com/photos/dynamicsmobile/images/9851833/original.aspx"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The following table includes the set up that is required for each account in Microsoft Dynamics NAV 2009 to process a mobile document.&lt;/P&gt;
&lt;TABLE class="" borderColor=cyan cellSpacing=0 cellPadding=6 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR bgColor=cyan&gt;
&lt;TD class="" width="33%"&gt;&lt;B&gt;Microsoft Dynamics NAV 2009 setup&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width="33%"&gt;&lt;B&gt;Mobile user Windows account&lt;/B&gt;&lt;/TD&gt;
&lt;TD class="" width="33%"&gt;&lt;B&gt;Document handler's identity&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A class="" title="Create Windows Login in NAV" href="http://go.microsoft.com/fwlink/?LinkID=159713" target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkID=159713"&gt;Windows login&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=""&gt;yes&lt;/TD&gt;
&lt;TD class=""&gt;yes&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A class="" title="Adding NAV Users to Roles" href="http://go.microsoft.com/fwlink/?LinkID=159714" target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkID=159714"&gt;Roles on the Windows login&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=""&gt;The roles that give permission to process information in the request document. For example, if you have a document type that creates customers, then the user’s Windows Login must be assigned the S&amp;amp;R-CUSTOMER, EDIT role, which is the standard role for users who have permission to create, modify, and delete customers.&lt;/TD&gt;
&lt;TD class=""&gt;none&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A class="" title="Adding mobile users" href="http://go.microsoft.com/fwlink/?LinkID=159715" target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkID=159715"&gt;Mobile User&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=""&gt;yes&lt;/TD&gt;
&lt;TD class=""&gt;yes&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;A class="" title="Setting up document types" href="http://go.microsoft.com/fwlink/?LinkID=159716" target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkID=159716"&gt;Assigned to the document type&lt;/A&gt;&lt;/TD&gt;
&lt;TD class=""&gt;yes&lt;/TD&gt;
&lt;TD class=""&gt;no&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9851828" width="1" height="1"&gt;</content><author><name>John Swymer</name><uri>http://blogs.msdn.com/members/John+Swymer.aspx</uri></author><category term="Dynamics Mobile" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Dynamics+Mobile/default.aspx" /><category term="mobile permissions" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/mobile+permissions/default.aspx" /><category term="mobile documents" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/mobile+documents/default.aspx" /><category term="NAV mobile" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/NAV+mobile/default.aspx" /></entry><entry><title>Dynamics AX Mobile 1.5 SSIS Package Failure when using SQL Server collation Danish_Norwegian_CI_AS</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2009/07/16/dynamics-ax-mobile-1-5-ssis-package-failure-when-using-sql-server-collation-danish-norwegian-ci-as.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2009/07/16/dynamics-ax-mobile-1-5-ssis-package-failure-when-using-sql-server-collation-danish-norwegian-ci-as.aspx</id><published>2009-07-16T16:56:00Z</published><updated>2009-07-16T16:56:00Z</updated><content type="html">&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 12pt; mso-bidi-font-size: 11.0pt"&gt;Recently we received some feedback around the SQL Server with Danish and Norvegian collation and we will like to communicate this work around to solve the problem.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 12pt; mso-bidi-font-size: 11.0pt"&gt;Error Description:&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 12pt; mso-bidi-font-size: 11.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;When running the Dynamics Mobile SSIS Package in SQL Server 2005/2008 the package may fail with messages similar to:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;U&gt;Package Execution Utility:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/U&gt;&lt;/I&gt;&lt;/B&gt;“Error: SSIS Error Code DTS_E_OLEDBERROR.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;An OLE DBError has occurred.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Error code 0x80040E14.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;An OLE DB record is available.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Source:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Microsoft SQL Native Client Hresult : 0x80040e14 Description: “Invalid column name DataAreaID”.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;U&gt;SSIS Package in SQL Server: &lt;/U&gt;&lt;/I&gt;&lt;/B&gt;“Source: Activity DTS.Pipeline&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Description: One or more component failed validation.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Code: 0xC0024107&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Source: Activity&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Description: There were errors during task validation.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;DTExec: The package execution returned DTSER_FAILURE (1).”&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 12pt; mso-bidi-font-size: 11.0pt"&gt;Reason: &lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;FONT size=3&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;The SQL Server variables defined in the SSIS package represent a SQL select statement that uses a column with the name “DataAreaID”.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;SQL Server throws and error as the combination of two A’s in the column name represent a spe&lt;SPAN style="COLOR: #31849b; mso-themecolor: accent5; mso-themeshade: 191"&gt;c&lt;/SPAN&gt;ial character in the Danish language.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;Work Around:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;All the select statements must be changed so that the two “A” characters are the same case.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Suggested change is to change “DataAreaID” to “DATAAREAID”.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;To do this;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Navigate to the AX SSIS package (typically located in C:\Program Files\Microsoft Dynamics Mobile\Solutions\Microsoft Dynamics AX 2009 SP1\Mobile Sales\Server\Staging Database\SSIS 2005 or C:\Program Files\Microsoft Dynamics Mobile\Solutions\Microsoft Dynamics AX 2009 SP1\Mobile Sales\Server\Staging Database\SSIS 2008 depending on the version of SQL Server you are running.)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Open up the AX Package in Notepad (Mobile Sales-AX2009-Package.dtsx).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Perform an edit-&amp;gt;Replace to all instances of “DataAreaID” and change it to “DATAAREAID”.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Save the file.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;5.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Package should now run successfully with the Danish collation.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9835659" width="1" height="1"&gt;</content><author><name>BertrandCaillet</name><uri>http://blogs.msdn.com/members/BertrandCaillet.aspx</uri></author><category term="installation" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/installation/default.aspx" /><category term="SSIS" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/SSIS/default.aspx" /><category term="Mobile Server" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Mobile+Server/default.aspx" /><category term="collation" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/collation/default.aspx" /></entry><entry><title>How to code your own barcode enabled tasklets (Motorola and Intermec devices)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2009/04/07/how-to-code-your-own-barcode-enabled-tasklets-motorola-and-intermec-devices.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="25898" href="http://blogs.msdn.com/dynamicsmobile/attachment/9534784.ashx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2009/04/07/how-to-code-your-own-barcode-enabled-tasklets-motorola-and-intermec-devices.aspx</id><published>2009-04-07T03:15:00Z</published><updated>2009-04-07T03:15:00Z</updated><content type="html">&lt;p&gt;This is an installment of &lt;a href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/barcode-scanning-with-microsoft-dynamics-mobile.aspx" mce_href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/barcode-scanning-with-microsoft-dynamics-mobile.aspx"&gt;Barcode Scanning With Microsoft Dynamics Mobile&lt;/a&gt; series.&lt;/p&gt;  &lt;p&gt;This article is targeted at developers who want to start using the barcode scanner capabilities of Microsoft Dynamics Mobile 1.5 framework. It supports &lt;a href="http://business.motorola.com/us/enterprisemobility/index.html"&gt;&lt;font color="#006ff7"&gt;Motorola&lt;/font&gt;&lt;/a&gt; (formerly Symbol) and &lt;a href="http://www.intermec.com/"&gt;&lt;font color="#006ff7"&gt;Intermec&lt;/font&gt;&lt;/a&gt; devices. After you have read this article and followed its tutorial part you will be able to implement your own tasklets with barcode scanning capabilities. It might seem a long way on first glance but once done you will realize that the heart of the functionality is doable in just a few steps.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/dynamicsmobile/WindowsLiveWriter/HowtocodeyourownbarcodeenabledtaskletsMo_147B1/Barcode%20Scanner%20Sample_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Barcode Scanner Sample" border="0" alt="Barcode Scanner Sample" src="http://blogs.msdn.com/blogfiles/dynamicsmobile/WindowsLiveWriter/HowtocodeyourownbarcodeenabledtaskletsMo_147B1/Barcode%20Scanner%20Sample_thumb.jpg" width="244" height="324" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/dynamicsmobile/WindowsLiveWriter/HowtocodeyourownbarcodeenabledtaskletsMo_147B1/Barcode%20Scanner%20Demo%20Tasklet_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Barcode Scanner Demo Tasklet" border="0" alt="Barcode Scanner Demo Tasklet" src="http://blogs.msdn.com/blogfiles/dynamicsmobile/WindowsLiveWriter/HowtocodeyourownbarcodeenabledtaskletsMo_147B1/Barcode%20Scanner%20Demo%20Tasklet_thumb.jpg" width="244" height="324" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The following tutorial describes all steps necessary to create a simple Rolepad based application which enables barcode scanning on Motorola (Symbol) and Intermec devices. The process is the same for both device classes – there are only two differences: The first one is proprietary .NET CF scanning assemblies which you must download and reference within your project and the second one is the corresponding section in the App.config file. Tutorial is written for Symbol, differences are &lt;strong&gt;highlighted for Intermec&lt;/strong&gt;.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Prerequisites: Microsoft Visual Studio 2008 SP1 (Professional edition or above), Microsoft Dynamics Mobile – Device Components with Device SDK feature installed &lt;/li&gt;    &lt;li&gt;We are going to create one VS solution with two projects based on Microsoft Dynamics Mobile 1.5 platform. &lt;a title="OLE_LINK67" name="OLE_LINK67"&gt;&lt;/a&gt;&lt;a title="OLE_LINK66" name="OLE_LINK66"&gt;&lt;/a&gt;The main purpose of the Rolepad project called BarcodeScannerSample15 is an easy deployment of all necessary binaries configuration files. &lt;a title="OLE_LINK69" name="OLE_LINK69"&gt;&lt;/a&gt;&lt;a title="OLE_LINK68" name="OLE_LINK68"&gt;&lt;/a&gt;The barcode scanning logic is being coded in the separated tasklet project called BarcodeScanner. &lt;/li&gt;    &lt;li&gt;Open Visual Studio 2008 (Professional edition or above). &lt;/li&gt;    &lt;li&gt;Create a Rolepad project&lt;a title="OLE_LINK5" name="OLE_LINK5"&gt;&lt;/a&gt; called &lt;a title="OLE_LINK55" name="OLE_LINK55"&gt;&lt;/a&gt;&lt;a title="OLE_LINK3" name="OLE_LINK3"&gt;&lt;/a&gt;&lt;a title="OLE_LINK51" name="OLE_LINK51"&gt;&lt;/a&gt;&lt;a title="OLE_LINK10" name="OLE_LINK10"&gt;&lt;/a&gt;&lt;a title="OLE_LINK9" name="OLE_LINK9"&gt;&lt;/a&gt;BarcodeScannerSample15: File &amp;gt; New &amp;gt; Project… &amp;gt; &lt;a title="OLE_LINK12" name="OLE_LINK12"&gt;&lt;/a&gt;&lt;a title="OLE_LINK11" name="OLE_LINK11"&gt;&lt;/a&gt;Project types &amp;gt; Visual C# &amp;gt; Dynamics Mobile &amp;gt; Rolepad project for Windows Mobile 6 (or Windows Mobile 5 if you wish). &lt;/li&gt;    &lt;li&gt;Add a new tasklet project called &lt;a title="OLE_LINK59" name="OLE_LINK59"&gt;&lt;/a&gt;&lt;a title="OLE_LINK57" name="OLE_LINK57"&gt;&lt;/a&gt;&lt;a title="OLE_LINK56" name="OLE_LINK56"&gt;&lt;/a&gt;&lt;a title="OLE_LINK14" name="OLE_LINK14"&gt;&lt;/a&gt;&lt;a title="OLE_LINK13" name="OLE_LINK13"&gt;&lt;/a&gt;&lt;a title="OLE_LINK2" name="OLE_LINK2"&gt;&lt;/a&gt;&lt;a title="OLE_LINK1" name="OLE_LINK1"&gt;&lt;/a&gt;BarcodeScanner to the BarcodeScannerSample15 solution: Right-click on BarcodeScannerSample15 solution &amp;gt; Add &amp;gt; New Project… &amp;gt; Project types &amp;gt; Visual C# &amp;gt; Dynamics Mobile &amp;gt; Tasklet project for Windows Mobile 6 (or 5). &lt;/li&gt;    &lt;li&gt;BarcodeScanner assembly should be deployed automatically when deploying BarcodeScannerSample15 project: Add reference of the BarcodeScanner project to the &lt;a title="OLE_LINK22" name="OLE_LINK22"&gt;&lt;/a&gt;&lt;a title="OLE_LINK21" name="OLE_LINK21"&gt;&lt;/a&gt;&lt;a title="OLE_LINK47" name="OLE_LINK47"&gt;&lt;/a&gt;&lt;a title="OLE_LINK46" name="OLE_LINK46"&gt;&lt;/a&gt;BarcodeScannerSample15 project. &lt;/li&gt;    &lt;li&gt;Add following references to the BarcodeScannerSample15 project:      &lt;ol&gt;       &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 79px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;         &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;           &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;Microsoft.Dynamics.Mobile.Components&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;Microsoft.Dynamics.Mobile.Components.Services.BarcodeScanning.Symbol&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;(Microsoft.Dynamics.Mobile.Components.Services.BarcodeScanning.SymbolIntermec)&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;Microsoft.Dynamics.Mobile.Components.Tasklets.Menu&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;The scanning itself is a manufacturer-specific operation, so manufacturer-specific assemblies will be needed. You have to download and extract the following assemblies: Symbol and Symbol.Barcode for Motorola (Symbol) devices and &lt;b&gt;Intermec.DataCollection.CF2 for Intermec&lt;/b&gt;. Read the article &lt;a href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/where-to-get-barcode-drivers.aspx"&gt;&lt;font color="#006ff7"&gt;Where to get barcode drivers&lt;/font&gt;&lt;/a&gt; to figure out where and how to get these. &lt;/li&gt;

  &lt;li&gt;Open Windows Explorer and locate &lt;a title="OLE_LINK63" name="OLE_LINK63"&gt;&lt;/a&gt;&lt;a title="OLE_LINK62" name="OLE_LINK62"&gt;&lt;/a&gt;BarcodeScannerSample15 project folder, create &lt;a title="OLE_LINK64" name="OLE_LINK64"&gt;&lt;/a&gt;&lt;a title="OLE_LINK87" name="OLE_LINK87"&gt;&lt;/a&gt;&lt;a title="OLE_LINK86" name="OLE_LINK86"&gt;&lt;/a&gt;BinaryReferences subfolder and copy extracted assemblies under this folder. Reference these binaries from the BarcodeScannerSample15 project. &lt;/li&gt;

  &lt;li&gt;The core of barcode reader functionality provided by Microsoft Dynamics Framework is located in Microsoft.Dynamics.Mobile.Runtime assembly. Add following reference to the BarcodeScanner (tasklet) project: 
    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 28px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;Microsoft.Dynamics.Mobile.Framework.Runtime&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;O&lt;a title="OLE_LINK170" name="OLE_LINK170"&gt;&lt;/a&gt;&lt;a title="OLE_LINK169" name="OLE_LINK169"&gt;&lt;/a&gt;pen BarcodeScannerTasklet.cs and add following using statements: 

    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 59px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Dynamics.Mobile.Framework.Entities;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Dynamics.Mobile.Components.Services.BarcodeScanning;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Dynamics.Mobile.Components.Services;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;We will need a BarcodeReader object to perform the actual scanning. This object will be created by BarcodeScanningService defined in the App.config file. The service assures that a correct version of BarcodeReader object will be newed-up. &lt;/li&gt;

  &lt;li&gt;Add &lt;a title="OLE_LINK91" name="OLE_LINK91"&gt;&lt;/a&gt;&lt;a title="OLE_LINK90" name="OLE_LINK90"&gt;&lt;/a&gt;BarcodeReader private field called barcodeReader. 

    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 27px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;BarcodeReader barcodeReader;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Add &lt;a title="OLE_LINK16" name="OLE_LINK16"&gt;&lt;/a&gt;&lt;a title="OLE_LINK93" name="OLE_LINK93"&gt;&lt;/a&gt;&lt;a title="OLE_LINK92" name="OLE_LINK92"&gt;&lt;/a&gt;&lt;a title="OLE_LINK27" name="OLE_LINK27"&gt;&lt;/a&gt;&lt;a title="OLE_LINK26" name="OLE_LINK26"&gt;&lt;/a&gt;BarcodeScanningService public property called BarcodeScanningService and decorate it with [RolePadService] attribute. 

    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 45px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;[RolePadService]&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; BarcodeScanningService BarcodeScanningService { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Edit OnStarted method. You must ask BarcodeScanningService to create particular BarcodeReader object and implement two event handlers with self-explaining names. This code will be called only once within the tasklet lifetime. 
    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 148px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnStarted()&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.OnActivated();&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    barcodeReader = BarcodeScanningService.GetReader(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    barcodeReader.Scanned += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; EventHandler&amp;lt;ScannedDataEventArgs&amp;gt;(barcodeReader_Scanned);&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    barcodeReader.Error += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; EventHandler&amp;lt;ErrorEventArgs&amp;gt;(barcodeReader_Error);&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Override OnActivate method. &lt;a title="OLE_LINK77" name="OLE_LINK77"&gt;&lt;/a&gt;&lt;a title="OLE_LINK76" name="OLE_LINK76"&gt;&lt;/a&gt;The scanner must be opened (enabled). This code can be called repeatedly when entering already started tasklet. 

    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 101px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnActivated()&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.OnActivated();&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    barcodeReader.Open();&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Override OnDeactivated method. The scanner will be closed (disabled). &lt;a title="OLE_LINK96" name="OLE_LINK96"&gt;&lt;/a&gt;&lt;a title="OLE_LINK95" name="OLE_LINK95"&gt;&lt;/a&gt;Counterpart of the OnActivate method – can be called repeatedly. 

    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 108px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnDeactivated ()&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;. OnDeactivated ();&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    barcodeReader.Close();&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Override OnClosing method. &lt;a title="OLE_LINK79" name="OLE_LINK79"&gt;&lt;/a&gt;&lt;a title="OLE_LINK78" name="OLE_LINK78"&gt;&lt;/a&gt;Closing the system resources and bit of cleaning. 

    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 157px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnClosing(ExitResult exitResult)&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.OnClosing(exitResult);&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    barcodeReader.Error -= barcodeReader_Error;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    barcodeReader.Scanned -= barcodeReader_Scanned;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    barcodeReader.Dispose();&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;&lt;a title="OLE_LINK34" name="OLE_LINK34"&gt;&lt;/a&gt;Add barcodeReader_Error event handler. 

    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 94px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; barcodeReader_Error(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, ErrorEventArgs e)&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (e != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; e.Exception != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        Container.Alert(&lt;span style="color: #006080"&gt;&amp;quot;Exception ocured while using barcode scanner:\n&amp;quot;&lt;/span&gt; + e.Exception.Message);&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Add barcodeReader_Scanned event handler. &lt;a title="OLE_LINK81" name="OLE_LINK81"&gt;&lt;/a&gt;&lt;a title="OLE_LINK80" name="OLE_LINK80"&gt;&lt;/a&gt;In case the scanning was successful tasklet view class is going to present the scanned data. Some barcode readers return multiple lines of the scanned information. Typically we need to know only the first one – that is why we pass 0 index of e.Data array to the view. 

    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 92px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; barcodeReader_Scanned(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, ScannedDataEventArgs e)&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (e != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; e.Data != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; e.Data.Length &amp;gt; 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        view.ShowScannedBarcode(e.Data[0]);&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;You are done with the tasklet itself but we have to extend its view. &lt;/li&gt;

  &lt;li&gt;&lt;a title="OLE_LINK41" name="OLE_LINK41"&gt;&lt;/a&gt;&lt;a title="OLE_LINK40" name="OLE_LINK40"&gt;&lt;/a&gt;Double-click BarcodeScannerView.cs and add one TextBox control called &lt;a title="OLE_LINK114" name="OLE_LINK114"&gt;&lt;/a&gt;&lt;a title="OLE_LINK113" name="OLE_LINK113"&gt;&lt;/a&gt;txtScannedBarcodes. &lt;/li&gt;

  &lt;li&gt;Make txtScannedBarcodes control ReadOnly, Multiline and change its size to your convenience. &lt;/li&gt;

  &lt;li&gt;Open IBarcodeScannerView.cs and add extend the interface by: 
    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 27px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ShowScannedBarcode(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; barcode);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Right-click BarcodeScannerView.cs and select View Code. &lt;/li&gt;

  &lt;li&gt;&lt;a title="OLE_LINK43" name="OLE_LINK43"&gt;&lt;/a&gt;&lt;a title="OLE_LINK42" name="OLE_LINK42"&gt;&lt;/a&gt;Implement IBarcodeScannerView by the following code: 

    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 77px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ShowScannedBarcode(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; barcode)&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.txtScannedBarcodes.Text += barcode + Environment.NewLine;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;You should be able to build BarcodeScanner tasklet project by now so let us finish the BarcodeScannerSample15 project. &lt;/li&gt;

  &lt;li&gt;Modify app.config by adding of the following code at the beginning of the &amp;lt;services&amp;gt; node. The simple configuration informs Framework that it should create BarcodeScanningService of an appropriate type. Please notice that you must comment out/in the correct section for &lt;b&gt;Intermec devices:&lt;/b&gt; 

    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 257px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;&amp;lt;!-- Required for Barcode scanning on Symbol devices--&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.Dynamics.Mobile.Components.Services.BarcodeScanningService, Microsoft.Dynamics.Mobile.Framework.Runtime&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/Dynamics/Mobile/2008/11/Services/BarcodeScanning/Configuration&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;scannerType&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Microsoft.Dynamics.Mobile.Components.Services.BarcodeScanning.Symbol.ScannerDevice, Microsoft.Dynamics.Mobile.Components.Services.BarcodeScanning.Symbol&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;scannerType&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;&amp;lt;!-- Required for Barcode scanning on Intermec devices--&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&amp;lt;add type=&amp;quot;Microsoft.Dynamics.Mobile.Components.Services.BarcodeScanningService, Microsoft.Dynamics.Mobile.Framework.Runtime&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;        &amp;lt;configuration xmlns=&amp;quot;http://schemas.microsoft.com/Dynamics/Mobile/2008/11/Services/BarcodeScanning/Configuration&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;            &amp;lt;scannerType&amp;gt;Microsoft.Dynamics.Mobile.Components.Services.BarcodeScanning.Intermec.ScannerDevice, Microsoft.Dynamics.Mobile.Components.Services.BarcodeScanning.Intermec&amp;lt;/scannerType&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;        &amp;lt;/configuration&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;&amp;lt;/add&amp;gt;--&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;Modify UserRole.xml – replace its whole content by the following code. It is a very simple orchestration with two tasklets: Menu tasklet provided by the Framework as an invitation screen and our newly created BarcodeScanner tasklet. 
    &lt;ol&gt;
      &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
        &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;userRole&lt;/span&gt; &lt;span style="color: #ff0000"&gt;minimize&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/Dynamics/Mobile/2008/11/Flow&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;orchestrations&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;orchestration&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;startup&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tasklets&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #008000"&gt;&amp;lt;!-- Main Menu (Menu) --&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tasklet&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;MenuTasklet&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;icon&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Graphics\Dynamics_small.png&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot; Barcode Scanner Sample&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;context&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Tasklet header;26&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Microsoft.Dynamics.Mobile.Components.Tasklets.MenuTasklet, Microsoft.Dynamics.Mobile.Components.Tasklets.Menu&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;actions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;group&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;BackAndCancel&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Flat&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;priority&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;98&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;exitOrchestration&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Close&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Close&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;group&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;group&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;MenuItems&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;priority&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;50&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Flat&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;open&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Barcode&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;icon&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Graphics\Barcode_large.png&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;priority&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;49&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;tasklet&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;BarcodeScanner&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;group&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;actions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tasklet&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #008000"&gt;&amp;lt;!-- /Main menu (Menu) --&amp;gt;&lt;/span&gt;        &lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #008000"&gt;&amp;lt;!-- This is a demo tasklet which shows how to implement barcode scanning functionality. --&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tasklet&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;BarcodeScanner&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;icon&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Graphics\Barcode_small.png&amp;quot;&lt;/span&gt;  &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;BarcodeScanner.BarcodeScannerTasklet, BarcodeScanner&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;actions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;exitTasklet&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Close&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;actions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tasklet&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tasklets&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;orchestration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;orchestrations&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

          &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;userRole&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;You should be able to build the whole solution at this moment. &lt;/li&gt;

  &lt;li&gt;Double check that &lt;a title="OLE_LINK121" name="OLE_LINK121"&gt;&lt;/a&gt;&lt;a title="OLE_LINK49" name="OLE_LINK49"&gt;&lt;/a&gt;&lt;a title="OLE_LINK48" name="OLE_LINK48"&gt;&lt;/a&gt;BarcodeScannerSample15 is your startup project. If it is not the case then right-click on BarcodeScannerSample15 project node and select “Set as StartUp Project”. &lt;/li&gt;

  &lt;li&gt;Right-click Properties subfolder of BarcodeScannerSample15 project and select Open. &lt;/li&gt;

  &lt;li&gt;Go to Devices and select your target device. &lt;/li&gt;

  &lt;li&gt;Connect the device and press F5. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Do not forget to check MSDN documentation: &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.dynamics.mobile.components.services.barcodescanningservice(MAG.11).aspx"&gt;&lt;font color="#006ff7"&gt;BarcodeScanningService Class&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By the way: The complete source code can be downloaded – see the bottom of this article. However I am sure you are glad you went through the whole example by yourself - it is the best way how to learn the stuff.&lt;/p&gt;

&lt;p&gt;Please notice that the downloadable code is more complex and much better commented than the example you created based on the tutorial above. The difference is mainly given by more extensive error handling in the downloadable code. The tutorial code should be used for tutoring/learning only, the downloadable example on the other hand rather as a skeleton for building real applications based on 1.5 version of the Framework.&lt;/p&gt;

&lt;p&gt;Download source code here: &lt;a href="http://blogs.msdn.com/dynamicsmobile/attachment/9534784.ashx" mce_href="http://blogs.msdn.com/dynamicsmobile/attachment/9534784.ashx"&gt;BarcodeScannerSample15.zip&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This code will run first after you copy &lt;a href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/where-to-get-barcode-drivers.aspx"&gt;&lt;font color="#006ff7"&gt;barcode drivers&lt;/font&gt;&lt;/a&gt; into the .\BarcodeScannerSample15\BinaryReferences folder.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9534784" width="1" height="1"&gt;</content><author><name>Jan Zeman</name><uri>http://blogs.msdn.com/members/Jan+Zeman.aspx</uri></author></entry><entry><title>How to enable barcode scanning on existing Microsoft Dynamics Mobile tasklets</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2009/04/06/how-to-enable-barcode-scanning-on-existing-microsoft-dynamics-mobile-tasklets.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2009/04/06/how-to-enable-barcode-scanning-on-existing-microsoft-dynamics-mobile-tasklets.aspx</id><published>2009-04-07T00:07:40Z</published><updated>2009-04-07T00:07:40Z</updated><content type="html">&lt;p&gt;This is an installment of &lt;a href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/barcode-scanning-with-microsoft-dynamics-mobile.aspx"&gt;Barcode Scanning With Microsoft Dynamics Mobile&lt;/a&gt; series.&lt;/p&gt;  &lt;p&gt;… and concurrently it is the shortest blog article I have ever written :-)&lt;/p&gt;  &lt;p&gt;Just follow the MSDN link: &lt;a href="http://msdn.microsoft.com/en-us/library/cc563948.aspx"&gt;How to: Set Up Barcode Scanning for Mobile Sales&lt;/a&gt;. Use this approach for SimpleList or similarly for ItemList tasklet.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9534456" width="1" height="1"&gt;</content><author><name>Jan Zeman</name><uri>http://blogs.msdn.com/members/Jan+Zeman.aspx</uri></author><category term="Dynamics Mobile 2008" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Dynamics+Mobile+2008/default.aspx" /><category term="development" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/development/default.aspx" /><category term="Windows Mobile" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Windows+Mobile/default.aspx" /><category term="Scanning" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Scanning/default.aspx" /><category term="Barcode" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Barcode/default.aspx" /></entry><entry><title>Where To Get Barcode Drivers</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/where-to-get-barcode-drivers.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/where-to-get-barcode-drivers.aspx</id><published>2009-01-21T21:46:00Z</published><updated>2009-01-21T21:46:00Z</updated><content type="html">&lt;P&gt;This is an installment of &lt;A href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/barcode-scanning-with-microsoft-dynamics-mobile.aspx" mce_href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/barcode-scanning-with-microsoft-dynamics-mobile.aspx"&gt;Barcode Scanning With Microsoft Dynamics Mobile&lt;/A&gt; series.&lt;/P&gt;
&lt;P&gt;Barcode drivers are the most essential prerequisites for barcode scanning functionality on a particular device. Out of the box, Microsoft Dynamics Mobile supports two barcode enabled device manufacturers:&amp;nbsp; &lt;STRONG&gt;&lt;A href="http://business.motorola.com/us/enterprisemobility/index.html" mce_href="http://business.motorola.com/us/enterprisemobility/index.html"&gt;Motorola&lt;/A&gt;&lt;/STRONG&gt; (formerly Symbol) and &lt;STRONG&gt;&lt;A href="http://www.intermec.com/" mce_href="http://www.intermec.com/"&gt;Intermec&lt;/A&gt;&lt;/STRONG&gt;. To achieve any barcode related functionality you need to acquire appropriate barcode drivers. These are usually wrapped in some .NET Compact Framework assembly which is shipped as a part of a particular SDK of the given manufacturer. Third parties (in this case Microsoft) are not allowed to redistribute manufacturers’ drivers so you have to get them by your own. To make your life easier I prepared the following mini-tutorials describing where to download appropriate SDK and how to extract barcode driver out of them.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Please notice!&lt;/STRONG&gt; The description below is very precise and all links are currently working (January 2009). However it can change as time goes by. Feel free to add your comment to the blog article, we will update the description.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Motorola&lt;/STRONG&gt; (formerly Symbol): You need two assemblies called &lt;STRONG&gt;Symbol&lt;/STRONG&gt; and &lt;STRONG&gt;Symbol.Barcode&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Go to &lt;A href="https://docs.symbol.com/KanisaPlatform/Publishing/903/11777_f.html" mce_href="https://docs.symbol.com/KanisaPlatform/Publishing/903/11777_f.html"&gt;Motorola EMDK for .NET v2.0&lt;/A&gt; (EMDK stands for Enterprise Mobility Developer Kit formerly known as SMDK - Symbol Mobility Developer Kit) and download &lt;A href="https://docs.symbol.com/downloads/EMDK-M-020005-Up2.zip" mce_href="https://docs.symbol.com/downloads/EMDK-M-020005-Up2.zip"&gt;EMDK-M-020005-Up2.zip&lt;/A&gt;. &lt;/LI&gt;
&lt;LI&gt;Unzip and locate the following CAB file: symbol.all.arm.cab (typically in .\SDK\Smart Devices\wce500\armv4i folder). &lt;/LI&gt;
&lt;LI&gt;Install the CAB file on any Windows Mobile device or emulator, and locate Symbol.dll and Symbol.Barcode.dll on that device under \Windows &lt;/LI&gt;
&lt;LI&gt;Copy Symbol.dll and Symbol.Barcode.dll to your PC for future use. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Intermec&lt;/STRONG&gt;: You need one assembly called &lt;STRONG&gt;Intermec.DataCollection.CF2&lt;/STRONG&gt; a&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Notice that you must be a registered user to be able to perform any download from the Intermec web site. If you are not, go to the Intermec &lt;A href="http://webapps.intermec.com/EFulfillment/LoginForm.aspx" mce_href="http://webapps.intermec.com/EFulfillment/LoginForm.aspx"&gt;downloads login page&lt;/A&gt;, click on the “create a new account” link, provide all required information and click on the “Register” button. &lt;/LI&gt;
&lt;LI&gt;Having your Intermec account you can download the &lt;A href="http://webapps.intermec.com/EFulfillment/SoftwareListForm.aspx?SoftwareID=2344" mce_href="http://webapps.intermec.com/EFulfillment/SoftwareListForm.aspx?SoftwareID=2344"&gt;Intermec Development Toolkit&lt;/A&gt;. You must enter your Intermec account credentials and go through a short wizard to reach the download link. &lt;/LI&gt;
&lt;LI&gt;Install the toolkit (00002344_IDLDCRK_Setup.exe). &lt;/LI&gt;
&lt;LI&gt;Locate Intermec.DataCollection.CF2.dll assembly under the following path: %PROGRAMFILES%\Intermec\Developer Library\Dot NET Assemblies\CF 2.0 &lt;/LI&gt;
&lt;LI&gt;Copy Intermec.DataCollection.CF2.dll to your PC for future use. &lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9357444" width="1" height="1"&gt;</content><author><name>Jan Zeman</name><uri>http://blogs.msdn.com/members/Jan+Zeman.aspx</uri></author><category term="Dynamics Mobile 2008" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Dynamics+Mobile+2008/default.aspx" /><category term="development" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/development/default.aspx" /><category term="Windows Mobile" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Windows+Mobile/default.aspx" /><category term="Scanning" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Scanning/default.aspx" /><category term="Barcode" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Barcode/default.aspx" /></entry><entry><title>Barcode Scanning With Microsoft Dynamics Mobile</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/barcode-scanning-with-microsoft-dynamics-mobile.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/barcode-scanning-with-microsoft-dynamics-mobile.aspx</id><published>2009-01-21T21:40:00Z</published><updated>2009-01-21T21:40:00Z</updated><content type="html">&lt;P&gt;My plan is to post a short series of articles related to barcode scanning experience with Microsoft Dynamics Mobile. Today’s post should act as an overview of posted and will-be-posted articles touching the barcode functionality. &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Here is the plan:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Barcode scanning prerequisites: &lt;A href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/where-to-get-barcode-drivers.aspx" mce_href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/21/where-to-get-barcode-drivers.aspx"&gt;Where to get barcode drivers&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/dynamicsmobile/archive/2009/04/06/how-to-enable-barcode-scanning-on-existing-microsoft-dynamics-mobile-tasklets.aspx" mce_href="http://blogs.msdn.com/dynamicsmobile/archive/2009/04/06/how-to-enable-barcode-scanning-on-existing-microsoft-dynamics-mobile-tasklets.aspx"&gt;How to enable barcode scanning on existing Microsoft Dynamics Mobile tasklets&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/dynamicsmobile/archive/2009/04/07/how-to-code-your-own-barcode-enabled-tasklets-motorola-and-intermec-devices.aspx" mce_href="http://blogs.msdn.com/dynamicsmobile/archive/2009/04/07/how-to-code-your-own-barcode-enabled-tasklets-motorola-and-intermec-devices.aspx"&gt;How to code your own barcode enabled tasklets (Motorola and Intermec devices)&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Bullets above will be transformed to http links after the corresponding article has been issued.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9357393" width="1" height="1"&gt;</content><author><name>Jan Zeman</name><uri>http://blogs.msdn.com/members/Jan+Zeman.aspx</uri></author><category term="Dynamics Mobile 2008" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Dynamics+Mobile+2008/default.aspx" /><category term="development" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/development/default.aspx" /><category term="Windows Mobile" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Windows+Mobile/default.aspx" /><category term="Scanning" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Scanning/default.aspx" /><category term="Barcode" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Barcode/default.aspx" /></entry><entry><title>Unit Testing DocumentHandlers With Parameters</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/13/unit-testing-documenthandlers-with-parameters.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2009/01/13/unit-testing-documenthandlers-with-parameters.aspx</id><published>2009-01-13T09:20:38Z</published><updated>2009-01-13T09:20:38Z</updated><content type="html">&lt;p&gt;In my &lt;a href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/07/unit-testing-documenthandlers.aspx"&gt;previous post&lt;/a&gt;, I described how to unit test custom DocumentHandlers. When your DocumentHandler has one or more &lt;a href="http://blogs.msdn.com/dynamicsmobile/archive/2008/12/18/documenthandlerparameter-best-practices.aspx"&gt;DocumentHandlerParameters&lt;/a&gt;, you have to manually assign values to these, since, during unit testing, the DocumentHandler instance runs outside the warm and fuzzy Mobile Server environment.&lt;/p&gt;  &lt;p&gt;This is as simple as setting the property to the desired value before invoking the Submit or GetDocumentDescription methods.&lt;/p&gt; &lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue0;\red255\green255\blue255;\red43\green145\blue175;\red0\green0\blue255;\red0\green128\blue0;}??\fs20 [\cf3 TestMethod\cf0 ]\par ??\cf4 public\cf0  \cf4 void\cf0  TestUsingMyIntegerParameter()\par ??\{\par ??    \cf5 // Fixture setup\par ??\cf0     \cf4 string\cf0  anonymousNumber = 7.ToString();\par ??    \cf3 MyDocumentHandler\cf0  sut = \cf4 new\cf0  \cf3 MyDocumentHandler\cf0 ();\par ??    sut.MyInteger = anonymousNumber;\par ??    \cf5 // Exercise system\par ??\cf0     \cf5 // ...\par ??\cf0     \cf5 // Verify outcome\par ??\cf0     \cf5 // ...\par ??\cf0     \cf5 // Teardown\par ??\cf0 \}}
--&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;   &lt;pre style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; TestUsingMyIntegerParameter()&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Fixture setup&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; anonymousNumber = 7.ToString();&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;MyDocumentHandler&lt;/span&gt; sut = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MyDocumentHandler&lt;/span&gt;();&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; sut.MyInteger = anonymousNumber;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Exercise system&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// ...&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Verify outcome&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// ...&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Teardown&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Notice how, in the above test, the MyInteger property is assigned to an &lt;a href="http://blogs.msdn.com/ploeh/archive/2008/11/17/anonymous-variables.aspx"&gt;Anonymous Variable&lt;/a&gt; before the &lt;a href="http://xunitpatterns.com/SUT.html"&gt;SUT&lt;/a&gt; is exercised.&lt;/p&gt;

&lt;p&gt;It's very simple, so the main purpose of this post was just to remind you that you have to remember setting all relevant properties appropriately as part of &lt;a href="http://xunitpatterns.com/fixture%20setup.html"&gt;setting up your Fixture&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9313188" width="1" height="1"&gt;</content><author><name>ploeh</name><uri>http://blogs.msdn.com/members/ploeh.aspx</uri></author><category term="development" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/development/default.aspx" /><category term="Mobile Server" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Mobile+Server/default.aspx" /></entry><entry><title>Unit Testing DocumentHandlers</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/07/unit-testing-documenthandlers.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2009/01/07/unit-testing-documenthandlers.aspx</id><published>2009-01-07T12:06:00Z</published><updated>2009-01-07T12:06:00Z</updated><content type="html">&lt;P&gt;As I promised in a &lt;A href="http://blogs.msdn.com/dynamicsmobile/archive/2008/12/11/documenthandler-behind-the-scenes.aspx" mce_href="http://blogs.msdn.com/dynamicsmobile/archive/2008/12/11/documenthandler-behind-the-scenes.aspx"&gt;previous post&lt;/A&gt;, I'd like to discuss how to unit test a custom DocumentHandler. There's really nothing to it: Just create a new instance of your DocumentHandler and start invoking its members.&lt;/P&gt;
&lt;P&gt;Here's a test of the Submit method:&lt;/P&gt;&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue0;\red255\green255\blue255;\red43\green145\blue175;\red0\green0\blue255;\red0\green128\blue0;\red163\green21\blue21;}??\fs20 [\cf3 TestMethod\cf0 ]\par ??\cf4 public\cf0  \cf4 void\cf0  SubmitWillReturnCorrectDescription()\par ??\{\par ??    \cf5 // Fixture setup\par ??\cf0     \cf4 string\cf0  anonymousXml = \cf6 "&amp;lt;anonymous&amp;gt;XML&amp;lt;/anonymous&amp;gt;"\cf0 ;\par ??    \cf3 Guid\cf0  anonymousMessageId = \cf3 Guid\cf0 .NewGuid();\par ??    \cf4 string\cf0  anonymousDeviceId = \cf6 "Anonymous device ID"\cf0 ;\par ??    \cf3 IPrincipal\cf0  anonymousPrincipal =\par ??        \cf4 new\cf0  \cf3 GenericPrincipal\cf0 (\par ??            \cf4 new\cf0  \cf3 GenericIdentity\cf0 (\cf6 "Someone"\cf0 ), \cf4 new\cf0  \cf4 string\cf0 [0]);\par ??\par ??    \cf4 string\cf0  expectedDescription =\par ??        \cf4 string\cf0 .Format(\cf6 "Message \{0\} was successfully submitted"\cf0 ,\par ??        anonymousMessageId);\par ??\par ??    \cf3 MyDocumentHandler\cf0  sut = \cf4 new\cf0  \cf3 MyDocumentHandler\cf0 ();\par ??    \cf5 // Exercise system\par ??\cf0     \cf3 DocumentResponse\cf0  result =\par ??        sut.Submit(anonymousXml, anonymousMessageId,\par ??        anonymousDeviceId, anonymousPrincipal);\par ??    \cf5 // Verify outcome\par ??\cf0     \cf3 Assert\cf0 .AreEqual&amp;lt;\cf4 string\cf0 &amp;gt;(expectedDescription,\par ??        result.Description, \cf6 "Description"\cf0 );\par ??    \cf5 // Teardown\par ??\cf0 \}}
--&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;&lt;PRE style="MARGIN: 0px"&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;TestMethod&lt;/SPAN&gt;]&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; SubmitWillReturnCorrectDescription()&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;{&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Fixture setup&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; anonymousXml = &lt;SPAN style="COLOR: #a31515"&gt;"&amp;lt;anonymous&amp;gt;XML&amp;lt;/anonymous&amp;gt;"&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;Guid&lt;/SPAN&gt; anonymousMessageId = &lt;SPAN style="COLOR: #2b91af"&gt;Guid&lt;/SPAN&gt;.NewGuid();&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; anonymousDeviceId = &lt;SPAN style="COLOR: #a31515"&gt;"Anonymous device ID"&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;IPrincipal&lt;/SPAN&gt; anonymousPrincipal =&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;GenericPrincipal&lt;/SPAN&gt;(&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;GenericIdentity&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"Someone"&lt;/SPAN&gt;), &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;[0]);&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; expectedDescription =&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;.Format(&lt;SPAN style="COLOR: #a31515"&gt;"Message {0} was successfully submitted"&lt;/SPAN&gt;,&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anonymousMessageId);&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;MyDocumentHandler&lt;/SPAN&gt; sut = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;MyDocumentHandler&lt;/SPAN&gt;();&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Exercise system&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;DocumentResponse&lt;/SPAN&gt; result =&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sut.Submit(anonymousXml, anonymousMessageId,&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anonymousDeviceId, anonymousPrincipal);&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Verify outcome&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;Assert&lt;/SPAN&gt;.AreEqual&amp;lt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&amp;gt;(expectedDescription,&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result.Description, &lt;SPAN style="COLOR: #a31515"&gt;"Description"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Teardown&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Since the Submit method takes four parameters, you must create these four objects prior to invoking the method. In this example, I'm naming the variables using the &lt;A href="http://blogs.msdn.com/ploeh/archive/2008/11/17/anonymous-variables.aspx" mce_href="http://blogs.msdn.com/ploeh/archive/2008/11/17/anonymous-variables.aspx"&gt;Anonymous Variable Naming&lt;/A&gt; coding idiom.&lt;/P&gt;
&lt;P&gt;In many cases, the XML string containing the document to submit is probably the most interesting parameter, and you will likely need to write many separate tests to verify that your custom DocumentHandler correctly deals with different instances of your particular XML document format.&lt;/P&gt;
&lt;P&gt;In this context, it's worth noting that you can obviously debug into your code when running a test, so this is a very effective troubleshooting technique. Due to the way we load and host DocumentHandlers, it's not possible to attach a debugger to a custom DocumentHandler while it's executing in Mobile Server, so debugging into a unit test is a good alternative. If your custom DocumentHandler throws an exception while executing in Mobile Server, the event log will contain a copy of the message, and you can then use this copy to reproduce the problem in a unit test.&lt;/P&gt;
&lt;P&gt;In the test shown above, notice that I create a new &lt;A href="http://msdn.microsoft.com/en-us/library/system.security.principal.genericprincipal.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.security.principal.genericprincipal.aspx"&gt;GenericPrincipal&lt;/A&gt; instance to use as the &lt;EM&gt;mobileUser&lt;/EM&gt; parameter. Be aware that &lt;EM&gt;any&lt;/EM&gt; &lt;A href="http://msdn.microsoft.com/en-us/library/system.security.principal.iprincipal.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.security.principal.iprincipal.aspx"&gt;IPrincipal&lt;/A&gt; instance is acceptable, so I just created a GenericPrincipal because it was the easiest thing to do. When executing your custom DocumentHandler, Mobile Server doesn't use GenericPrincipal, but rather a different implementation of IPrincipal, and it makes no guarantees that it will always use the same implementation type. In other words, your custom DocumentHandler should follow the Liskov Substitution Principle.&lt;/P&gt;
&lt;P&gt;As you can see, it's really straightforward to unit test custom DocumentHandlers. The Submit method has by far the most complex signature, so testing the FriendlyName and GetDocumentDescription members is even simpler.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Update:&lt;/STRONG&gt; A &lt;A class="" href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/13/unit-testing-documenthandlers-with-parameters.aspx" mce_href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/13/unit-testing-documenthandlers-with-parameters.aspx"&gt;follow-up post dealing with unit testing and DocumentHandlerParameters&lt;/A&gt; is now available.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9287060" width="1" height="1"&gt;</content><author><name>ploeh</name><uri>http://blogs.msdn.com/members/ploeh.aspx</uri></author><category term="development" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/development/default.aspx" /><category term="Mobile Server" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Mobile+Server/default.aspx" /></entry><entry><title>DocumentHandlerParameter Best Practices</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2008/12/18/documenthandlerparameter-best-practices.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2008/12/18/documenthandlerparameter-best-practices.aspx</id><published>2008-12-18T16:47:12Z</published><updated>2008-12-18T16:47:12Z</updated><content type="html">&lt;p&gt;When you create a custom &lt;a href="http://blogs.msdn.com/dynamicsmobile/archive/2008/12/11/documenthandler-behind-the-scenes.aspx"&gt;DocumentHandler&lt;/a&gt;, it is very likely that you may need to supply it with some configuration data. Common examples include the address of your back-end server, credentials to the back-end system, etc.&lt;/p&gt;  &lt;p&gt;DocumentHandlers can be configured by adding public read/write string properties and decorating them with the DocumentHandlerParameter attribute. This is all described in the documentation, but in this post, I'd like to expand a bit on the subject to describe some best practices for dealing with such parameters.&lt;/p&gt;  &lt;p&gt;If all you need is a string, you can get by with an implementation as simple as this:&lt;/p&gt; &lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue0;\red255\green255\blue255;\red43\green145\blue175;\red163\green21\blue21;\red0\green0\blue255;}??\fs20 [\cf3 DocumentHandlerParameter\cf0 (\cf4 "Descrption template"\cf0 )]\par ??\cf5 public\cf0  \cf5 string\cf0  DescriptionTemplate \{ \cf5 get\cf0 ; \cf5 set\cf0 ; \}}
--&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;   &lt;pre style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;DocumentHandlerParameter&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Description template&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; DescriptionTemplate { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;However, if you really need something else, you will have to parse the text yourself, since only strings are supported. Imagine that you really need to expose an integer property. Basically, you have two options:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;You can parse it as the value is being assigned &lt;/li&gt;

  &lt;li&gt;You can parse it when you need it &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Parsing the value right away is the preferable alternative, since this gives Mobile Server a chance to verify the configuration as soon as the operator saves the document type (right now, Mobile Server doesn't do that, but it &lt;em&gt;might&lt;/em&gt; do that in a future version, in which case you'll get validation for free). It also makes for cleaner code.&lt;/p&gt;

&lt;p&gt;Here's one possible implementation of an integer property:&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue0;\red255\green255\blue255;\red43\green145\blue175;\red163\green21\blue21;\red0\green0\blue255;}??\fs20 [\cf3 DocumentHandlerParameter\cf0 (\cf4 "My integer"\cf0 )]\par ??\cf5 public\cf0  \cf5 string\cf0  MyInteger\par ??\{\par ??    \cf5 get\cf0  \{ \cf5 return\cf0  \cf5 this\cf0 .myInt.ToString(); \}\par ??    \cf5 set\cf0  \par ??    \{\par ??        \cf5 int\cf0  i;\par ??        \cf5 if\cf0  (\cf5 int\cf0 .TryParse(\cf5 value\cf0 , \cf5 out\cf0  i))\par ??        \{\par ??            \cf5 this\cf0 .myInt = i;\par ??            \cf5 return\cf0 ;\par ??        \}\par ??        \cf5 throw\cf0  \cf5 new\cf0  \cf3 ArgumentException\cf0 (\par ??            \cf4 "Value was not an integer"\cf0 , \cf4 "value"\cf0 );\par ??    \}\par ??\}}
--&gt;

&lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;
  &lt;pre style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;DocumentHandlerParameter&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;My integer&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; MyInteger&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;.myInt.ToString(); }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;set&lt;/span&gt; &lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;int&lt;/span&gt; i;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;int&lt;/span&gt;.TryParse(&lt;span style="color: blue"&gt;value&lt;/span&gt;, &lt;span style="color: blue"&gt;out&lt;/span&gt; i))&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.myInt = i;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ArgumentException&lt;/span&gt;(&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #a31515"&gt;&amp;quot;Value was not an integer&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;where &lt;em&gt;myInt&lt;/em&gt; is a private member variable. Notice how the setter attempts to parse the string to an integer, and throws a descriptive exception if this is not possible.&lt;/p&gt;

&lt;p&gt;Whenever the value of this property is required, the rest of the code can simply reference this.myInt, which is now guaranteed to be correct. Int32 is a value type, so referencing this.myInt will always be correct, since the default is &lt;em&gt;0&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This is not the case for reference type properties like the DescriptionTemplate property above. Keep in mind that reference types may be null, so that it becomes necessary to check for this before using the property:&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red0\green0\blue0;\red43\green145\blue175;\red163\green21\blue21;}??\fs20 \cf1 public\cf0  \cf1 override\cf0  \cf4 DocumentResponse\cf0  Submit(\cf1 string\cf0  xmlDocument,\par ??    \cf4 Guid\cf0  messageId, \cf1 string\cf0  deviceId, \cf4 IPrincipal\cf0  mobileUser)\par ??\{\par ??    \cf1 string\cf0  template = \par ??        \cf1 string\cf0 .IsNullOrEmpty(\cf1 this\cf0 .DescriptionTemplate) ?\par ??        \cf5 "Message \{0\} was successfully submitted"\cf0  :\par ??        \cf1 this\cf0 .DescriptionTemplate;\par ??\par ??    \cf4 DocumentResponse\cf0  dr = \cf1 new\cf0  \cf4 DocumentResponse\cf0 ();\par ??    dr.Description = \cf1 string\cf0 .Format(template, messageId);\par ??    \cf1 return\cf0  dr;\par ??\}}
--&gt;

&lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;
  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DocumentResponse&lt;/span&gt; Submit(&lt;span style="color: blue"&gt;string&lt;/span&gt; xmlDocument,&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Guid&lt;/span&gt; messageId, &lt;span style="color: blue"&gt;string&lt;/span&gt; deviceId, &lt;span style="color: #2b91af"&gt;IPrincipal&lt;/span&gt; mobileUser)&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; template = &lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt;.IsNullOrEmpty(&lt;span style="color: blue"&gt;this&lt;/span&gt;.DescriptionTemplate) ?&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #a31515"&gt;&amp;quot;Message {0} was successfully submitted&amp;quot;&lt;/span&gt; :&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.DescriptionTemplate;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;DocumentResponse&lt;/span&gt; dr = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DocumentResponse&lt;/span&gt;();&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; dr.Description = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(template, messageId);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; dr;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;In this implementation of the Submit method, I test the DescriptionTemplate property's value before using it, defaulting to a hard-coded value if it's not defined. It is important to realize that Mobile Server makes no guarantee regarding the values of DocumentHandlerProperties, since it is entirely up to the operator whether he or she cares to fill in the values or not, so either have some good default values or throw an exception with a descriptive error message.&lt;/p&gt;

&lt;p&gt;As the above example illustrates, you can reference DocumentHandlerProperties from within the Submit method. This is the main scenario, but Mobile Server will also fill in the values of these properties when invoking the GetDocumentDescription method.&lt;/p&gt;

&lt;p&gt;As a contrast to the Submit and GetDocumentDescription methods, the FriendlyName property of DocumentHandler is only being used in the UI when the operator selects a DocumentHandler to configure; that is, &lt;em&gt;before the properties are being configured&lt;/em&gt;. For that reason, when the code inside the FriendlyName property executes, the property values will always have their default values.&lt;/p&gt;

&lt;p&gt;In short:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Validate parameter values in their setters and &lt;em&gt;fail fast&lt;/em&gt;. &lt;/li&gt;

  &lt;li&gt;Don't assume values have been set. &lt;/li&gt;

  &lt;li&gt;Consume values from Submit and GetDocumentDescription only. You cannot consume the values from within the FriendlyName property's code. &lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9236207" width="1" height="1"&gt;</content><author><name>ploeh</name><uri>http://blogs.msdn.com/members/ploeh.aspx</uri></author><category term="development" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/development/default.aspx" /><category term="Mobile Server" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Mobile+Server/default.aspx" /></entry><entry><title>DocumentHandler - Behind The Scenes</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2008/12/11/documenthandler-behind-the-scenes.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2008/12/11/documenthandler-behind-the-scenes.aspx</id><published>2008-12-11T17:18:00Z</published><updated>2008-12-11T17:18:00Z</updated><content type="html">&lt;P&gt;Mobile Server gives you the option of developing custom code that integrates to your back-end system. One way you can do this is by implementing one or more .NET classes that derive from the abstract DocumentHandler class. This is already described in the documentation along with the other options for back-end integration, but in this post, I'd like to provide some background information on this API. In future posts, I'll discuss some best practices for developing custom DocumentHandlers.&lt;/P&gt;
&lt;P&gt;Here's the DocumentHandler API to establish the context:&lt;/P&gt;&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red0\green0\blue0;\red43\green145\blue175;}??\fs20 \cf1 public\cf0  \cf1 abstract\cf0  \cf1 class\cf0  \cf4 DocumentHandler\par ??\cf0 \{\par ??    \cf1 protected\cf0  DocumentHandler();\par ??\par ??    \cf1 public\cf0  \cf1 abstract\cf0  \cf1 string\cf0  FriendlyName \{ \cf1 get\cf0 ; \}\par ??\par ??    \cf1 public\cf0  \cf1 abstract\cf0  \cf1 string\cf0  GetDocumentDescription(\par ??        \cf1 string\cf0  xmlDocument);\par ??    \cf1 public\cf0  \cf1 abstract\cf0  \cf4 DocumentResponse\cf0  Submit(\par ??        \cf1 string\cf0  xmlDocument, \cf4 Guid\cf0  messageId,\par ??        \cf1 string\cf0  deviceId, \cf4 IPrincipal\cf0  mobileUser);\par ??\}}
--&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;&lt;PRE style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;abstract&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DocumentHandler&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;{&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;protected&lt;/SPAN&gt; DocumentHandler();&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;abstract&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; FriendlyName { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt;; }&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;abstract&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; GetDocumentDescription(&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; xmlDocument);&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;abstract&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DocumentResponse&lt;/SPAN&gt; Submit(&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; xmlDocument, &lt;SPAN style="COLOR: #2b91af"&gt;Guid&lt;/SPAN&gt; messageId,&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; deviceId, &lt;SPAN style="COLOR: #2b91af"&gt;IPrincipal&lt;/SPAN&gt; mobileUser);&lt;/PRE&gt;&lt;PRE style="MARGIN: 0px"&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;When we designed DocumentHandler, we had several design goals in mind:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;It should be as simple as possible to implement a custom DocumentHandler &lt;/LI&gt;
&lt;LI&gt;It should provide as much flexibility as possible &lt;/LI&gt;
&lt;LI&gt;It should be testable &lt;/LI&gt;
&lt;LI&gt;It should adhere to the .NET Framework Design Guideline that states that you should prefer abstract classes over interfaces (consequently, this is why DocumentHandler is not an interface) &lt;/LI&gt;
&lt;LI&gt;It should be CLS compliant &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;While I personally could wish for even more flexibility, I think we succeeded very well on all the other points. In the Dynamics Mobile Team, we use TDD, so it was particularly important to us that the DocumentHandler API is testable - and it is.&lt;/P&gt;
&lt;P&gt;The DocumentHandler constructor is empty, so we don't require you to pass some weird, internal or sealed object as a constructor parameter; on the contrary, in fact we &lt;EM&gt;require&lt;/EM&gt; that your custom DocumentHandler has a default constructor. That makes it super-easy to create a new instance as part of a test:&lt;/P&gt;&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red43\green145\blue175;\red255\green255\blue255;\red0\green0\blue0;\red0\green0\blue255;}??\fs20 \cf1 MyDocumentHandler\cf0  sut = \cf4 new\cf0  \cf1 MyDocumentHandler\cf0 ();}
--&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;&lt;PRE style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;MyDocumentHandler&lt;/SPAN&gt; sut = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;MyDocumentHandler&lt;/SPAN&gt;();&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;All the members of DocumentHandler works on well-known BCL types (string, Guid, and IPrincipal) with the single exception of the Submit method, which returns a DocumentResponse instance, which is a type that we have defined in the same library.&lt;/P&gt;
&lt;P&gt;DocumentResponse is a public, non-sealed class with a default constructor, and it works almost exclusively with BCL types such as string, DateTime, bool, etc. Again, there's a single exception in the use of the DocumentResponseStatus enum, but also here we are dealing with a public type that is easily created.&lt;/P&gt;
&lt;P&gt;The bottom line is that the entire DocumentHandler API contains only three custom types, and all of those types are very susceptible to unit testing.&lt;/P&gt;
&lt;P&gt;In a &lt;A class="" href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/07/unit-testing-documenthandlers.aspx" mce_href="http://blogs.msdn.com/dynamicsmobile/archive/2009/01/07/unit-testing-documenthandlers.aspx"&gt;future post&lt;/A&gt;, I will discuss the matter of unit testing custom DocumentHandlers in greater detail.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9195855" width="1" height="1"&gt;</content><author><name>ploeh</name><uri>http://blogs.msdn.com/members/ploeh.aspx</uri></author><category term="development" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/development/default.aspx" /><category term="Mobile Server" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Mobile+Server/default.aspx" /></entry><entry><title>Microsoft Dynamics Mobile case study at Roskilde Festival : Watch the video!!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2008/11/21/microsoft-dynamics-mobile-case-study-at-roskilde-festival-watch-the-video.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2008/11/21/microsoft-dynamics-mobile-case-study-at-roskilde-festival-watch-the-video.aspx</id><published>2008-11-21T12:22:00Z</published><updated>2008-11-21T12:22:00Z</updated><content type="html">&lt;P&gt;Please enjoy this video showcasing how the Microsoft Dynamics Mobile product can be used in a very different, but nevertheless important, situations. When you watch it, take into consideration the difficulties a partner/customer goes through when implementing a mobile solution that has to work on a huge camping ground with only cellular coverage that only work occasionally, in rain and wind, battery driven and with capabilities to integrate directly into a Microsoft Dynamics backend. This solution was build in 1½ month - with no dry-run on the technology possible. That's only possible if you have a solid platform to develop on!&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;
&lt;P align=center&gt;&lt;EMBED id=vm0e3n8q height=364 type=application/x-shockwave-flash pluginspage=http://macromedia.com/go/getflashplayer width=432 src=http://images.video.msn.com/flash/soapbox1_1.swf flashvars="c=v&amp;amp;v=b9169486-01aa-4f84-8c3d-4a1c67634375&amp;amp;ifs=true&amp;amp;fr=msnvideo&amp;amp;mkt=da-DK" allowScriptAccess="always" allowFullScreen="true" mce_src="http://images.video.msn.com/flash/soapbox1_1.swf"&gt;&lt;/EMBED&gt;&lt;NOEMBED&gt;&lt;/NOEMBED&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9131678" width="1" height="1"&gt;</content><author><name>jschaadt</name><uri>http://blogs.msdn.com/members/jschaadt.aspx</uri></author><category term="Tegos" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Tegos/default.aspx" /><category term="Environmental Sustainability" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Environmental+Sustainability/default.aspx" /><category term="Roskilde Festival" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Roskilde+Festival/default.aspx" /><category term="Waste Management" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Waste+Management/default.aspx" /><category term="Windows Mobile" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Windows+Mobile/default.aspx" /></entry><entry><title>New version of Microsoft Dynamics Mobile now available on partner source</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2008/11/17/new-version-of-microsoft-dynamics-mobile-now-available-on-partner-source.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2008/11/17/new-version-of-microsoft-dynamics-mobile-now-available-on-partner-source.aspx</id><published>2008-11-17T02:19:00Z</published><updated>2008-11-17T02:19:00Z</updated><content type="html">The Microsoft Dynamics Mobile Team is really proud and pleased to announce that a new version of Microsoft Dynamics Mobile were released to PartnerSource last friday! This new version of Microsoft Dynamics Mobile is Better Than Ever by significantly raising the bar in a number of areas: Tightly integrated and aligned with both the releases of Dynamics AX 2009 SP1 and Dynamics NAV 2009 Upgraded support for the latest Microsoft technologies (WM 6.1, Visual Studio 2008, SQL 2008, SQL CE 3.5 SP1, .NET...(&lt;a href="http://blogs.msdn.com/dynamicsmobile/archive/2008/11/17/new-version-of-microsoft-dynamics-mobile-now-available-on-partner-source.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9104832" width="1" height="1"&gt;</content><author><name>jschaadt</name><uri>http://blogs.msdn.com/members/jschaadt.aspx</uri></author></entry><entry><title>Microsoft Dynamics Mobile at Convergence 2008 EMEA in Copenhagen</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2008/11/11/dynamics-mobile-at-convergence-emea-2008-in-copenhagen.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2008/11/11/dynamics-mobile-at-convergence-emea-2008-in-copenhagen.aspx</id><published>2008-11-11T14:59:00Z</published><updated>2008-11-11T14:59:00Z</updated><content type="html">If you are at Convergence in Copenhagen this week, please come join us in a round table, watch one of our sessions - or meet us at our booth number 37 and 38 in the Expo area for a 1:1 discussion. At the booth we will present our latest release and you will have the opportunity to try out being ‘mobilized' yourself. We do hope to see you there ! Tuesday Roundtable: Microsoft Dynamics Mobile - Business Opportunity and Business Model 16:00-17:30, Room 33, Hall B During this roundtable we will discuss...(&lt;a href="http://blogs.msdn.com/dynamicsmobile/archive/2008/11/11/dynamics-mobile-at-convergence-emea-2008-in-copenhagen.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9060159" width="1" height="1"&gt;</content><author><name>jschaadt</name><uri>http://blogs.msdn.com/members/jschaadt.aspx</uri></author></entry><entry><title>Dynamics Mobile takes out the trash at Europe’s largest music festival</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/dynamicsmobile/archive/2008/07/07/dynamics-mobile-takes-out-the-trash-at-europe-s-largest-music-festival.aspx" /><id>http://blogs.msdn.com/dynamicsmobile/archive/2008/07/07/dynamics-mobile-takes-out-the-trash-at-europe-s-largest-music-festival.aspx</id><published>2008-07-07T16:25:00Z</published><updated>2008-07-07T16:25:00Z</updated><content type="html">From July 3rd to 6th, the quiet fairgrounds outside the provincial town of Roskilde, about a 30 minute drive from Copenhagen, were transformed into a cacophony of music, people, tent camps, and general abandon. Over 67,000 people attended this year’s Roskilde Festival , the largest music festival in Europe, held since 1971. They party hard – and generate a lot of trash in an area, which each year has to be fitted with an infrastructure “from scratch” to support the comforts of such a large group...(&lt;a href="http://blogs.msdn.com/dynamicsmobile/archive/2008/07/07/dynamics-mobile-takes-out-the-trash-at-europe-s-largest-music-festival.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8701821" width="1" height="1"&gt;</content><author><name>davworth</name><uri>http://blogs.msdn.com/members/davworth.aspx</uri></author><category term="Dynamics Mobile 2008" scheme="http://blogs.msdn.com/dynamicsmobile/archive/tags/Dynamics+Mobile+2008/default.aspx" /></entry></feed>