<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Microsoft Dynamics Mobile Team blog</title><link>http://blogs.msdn.com/b/dynamicsmobile/</link><description>News and goodies direct to you from the product team!</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Microsoft Dynamics Mobile Has Been Discontinued</title><link>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/09/24/microsoft-dynamics-mobile-has-been-discontinued.aspx</link><pubDate>Thu, 24 Sep 2009 15:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9898924</guid><dc:creator>John Swymer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/dynamicsmobile/rsscomments.aspx?WeblogPostID=9898924</wfw:commentRss><comments>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/09/24/microsoft-dynamics-mobile-has-been-discontinued.aspx#comments</comments><description>&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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898924" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Dynamics+Mobile/">Dynamics Mobile</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/NAV+mobile/">NAV mobile</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/AX+mobile/">AX mobile</category></item><item><title>Configuring Permissions For Processing Mobile Documents in Microsoft NAV 2009 </title><link>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/07/29/configuring-permissions-for-processing-mobile-documents-in-microsoft-nav-2009.aspx</link><pubDate>Wed, 29 Jul 2009 10:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9851828</guid><dc:creator>John Swymer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/dynamicsmobile/rsscomments.aspx?WeblogPostID=9851828</wfw:commentRss><comments>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/07/29/configuring-permissions-for-processing-mobile-documents-in-microsoft-nav-2009.aspx#comments</comments><description>&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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9851828" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Dynamics+Mobile/">Dynamics Mobile</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/mobile+permissions/">mobile permissions</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/mobile+documents/">mobile documents</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/NAV+mobile/">NAV mobile</category></item><item><title>Dynamics AX Mobile 1.5 SSIS Package Failure when using SQL Server collation Danish_Norwegian_CI_AS</title><link>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/07/16/dynamics-ax-mobile-1-5-ssis-package-failure-when-using-sql-server-collation-danish-norwegian-ci-as.aspx</link><pubDate>Thu, 16 Jul 2009 16:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9835659</guid><dc:creator>BertrandCaillet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/dynamicsmobile/rsscomments.aspx?WeblogPostID=9835659</wfw:commentRss><comments>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/07/16/dynamics-ax-mobile-1-5-ssis-package-failure-when-using-sql-server-collation-danish-norwegian-ci-as.aspx#comments</comments><description>&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;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9835659" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/installation/">installation</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/SSIS/">SSIS</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Mobile+Server/">Mobile Server</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/collation/">collation</category></item><item><title>How to code your own barcode enabled tasklets (Motorola and Intermec devices)</title><link>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/04/07/how-to-code-your-own-barcode-enabled-tasklets-motorola-and-intermec-devices.aspx</link><pubDate>Tue, 07 Apr 2009 03:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9534784</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/dynamicsmobile/rsscomments.aspx?WeblogPostID=9534784</wfw:commentRss><comments>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/04/07/how-to-code-your-own-barcode-enabled-tasklets-motorola-and-intermec-devices.aspx#comments</comments><description>&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;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-53-47-84/BarcodeScannerSample15.zip" length="25898" type="application/x-zip-compressed" /></item><item><title>How to enable barcode scanning on existing Microsoft Dynamics Mobile tasklets</title><link>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/04/06/how-to-enable-barcode-scanning-on-existing-microsoft-dynamics-mobile-tasklets.aspx</link><pubDate>Tue, 07 Apr 2009 00:07:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9534456</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/dynamicsmobile/rsscomments.aspx?WeblogPostID=9534456</wfw:commentRss><comments>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/04/06/how-to-enable-barcode-scanning-on-existing-microsoft-dynamics-mobile-tasklets.aspx#comments</comments><description>&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;</description><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Dynamics+Mobile+2008/">Dynamics Mobile 2008</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/development/">development</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Windows+Mobile/">Windows Mobile</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Scanning/">Scanning</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Barcode/">Barcode</category></item><item><title>Where To Get Barcode Drivers</title><link>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/01/21/where-to-get-barcode-drivers.aspx</link><pubDate>Wed, 21 Jan 2009 21:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9357444</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/dynamicsmobile/rsscomments.aspx?WeblogPostID=9357444</wfw:commentRss><comments>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/01/21/where-to-get-barcode-drivers.aspx#comments</comments><description>&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;</description><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Dynamics+Mobile+2008/">Dynamics Mobile 2008</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/development/">development</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Windows+Mobile/">Windows Mobile</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Scanning/">Scanning</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Barcode/">Barcode</category></item><item><title>Barcode Scanning With Microsoft Dynamics Mobile</title><link>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/01/21/barcode-scanning-with-microsoft-dynamics-mobile.aspx</link><pubDate>Wed, 21 Jan 2009 21:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9357393</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/dynamicsmobile/rsscomments.aspx?WeblogPostID=9357393</wfw:commentRss><comments>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/01/21/barcode-scanning-with-microsoft-dynamics-mobile.aspx#comments</comments><description>&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;</description><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Dynamics+Mobile+2008/">Dynamics Mobile 2008</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/development/">development</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Windows+Mobile/">Windows Mobile</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Scanning/">Scanning</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Barcode/">Barcode</category></item><item><title>Unit Testing DocumentHandlers With Parameters</title><link>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/01/13/unit-testing-documenthandlers-with-parameters.aspx</link><pubDate>Tue, 13 Jan 2009 09:20:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9313188</guid><dc:creator>ploeh</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/dynamicsmobile/rsscomments.aspx?WeblogPostID=9313188</wfw:commentRss><comments>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/01/13/unit-testing-documenthandlers-with-parameters.aspx#comments</comments><description>&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;</description><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/development/">development</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Mobile+Server/">Mobile Server</category></item><item><title>Unit Testing DocumentHandlers</title><link>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/01/07/unit-testing-documenthandlers.aspx</link><pubDate>Wed, 07 Jan 2009 12:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9287060</guid><dc:creator>ploeh</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/dynamicsmobile/rsscomments.aspx?WeblogPostID=9287060</wfw:commentRss><comments>http://blogs.msdn.com/b/dynamicsmobile/archive/2009/01/07/unit-testing-documenthandlers.aspx#comments</comments><description>&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;</description><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/development/">development</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Mobile+Server/">Mobile Server</category></item><item><title>DocumentHandlerParameter Best Practices</title><link>http://blogs.msdn.com/b/dynamicsmobile/archive/2008/12/18/documenthandlerparameter-best-practices.aspx</link><pubDate>Thu, 18 Dec 2008 16:47:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9236207</guid><dc:creator>ploeh</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/dynamicsmobile/rsscomments.aspx?WeblogPostID=9236207</wfw:commentRss><comments>http://blogs.msdn.com/b/dynamicsmobile/archive/2008/12/18/documenthandlerparameter-best-practices.aspx#comments</comments><description>&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;</description><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/development/">development</category><category domain="http://blogs.msdn.com/b/dynamicsmobile/archive/tags/Mobile+Server/">Mobile Server</category></item></channel></rss>