<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.infopathdev.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>David Airapetyan</title><link>http://www.infopathdev.com/blogs/david/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP3 (Build: 31118.962)</generator><item><title>Reshredding all documents for a document type using the Qdabra DBXL Migration Tool v2</title><link>http://www.infopathdev.com/blogs/david/archive/2008/08/19/reshredding-all-documents-for-a-document-type-using-the-qdabra-dbxl-migration-tool-v2.aspx</link><pubDate>Tue, 19 Aug 2008 19:28:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:31541</guid><dc:creator>Greg Collins</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=31541</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2008/08/19/reshredding-all-documents-for-a-document-type-using-the-qdabra-dbxl-migration-tool-v2.aspx#comments</comments><description>&lt;span style="mso-ansi-language:EN-CA;"&gt;If you have to reshred a lot of documents, there is an easier, automated way of doing this rather than&amp;nbsp;using Qdabra DBXL Administration Tool (aka DAT).&lt;/span&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;ol&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;Download and install the &lt;span class=""&gt;Qdabra &lt;a href="http://www.infopathdev.com/files/folders/document_deployer/default.aspx"&gt;DBXL Migration Tool&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;Download&amp;nbsp;the &lt;span class=""&gt;Scenario File&lt;/span&gt; for documents reshredding. (Scenario file no longer needed for recent versions of the Migration tool, as it is incorporated into the tool).&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;Open the Migration Tool UI.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;Make sure DBXL Server Root is set to your DBXL (normally http://myserver/QdabraWebService).&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;Select the &amp;quot;custom&amp;quot; tab and load the scenario you&amp;#39;ve downloaded in step 2.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;Scroll down in the scenario variables list and set &amp;quot;docType&amp;quot; to the document type you want to clear.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;Scroll down the Scenario Variables list and change sourceDBXL/targetDBXL.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;Select &amp;quot;ReshredDocuments&amp;quot; in the scenario runs and click &amp;quot;Run&amp;quot;. This should reshred all the documents from the specified document type:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="mso-ansi-language:EN-CA;"&gt;&amp;nbsp;&lt;img src="http://www.infopathdev.com/photos/blog_pictures/images/31480/original.aspx" style="WIDTH:777px;HEIGHT:731px;" height="731" width="777" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=31541" width="1" height="1"&gt;</description></item><item><title>Codeless way of getting DBXL document properties (docid, doctype and DBXL URL)</title><link>http://www.infopathdev.com/blogs/david/archive/2008/07/22/codeless-way-of-getting-dbxl-document-properties-docid-doctype-and-dbxl-url.aspx</link><pubDate>Tue, 22 Jul 2008 03:08:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:30639</guid><dc:creator>davidair</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=30639</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2008/07/22/codeless-way-of-getting-dbxl-document-properties-docid-doctype-and-dbxl-url.aspx#comments</comments><description>&lt;p&gt;A DBXL solution that is designed to be generic needs to be able to access several DBXL properties. For example, a solution that wants to display a hyperlink in an e-mail needs to be able to determine its DocId and the DBXL URL.&lt;/p&gt;
&lt;p&gt;While it&amp;#39;s easy to write code to retrieve this data, it is often not desirable to do so. For instance, browser-based solutions are much harder to deploy when they contain code.&lt;/p&gt;
&lt;p&gt;This blog post describes a way of getting this information using only rules. Here is what you need to do.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To get the DBXL Document ID, add a DocID field to your data source and set it on load via this rule:&lt;/li&gt;&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;substring-before(substring-after(/processing-instruction()[local-name(.) = &amp;quot;QdabraDBXL&amp;quot;], &amp;#39;docid=&amp;quot;&amp;#39;), &amp;#39;&amp;quot;&amp;#39;)&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Note that this value will not be set for a new document.&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;To get the DBXL URL, add a url field to your data source and set it on load via this rule:&lt;/li&gt;&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;substring-before(substring-after(/processing-instruction()[local-name(.) = &amp;quot;mso-infoPathSolution&amp;quot;], &amp;#39;href=&amp;quot;&amp;#39;), &amp;quot;/Forms&amp;quot;)&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Finally, to get the DBXL document type, add a DocType field to your data source and set it on load via this rule:&lt;/li&gt;&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;substring-before(substring-after(/processing-instruction()[local-name(.) = &amp;quot;mso-infoPathSolution&amp;quot;], concat(&amp;lt;url&amp;gt;, &amp;quot;/Forms/&amp;quot;)), &amp;quot;/template.xsn&amp;quot;)&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Note how the last rule builds on the URL value we&amp;#39;ve gotten previously. You’ll need to replace&lt;i&gt;&lt;b&gt; &amp;lt;url&amp;gt;&lt;/b&gt;&lt;/i&gt; with the xpath for the URL saved previously.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It is important to understand that these rules will only work after the InfoPath solution has been published to DBXL.&lt;/p&gt;
&lt;p&gt;You can download a full sample here: http://www.infopathdev.com/files/folders/examples/entry41179.aspx&lt;a href="http://www.infopathdev.com/files/folders/community_uploads/entry30638.aspx"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;As an alternative, you could use qRules. You can find documentation for qRules by &lt;a href="http://www.infopathdev.com/files/folders/qrules/default.aspx" class=""&gt;clicking here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=30639" width="1" height="1"&gt;</description><category domain="http://www.infopathdev.com/blogs/david/archive/tags/Qdabra+PI/default.aspx">Qdabra PI</category></item><item><title>InfoPath data connection: what if secondary data source does not display the structure?</title><link>http://www.infopathdev.com/blogs/david/archive/2008/07/17/infopath-data-connection-what-if-secondary-data-source-does-not-display-the-structure.aspx</link><pubDate>Thu, 17 Jul 2008 20:46:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:30557</guid><dc:creator>davidair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=30557</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2008/07/17/infopath-data-connection-what-if-secondary-data-source-does-not-display-the-structure.aspx#comments</comments><description>&lt;span style="mso-ansi-language:EN-US;"&gt;When a data connection is added in InfoPath the data structure is inferred from the data. This functionality is very important because we want to be able to design against the secondary data source and we need the data to show in the Data Source Pane (DSP) for that.&lt;br /&gt;&lt;br /&gt;In the case of web services, InfoPath will use the parameters provided by the user during the data connection configuration to retrieve a sample data and generate the data source based on it. In some cases this may fail to work. For example, suppose your web method returns an XmlDocument called &amp;quot;resultDocument&amp;quot;. All you may see in the DSP is the node &amp;quot;resultDocument&amp;quot; without anything underneath even though InfoPath has successfully downloaded the data.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="COLOR:red;"&gt;Warning: the following steps require advanced knowledge and may render your solution unusable.&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;When adding a web service connection, InfoPath will usually generate three schema files:&lt;br /&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;br /&gt;ConnectionName&lt;/span&gt;&lt;/i&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;.xsd – will contain the same structure as the DSP (query fields and data fields).&lt;br /&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;ConnectionName1&lt;/span&gt;&lt;/i&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;.xsd – will contain the details of the web service parameters and return types. If an XML node is returned, the type will be listed as &amp;quot;any&amp;quot;.&lt;br /&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;ConnectionName2&lt;/span&gt;&lt;/i&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;.xsd – will contain the schema that was automatically inferred from the sample XML that was downloaded when the data connection was created.&lt;br /&gt;&lt;br /&gt;Note that the schema stored in &lt;i&gt;ConnectionName2&lt;/i&gt;.xsd is not directly connected to the other schemas. Instead, a special node is inserted into sampledata.xml that links them, namely &lt;b&gt;xd:RequiredAny&lt;/b&gt;. In the case when no data structure is displayed, this node will be missing. Here are the full steps to fix the problem:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Inspect &lt;i&gt;ConnectionName1&lt;/i&gt;.xsd for the return type of your web method (in our example, &lt;i&gt;resultDocument&lt;/i&gt;). You are likely to see that the &lt;i&gt;any&lt;/i&gt; element is listed as non-required:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;"&gt;&amp;lt;s:element minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; name=&amp;quot;resourceXml&amp;quot;&amp;gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;s:complexType mixed=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;s:sequence&amp;gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;s:any &lt;b&gt;&lt;span style="COLOR:red;"&gt;minOccurs=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;/b&gt;&amp;gt;&amp;lt;/s:any&amp;gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;/s:sequence&amp;gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;/s:complexType&amp;gt;&lt;br /&gt;&amp;lt;/s:element&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;Remove the minOccurs element to make it required.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;2. You now need to specify what schema replaces the &amp;quot;any&amp;quot;. Inspect &lt;i&gt;ConnectionName2&lt;/i&gt;.xsd and locate the root element of the XML that is being returned. Edit sampledata.xml and add the following node under &amp;lt;xd:RequiredAnys/&amp;gt;:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&amp;lt;xd:RequiredAny SOM_Path=&amp;quot;{namespace}nodeName/{namespace}nodeName/##any[1]&amp;quot; NamespaceURI=&amp;quot;&lt;i&gt;namespace&lt;/i&gt;&amp;quot; LocalName=&amp;quot;&lt;i&gt;rootNodeName&lt;/i&gt;&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;Here the SOM_Path will be the path to the response node, the NamespaceURI will be the namespace of the node being returned and LocalName will be the name of the root node.&lt;br /&gt;&lt;br /&gt;You can find an example of this path by generating a data connection that does not have the issue that this document is trying to address.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. In sampledata.xml, locate the section of the data that corresponds to the returned result. It will be an&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;empty node (such as &amp;lt;resultDocument/&amp;gt;). Replace it by &amp;lt;resultDocument&amp;gt;&amp;lt;ns:&lt;i&gt;rootNode&lt;/i&gt;/&amp;gt;&amp;lt;/resultDocument&amp;gt; where rootNode refers to the root node of the sample data. Make sure to define the namespace prefix somewhere in the sampledata.xml file (can do this at the root).&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;You should be now able to design against the data source!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;/span&gt;&lt;font face="Calibri"&gt;&lt;strong&gt;&lt;br /&gt;Huge thanks to &lt;/strong&gt;&lt;a class="" title="Tom" href="http://www.infopathdev.com/blogs/tomlaw"&gt;&lt;strong&gt;Tom&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; for discovering this workaround.&lt;/strong&gt;&lt;/font&gt; &lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=30557" width="1" height="1"&gt;</description></item><item><title>Excel to XML – automatically generating InfoPath forms from Excel data</title><link>http://www.infopathdev.com/blogs/david/archive/2008/07/16/excel-to-xml-automatically-generating-infopath-forms-from-excel-data.aspx</link><pubDate>Wed, 16 Jul 2008 19:35:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:30516</guid><dc:creator>davidair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=30516</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2008/07/16/excel-to-xml-automatically-generating-infopath-forms-from-excel-data.aspx#comments</comments><description>&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3" face="Calibri"&gt;Does your data live in Excel? Would you like to move it to InfoPath? &lt;a title="ExcelToInfoPath" href="http://www.qdabra.com/en/products/ExcelToInfoPath.aspx"&gt;Qdabra Excel to XML Tool&lt;/a&gt; &lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;to the rescue! This simple command-line based tool will take an existing Excel spreadsheet and generate XML documents with your data. The tool will also optionally upload the documents to Qdabra DBXL to further streamline your data processing.&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;img style="WIDTH:345px;HEIGHT:153px;" title="Excel to XML" alt="Excel to XML" src="http://www.infopathdev.com/photos/blog_pictures/images/30515/original.aspx" width="345" height="153" /&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;br /&gt;The tool is driven by a simple configuration file that maps Excel columns into fields on an InfoPath solution. Suppose, for example, that you have a spreadsheet with two columns, &amp;quot;name&amp;quot; and &amp;quot;phone&amp;quot;. You also have a ContactInfo InfoPath form with those two fields. In order to generate multiple ContactInfo forms, just add the following to the MappingInfo section of the configuration file of the tool:&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&amp;lt;add key=&amp;quot;name&amp;quot; value=&amp;quot;/my:myFields/my:name&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;add key=&amp;quot;phone&amp;quot; value=&amp;quot;/my:myFields/my:phone&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Once you run the tool, it will generate one line for each row in the spreadsheet. The tool skips already generated files so it can be re-run incrementally whenever additions are made to the spreadsheet.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;Things to watch out for:&lt;/p&gt;
&lt;p&gt;- &amp;quot;nillable&amp;quot; - this optional attribute of the mapping info should be used if a datatype in InfoPath cannot be null (bool, date/time, integer/double) but your spreadsheet contains blank values for some rows&lt;/p&gt;
&lt;p&gt;- namespaces: make sure that you have correctly listed all namespaces used in the xpaths. InfoPath uses the &amp;quot;my&amp;quot; prefix but it may refer to different namespaces so check carefully or you will end up with empty documents!&lt;/p&gt;&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=30516" width="1" height="1"&gt;</description></item><item><title>Installing DBXL – beware of multiple hostnames!</title><link>http://www.infopathdev.com/blogs/david/archive/2008/07/16/installing-dbxl-beware-of-multiple-hostnames.aspx</link><pubDate>Wed, 16 Jul 2008 18:54:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:30514</guid><dc:creator>davidair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=30514</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2008/07/16/installing-dbxl-beware-of-multiple-hostnames.aspx#comments</comments><description>&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;When you install Qdabra DBXL on your server you may encounter errors such as &amp;quot;Error initializing DBXL database&amp;quot; --&amp;gt;The request failed with HTTP status 404: Not Found&amp;quot;. One of the reasons this happens is that your site is configured to use multiple hostnames or multiple IP addresses. If DBXL picks the wrong hostname/IP, the installation will fail.&lt;br /&gt;&lt;br /&gt;The easiest workaround is to go to your site settings (IIS management console) and temporarily remove all hostnames/IP addresses that will not work. Make sure only to leave the hostname that the currently logged-in user can access. After DBXL installs successfully you can re-add the additional hostnames and/or IP addresses.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=30514" width="1" height="1"&gt;</description></item><item><title>Deleting all documents for a document type using the Qdabra DBXL Migration Tool v2</title><link>http://www.infopathdev.com/blogs/david/archive/2008/07/08/deleting-all-documents-for-a-document-type-using-the-qdabra-dbxl-migration-tool-v2.aspx</link><pubDate>Tue, 08 Jul 2008 18:36:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:30212</guid><dc:creator>davidair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=30212</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2008/07/08/deleting-all-documents-for-a-document-type-using-the-qdabra-dbxl-migration-tool-v2.aspx#comments</comments><description>&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font face="Calibri" size="3"&gt;The Qdabra DBXL Administration Tool (DAT) allows you&amp;nbsp;to quickly delete all documents from a document type: simply open the configuration for the document type, select the &amp;quot;Documents&amp;quot; tab and click on the &amp;quot;Delete All&amp;quot; button. However, you may encounter an error due to timeout if your document type contains too many documents (usually in the order of thousands).&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font face="Calibri" size="3"&gt;The good news is that you can use the Qdabra DBXL Migration Tool to individually delete all the documents one by one so that the timeout does not occur. Here is how you do it:&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font face="Calibri" size="3"&gt;Download a copy of the Qdabra DBXL Migration Tool from here: &lt;a href="http://www.infopathdev.com/files/folders/document_deployer/default.aspx"&gt;http://www.infopathdev.com/files/folders/document_deployer/default.aspx&lt;/a&gt;&lt;a href="http://www.infopathdev.com/files/folders/dbxldownload/entry24682.aspx"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font face="Calibri" size="3"&gt;Download a scenario file for documents removal: &lt;a href="http://www.infopathdev.com/files/folders/document_deployer/entry31629.aspx"&gt;http://www.infopathdev.com/files/folders/document_deployer/entry31629.aspx&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font face="Calibri" size="3"&gt;Open the Migration Tool UI, select the &amp;quot;custom&amp;quot; tab and load the scenario you&amp;#39;ve downloaded in step 2. Scroll down in the scenario variables list and set &amp;quot;docTypeName&amp;quot; to the document type you want to clear. Select &amp;quot;RemoveDocuments&amp;quot; in the scenario runs and click &amp;quot;Run&amp;quot;. This should delete all the documents from the specified document type:&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;img src="http://www.infopathdev.com/photos/blog_pictures/images/30211/original.aspx" title="screenshot" style="WIDTH:777px;HEIGHT:713px;" alt="screenshot" height="713" width="777" /&gt;&lt;/font&gt;&lt;/span&gt;&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=30212" width="1" height="1"&gt;</description></item><item><title>Browser forms and DBXL</title><link>http://www.infopathdev.com/blogs/david/archive/2008/05/05/browser-forms-and-dbxl.aspx</link><pubDate>Mon, 05 May 2008 19:02:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:28504</guid><dc:creator>davidair</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=28504</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2008/05/05/browser-forms-and-dbxl.aspx#comments</comments><description>&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Getting browser forms to work with Qdabra DBXL is pretty straightforward. The most important part of it is to install DBXL into the same web application as the SharePoint front end (typically into the web site that runs on port 80). This is needed for the authentication to work properly – otherwise more advanced authentication schemes such as Kerberos delegation may need to be used.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Once DBXL is installed it is sufficient to convert existing DBXL data connections into UDC files and everything will work as-is. However, there is one challenge with the DBXL/SharePoint integration and this is the fact the InfoPath Forms Server can only open documents from SharePoint document libraries.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Luckily, browser forms allow users to pass in custom parameters via the URL. This gives rise to the following solution for listing and opening documents from DBXL (these steps require SharePoint Designer):&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp; 1.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The first step is to add a data view to SharePoint site that would list all documents that the user is interested in (one way would be to list the contents of the DBXL&amp;#39;s Document table filtering by Type). &lt;a class="" title="Create a SharePoint Dataview for DBXL" href="http://www.infopathdev.com/forums/p/6576/24171.aspx#24171" target="_blank"&gt;Jeff Tangen&amp;#39;s post&lt;/a&gt; provides&amp;nbsp;steps on how to add a data view. &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp; 2.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Add a column to the data view (or modify an existing one) to link to the form template, passing in the docid as a parameter.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;3.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;In the form code&amp;#39;s Loading event, inspect the LoadingEventArgs.InputParameters member to check for the docid. If passed, use a regular data connection to DBXL (the GetDocument method) to retrieve the document and replace the main DOM with the retrieved XML.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Here is how the hyperlink to the form can look like in the data view:&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&amp;lt;a target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;xsl:attribute name=&amp;quot;href&amp;quot;&amp;gt;http://&lt;i&gt;server&lt;/i&gt;/_layouts/FormServer.aspx?XsnLocation=&lt;i&gt;xsnLocation&lt;/i&gt; &amp;amp;amp;DefaultItemOpen=1&amp;amp;amp;docid=&amp;lt;xsl:value-of select=&amp;quot;@DocID&amp;quot; /&amp;gt;&amp;lt;/xsl:attribute&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@Name&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Then the docId can be accessed in the form code as e.InputParameters[&amp;quot;docId&amp;quot;]&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Finally, once the document is downloaded, obtain an XPathNavigator from the secondary data source for GetDocument and replace main data source&amp;#39;s inner XML with the downloaded inner XML.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;For example, if the navigator is called downloadedDocumentNavigator, use this:&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;XPathNavigator documentElement = this.MainDataSource.CreateNavigator().SelectSingleNode(&amp;quot;/*&amp;quot;);&lt;br /&gt;documentElement.InnerXml = downloadedDocumentNavigator.InnerXml;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=28504" width="1" height="1"&gt;</description></item><item><title>How to automatically build and deploy DBXL solutions</title><link>http://www.infopathdev.com/blogs/david/archive/2007/11/26/how-to-automatically-building-and-deploying-dbxl-solutions.aspx</link><pubDate>Mon, 26 Nov 2007 14:08:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:24684</guid><dc:creator>davidair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=24684</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2007/11/26/how-to-automatically-building-and-deploying-dbxl-solutions.aspx#comments</comments><description>&lt;p&gt;A DBXL solution typically is a complex system consisting of a database schema as well as several InfoPath templates along with their corresponding DBXL settings and database mappings. Maintaining and deploying those can be a challenging task. The DBXL Migration Tool (also known as Document Deployer) allows automating the process of building and deploying a DBXL solution.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;Step one: creating an installer&lt;br /&gt;&lt;/strong&gt;The first step is to create a Document Deployer installer. Let us assume that a DBXL solution consists of several InfoPath templates saved as source files (typical setup when creating InfoPath templates with business logic). Furthermore, let us assume that the templates have already been deployed to DBXL and mappings have been created. To create the installer, follow these steps:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1.&amp;nbsp;Create a Mappings\Samples folder next to the solutions &lt;br /&gt;2.&amp;nbsp;For each InfoPath Template, use the Migration Tool to export the configuration and save the mapping.xml into individual folders under the Mappings\Samples folder. &lt;br /&gt;3.&amp;nbsp;(Optional) Manually edit each mapping.xml file and remove the contents of the template node. This is done to keep the mappings files small; the build process will replace the template node with the fresh bits anyway. &lt;br /&gt;4.&amp;nbsp;Add an install.sql to one of the folders, it does not matter which one but make sure that the mapping with the SQL installer gets executed first. It is a best practice to have the install.sql create the database schema only if one does not exist already, this enables the upgrade scenario. &lt;br /&gt;5.&amp;nbsp;Add whatever documents needing to be deployed alongside the mappings in the corresponding SampleDocs folder. &lt;br /&gt;6.&amp;nbsp;Within the Mappings folder, create a Document Deployer install script (see example in the appendix). &lt;br /&gt;7.&amp;nbsp;(Optional) Create batch files to facilitate the deployment&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Step 2: creating a build for the template DLLs&lt;br /&gt;&lt;/strong&gt;If you have an InfoPath solution with business logic, it has to be compiled before the XSN can be generated. Create an empty Visual Studio solution that will be used to build all of your InfoPath templates. Then create one C# project for each template and add the source files (typically FormCode.cs) as link to those solutions. You will need to add the missing references manually such as Microsoft.Office.Interop.InfoPath.SemiTrust. Make sure to edit the project properties to make sure that the names of the DLLs generated match the ones build by InfoPath.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;Step 3: creating a Document Deployer build&lt;/strong&gt;&lt;br /&gt;Now that you can build the InfoPath business logic and that you have an installer structure in place, creating a Document Deployer build is simply a matter of creating a Document Deployer script that will combine the expanded template files with the DLLs and put the result into the mapping.xml files. See the appendix for the example of such a script.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;Appendix: Example&lt;/strong&gt;&lt;br /&gt;Suppose that your DBXL system has two solutions, Users and Expense Reports (first one allows to edit the users in the system while the second one allows the users to edit their expense reports). Initially, you will have the following directory structure:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;ExpenseSystem&lt;br /&gt;&amp;nbsp;Users&lt;br /&gt;&amp;nbsp;&amp;nbsp;InfoPath Form Template&lt;br /&gt;&amp;nbsp;ExpenseReport&lt;br /&gt;&amp;nbsp;&amp;nbsp;InfoPathFormTemplate &lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Add the Mappings\Samples folder and save the mappings for the two solutions. Assuming there is an install.sql file for each of the solutions that creates the database tables, the new folder structure will look like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;ExpenseSystem&lt;br /&gt;&amp;nbsp;Users&lt;br /&gt;&amp;nbsp;&amp;nbsp;InfoPath Form Template&lt;br /&gt;&amp;nbsp;ExpenseReport&lt;br /&gt;&amp;nbsp;&amp;nbsp;InfoPathFormTemplate&lt;br /&gt;&amp;nbsp;Mappings&lt;br /&gt;&amp;nbsp;&amp;nbsp;Samples&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Users&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;install.sql&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mapping.xml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExpenseReport&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;install.sql&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mapping.xml&amp;nbsp; &lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Now create a DocumentDeployer scenario called InstallSamples.xml in the Mappings folder:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;&amp;lt;ScenarioDefinition&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;Imports useXpath=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;ImportActionDefinitions&amp;gt;concat($ScenariosPath, &amp;#39;\MigrateCore.xml&amp;#39;)&amp;lt;/ImportActionDefinitions&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/Imports&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;lt;GlobalVariables&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;GlobalVariable name=&amp;quot;installSql&amp;quot; value=&amp;quot;True&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/GlobalVariables&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;Runs&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;Run name=&amp;quot;InstallExpenseSystem&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Action name=&amp;quot;InstallDocType&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;Samples\Users&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;database&amp;quot;&amp;gt;ExpenseDatabase&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;installDatabase&amp;quot; useXpath=&amp;quot;true&amp;quot;&amp;gt;$installSql&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/Action&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Action name=&amp;quot;InstallDocType&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;Samples\ExpenseReport&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;database&amp;quot;&amp;gt;ExpenseDatabase&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;installDatabase&amp;quot; useXpath=&amp;quot;true&amp;quot;&amp;gt;$installSql&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/Action&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/Run&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/Runs&amp;gt;&lt;br /&gt;&amp;lt;/ScenarioDefinition&amp;gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It defines a global variable called installSql which specifies whether or not to execute the install.sql scripts. This variable when specified of DocumentDeployer&amp;#39;s command-line allows to tweak the process to enable update scenarios. To invoke the installation, run the following command: &amp;quot;&lt;em&gt;&lt;strong&gt;C:\Program Files\Qdabra Software\DBXLMigrationTool\DocumentDeployer.exe&amp;quot; InstallSamples.xml InstallExpenseSystem --databaseServer=yourDbServer --DBXLUrl=yourDbxlUrl --installSql=True|False&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The Build scenario will look like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;ScenarioDefinition&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;GlobalVariables&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;GlobalVariable name=&amp;quot;mappingRoot&amp;quot; value=&amp;quot;C:\ExpenseSystem \Mappings\Samples\&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;GlobalVariable name=&amp;quot;binariesRoot&amp;quot; value=&amp;quot;path to the compiled dlls&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;GlobalVariable name=&amp;quot;solutionsRoot&amp;quot; value=&amp;quot; C:\ExpenseSystem \&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/GlobalVariables&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;Classes xmlns:dd=&amp;quot;&lt;/em&gt;&lt;a href="http://www.qdabra.com/DocumentDeployer"&gt;&lt;em&gt;http://www.qdabra.com/DocumentDeployer&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;dd:Class Assembly=&amp;quot;Qdabra.DocumentDeployer.InfoPathTools&amp;quot; Name=&amp;quot;Qdabra.DocumentDeployer.InfoPathTools.SolutionTools&amp;quot; Alias=&amp;quot;Tools&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/dd:Class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/Classes&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;ActionDefinitions&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;ActionDefinition name=&amp;quot;AssembleAndUpdateMapping&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Variables&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Variable name=&amp;quot;solutionSourcePath&amp;quot; output=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Variable name=&amp;quot;solutionDllPath&amp;quot; output=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Variable name=&amp;quot;templateXsnName&amp;quot; output=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Variable name=&amp;quot;mappingToUpdatePath&amp;quot; output=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/Variables&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Methods&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Method class=&amp;quot;Tools&amp;quot; name=&amp;quot;UpdateMapping&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;XPathParameter&amp;gt;$solutionSourcePath&amp;lt;/XPathParameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;XPathParameter&amp;gt;$solutionDllPath&amp;lt;/XPathParameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;XPathParameter&amp;gt;$templateXsnName&amp;lt;/XPathParameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;XPathParameter&amp;gt;$mappingToUpdatePath&amp;lt;/XPathParameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Method&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/Methods&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/ActionDefinition&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/ActionDefinitions&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;Runs&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;Run name=&amp;quot;AssembleExpenseSystem&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Action name=&amp;quot;AssembleAndUpdateMapping&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;solutionSourcePath&amp;quot; useXpath=&amp;quot;true&amp;quot;&amp;gt;concat($solutionsRoot, &amp;quot;Users\InfoPath Form Template\manifest.xsf&amp;quot;)&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;solutionDllPath&amp;quot; useXpath=&amp;quot;true&amp;quot;&amp;gt;$binariesRoot&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;templateXsnName&amp;quot;&amp;gt;Users&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;mappingToUpdatePath&amp;quot; useXpath=&amp;quot;true&amp;quot;&amp;gt;concat($mappingRoot, &amp;quot;Users\mapping.xml&amp;quot;)&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/Action&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Action name=&amp;quot;AssembleAndUpdateMapping&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;solutionSourcePath&amp;quot; useXpath=&amp;quot;true&amp;quot;&amp;gt;concat($solutionsRoot, &amp;quot;ExpenseReport\ InfoPath Form Template\manifest.xsf&amp;quot;)&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;solutionDllPath&amp;quot; useXpath=&amp;quot;true&amp;quot;&amp;gt;$binariesRoot&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;templateXsnName&amp;quot;&amp;gt;ExpenseReport&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name=&amp;quot;mappingToUpdatePath&amp;quot; useXpath=&amp;quot;true&amp;quot;&amp;gt;concat($mappingRoot, &amp;quot;ExpenseReport\mapping.xml&amp;quot;)&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/Action&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/Run&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/Runs&amp;gt;&lt;br /&gt;&amp;lt;/ScenarioDefinition&amp;gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Once you specify the location of the binaries, Document Deployer will assemble the solutions under the mappings folder which will create the final installer.&lt;/p&gt;&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=24684" width="1" height="1"&gt;</description><category domain="http://www.infopathdev.com/blogs/david/archive/tags/migration/default.aspx">migration</category><category domain="http://www.infopathdev.com/blogs/david/archive/tags/deployment/default.aspx">deployment</category><category domain="http://www.infopathdev.com/blogs/david/archive/tags/document+deployer/default.aspx">document deployer</category></item><item><title>Announcement: Migration Tool v2 released</title><link>http://www.infopathdev.com/blogs/david/archive/2007/11/26/announcement-migration-tool-v2-released.aspx</link><pubDate>Mon, 26 Nov 2007 14:05:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:24683</guid><dc:creator>davidair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=24683</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2007/11/26/announcement-migration-tool-v2-released.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;The second version of the Qdabra DBXL Migration Tool (aka Document Deployer) has been released as a public Beta and can be downloaded here: &lt;/font&gt;&lt;a href="http://www.infopathdev.com/files/folders/dbxldownload/entry24682.aspx"&gt;&lt;font face="Calibri" size="3"&gt;http://www.infopathdev.com/files/folders/dbxldownload/entry24682.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Here are new features in v2:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;1.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Authentication: in v1, Document Deployer would fail if the currently logged in user failed to authenticate with DBXL. As of v2, Document Deployer will detect this situation and will prompt the user to enter the credentials (caching the username only).&lt;br /&gt;&lt;br /&gt;This unblocks scenarios where a user connects via RAS/VPN when the machine is not joined to the domain.&lt;br style="mso-special-character:line-break;" /&gt;&lt;br style="mso-special-character:line-break;" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;2.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Built-in variables support. Now several system values are available anywhere in the system:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt 54pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo2;"&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 face="Calibri" size="3"&gt;a)&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;DocumentDeployerPath – specifies the root of the Document Deployer installation&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt 54pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo2;"&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 face="Calibri" size="3"&gt;b)&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;ScenariosPath – specifies the folder that contains the out-of-the-box scenarios&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt 54pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo2;"&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 face="Calibri" size="3"&gt;c)&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;DBXLUrl – Defaults to the configuration setting, can be changed dynamically&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt 54pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo2;"&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 face="Calibri" size="3"&gt;d)&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;DocServiceTimeout – Defaults to .NET setting, can be changed dynamically&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt 54pt;TEXT-INDENT:-18pt;mso-list:l1 level1 lfo2;"&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 face="Calibri" size="3"&gt;e)&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;EnumDBTimeout - Defaults to .NET setting, can be changed dynamically&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt 36pt;"&gt;&lt;font face="Calibri" size="3"&gt;Built-ins enable scenarios where you can switch DBXL location mid-flight and tweak the parameters such as timeout.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;3.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Global variables and command-line variables: you can finally provide arbitrary arguments via command-line and you can use global variables to provide defaults. With command-line arguments, you can specify the DBXL location, the database name etc... this allows much greater reuse of existing scenarios – no more need to modify the scenario file to change 5 to 10!&lt;br style="mso-special-character:line-break;" /&gt;&lt;br style="mso-special-character:line-break;" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;4.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;New Core methods:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0cm 0cm 0pt 72pt;TEXT-INDENT:-18pt;mso-list:l0 level2 lfo1;mso-add-space:auto;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;a.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Trace (for debugging purposes)&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="MARGIN:0cm 0cm 10pt 72pt;TEXT-INDENT:-18pt;mso-list:l0 level2 lfo1;mso-add-space:auto;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;b.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;SetVariable – allows to set xpath variables dynamically in a declarative way&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoListParagraphCxSpFirst" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;5.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Importing previous runs: Document Deployer v2 allows importing XML files from previous runs enabling abort-and-resume scenarios. Importing XML files also enables very generic input mechanisms.&lt;br style="mso-special-character:line-break;" /&gt;&lt;br style="mso-special-character:line-break;" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;6.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Minor tweaks:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0cm 0cm 0pt 72pt;TEXT-INDENT:-18pt;mso-list:l0 level2 lfo1;mso-add-space:auto;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;a.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Actions can now fail without failing the entire run&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0cm 0cm 0pt 72pt;TEXT-INDENT:-18pt;mso-list:l0 level2 lfo1;mso-add-space:auto;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;b.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;A few additional checks to prevent faulty scenarios from crashing later&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="MARGIN:0cm 0cm 10pt 72pt;TEXT-INDENT:-18pt;mso-list:l0 level2 lfo1;mso-add-space:auto;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;c.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;File version changed to 2.0&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font face="Cambria" color="#4f81bd" size="4"&gt;New Migration Tool Features&lt;/font&gt;&lt;/h2&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;In addition to Document Deployer changes, the Migration Tool has been updated to use the new features. The Migration Tool features include:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l2 level1 lfo3;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;1.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Ability to specify timeouts via command-line (including sql timeout)&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l2 level1 lfo3;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;2.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Ability to specify different source/target DBXL paths via command-line. This allows performing migration in one run. It is no longer needed to modify the configuration of the tool.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l2 level1 lfo3;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;3.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Ability to resume the download of the documents.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l2 level1 lfo3;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;4.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Ability to resume the upload of the documents.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l2 level1 lfo3;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;5.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Most methods got another, richer, version (see the documentation for details)&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l2 level1 lfo3;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font face="Cambria" color="#4f81bd" size="4"&gt;User interface&lt;/font&gt;&lt;/h2&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;The&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Migration Tool has been augmented with a graphical user interface which makes running scenarios much easier.&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=24683" width="1" height="1"&gt;</description></item><item><title>Implementing reusable OM that can be exposed to a task pane</title><link>http://www.infopathdev.com/blogs/david/archive/2007/11/26/implementing-reusable-om-that-can-be-exposed-to-a-task-pane.aspx</link><pubDate>Mon, 26 Nov 2007 13:49:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:24679</guid><dc:creator>davidair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=24679</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2007/11/26/implementing-reusable-om-that-can-be-exposed-to-a-task-pane.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;When developing InfoPath solutions with a task pane, it is possible to call into form&amp;#39;s code (business logic) via the window.external.Window.XDocument.Extension mechanism. For example, if you have a public method GetUserName() in your form code, you can call it as &lt;i&gt;window.external.Window.XDocument.Extension.GetUserName()&lt;/i&gt;. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;What if you want to build a reusable library that can be exposed to the taskpane? It turns out that it&amp;#39;s pretty easy to do:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;1.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Create a regular C# library project, implement the OM as you see fit (make sure the assembly has a strong name)&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;2.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;In project Assembly properties, mark the assembly as COM-visible&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;3.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Reference the library in your InfoPath project the usual way&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;4.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;Create an OM member and expose it as a public property&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="MARGIN:0cm 0cm 10pt 36pt;TEXT-INDENT:-18pt;mso-list:l0 level1 lfo1;"&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;5.&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;You can now call methods via the new OM property&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;The key here is step #2, marking the assembly as COM-visible. This allows Javascript to access its members and properties.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;For example, if your library is called MyObjectModel and it has a method GetData(), you can expose and call it as follows:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;In your FormCode.cs:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;// Initialize it when appropriate, probably in OnLoad()&lt;span style="COLOR:blue;"&gt;&lt;br /&gt;private&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;MyObjectModel&lt;/span&gt; _objectModel;&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt; &lt;span style="COLOR:#2b91af;"&gt;MyObjectModel&lt;/span&gt; ObjectModel&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;&amp;nbsp; get &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;return&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt; _objectModel;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;In your task pane code:&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;window.external.Window.XDocument.Extension.ObjectModel.GetData();&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;If you form needs to run in the Forms Server this becomes a little trickier because Forms Server business logic does not support member variables. Instead you have to store all state in the FormState object. Because of that you have to make your OM class serializable by adding &lt;/font&gt;&lt;span style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;mso-fareast-language:EN-CA;"&gt;[System.&lt;span style="COLOR:#2b91af;"&gt;SerializableAttribute&lt;/span&gt;()]&lt;/span&gt;&lt;font face="Calibri" size="3"&gt; to the class definition.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Your public property then becomes this:&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;mso-fareast-language:EN-CA;"&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;mso-fareast-language:EN-CA;"&gt; &lt;span style="COLOR:#2b91af;"&gt;ObjectModel&lt;/span&gt; ObjectModel&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;mso-fareast-language:EN-CA;"&gt;{&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;mso-fareast-language:EN-CA;"&gt;get&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;mso-fareast-language:EN-CA;"&gt; { &lt;span style="COLOR:blue;"&gt;return&lt;/span&gt; (&lt;span style="COLOR:#2b91af;"&gt;ObjectModel&lt;/span&gt;)FormState[&lt;span style="COLOR:#a31515;"&gt;&amp;quot;ObjectModel&amp;quot;&lt;/span&gt;]; }&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;mso-fareast-language:EN-CA;"&gt;}&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;This assumes you have initialized &lt;/font&gt;&lt;span style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;mso-fareast-language:EN-CA;"&gt;FormState[&lt;span style="COLOR:#a31515;"&gt;&amp;quot;ObjectModel&amp;quot;&lt;/span&gt;] &lt;/span&gt;&lt;font face="Calibri" size="3"&gt;to an instance of your OM class, for example, during OnLoad().&lt;/font&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Important: if you are using InfoPath 2007 OM, you need to mark both your business logic and the OM assemblies with the &lt;/font&gt;&lt;span style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;mso-fareast-language:EN-CA;"&gt;[assembly: &lt;span style="COLOR:#2b91af;"&gt;AllowPartiallyTrustedCallers&lt;/span&gt;()]&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;attribute.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=24679" width="1" height="1"&gt;</description></item><item><title>Conditional Shredding in DBXL</title><link>http://www.infopathdev.com/blogs/david/archive/2007/10/17/conditional-shredding-in-dbxl.aspx</link><pubDate>Wed, 17 Oct 2007 15:35:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:23781</guid><dc:creator>davidair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=23781</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2007/10/17/conditional-shredding-in-dbxl.aspx#comments</comments><description>&lt;p&gt;The DBXL shredding allows mapping the data fields of each saved document into a database table. But what if we do not want all data to be mapped? It turns out that one can leverage the power of XPath to create arbitrary conditions on when the shredding happens.&lt;/p&gt;
&lt;p&gt;The way DBXL shredding works is as follows: first the mapping XPath is executed, then if it results in a nodeset it is inserted into the database. So in order to prevent shredding, simply provide an xpath that does not evaluate to a nodeset! To ensure that the entire document does not get shredded into a table based on some condition, set that condition on the very top xpath, the one that maps to the table.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Here is a specific example. Consider a very simple solution with two fields: &amp;quot;data&amp;quot; and a Boolean &amp;quot;shred&amp;quot; that specifies whether or not we want to shred the data for that particular document:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;img src="http://www.infopathdev.com/photos/blog_pictures/images/23775/original.aspx" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Assume a table named ConditionalShredding exists in the database, one that contains a docid column and a column for the data:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;img src="http://www.infopathdev.com/photos/blog_pictures/images/23776/original.aspx" alt="" /&gt;&lt;br /&gt;Usually, when mapping to this table, one would map /my:myFields to the ConditionalShredding table, DBXL::docId special value to the docId column and the my:data field to the data column. With conditional shredding, it&amp;#39;s all the same, only you specify the condition on the root node:&lt;br /&gt;/my:myFields[my:shred = &amp;#39;true&amp;#39;]&lt;br /&gt;Now only documents which have my:shred set to true will shred into the ConditionalShredding database even though all documents will still be stored in DBXL! Here is a screenshot of the complete mapping for this example:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;img src="http://www.infopathdev.com/photos/blog_pictures/images/23777/original.aspx" alt="" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Note: if using a condition on the root node, the current version of DBXL can no longer detect that a child node is under the root path. This just means that you have to type all the column xpaths in manually. However, there is a trick to make this easier:&lt;br /&gt;First, do all of your mapping as you would usually do it, and only then add the condition to the root node, as the very last step.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=23781" width="1" height="1"&gt;</description></item><item><title>How to migrate complex solutions using the Migration Tool</title><link>http://www.infopathdev.com/blogs/david/archive/2007/09/06/how-to-migrate-complex-solutions-using-the-migration-tool.aspx</link><pubDate>Thu, 06 Sep 2007 06:48:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:22896</guid><dc:creator>davidair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=22896</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2007/09/06/how-to-migrate-complex-solutions-using-the-migration-tool.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;a class="" href="http://www.infopathdev.com/blogs/david/archive/2007/08/30/automating-dbxl-tasks-with-the-dbxl-migration-tool.aspx"&gt;In a previous blog post I have introduce the DBXL Migration Tool&lt;/a&gt; that allowed automating many DBXL operations. Today I will outline a general approach for migrating complex solutions involving multiple document types (i.e. InfoPath Templates) and database tables.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;The Migration Tool typically works with the following folder structure:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Samples&lt;br /&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;i&gt;DocTypeName&lt;/i&gt;&lt;br /&gt;&lt;span style="mso-tab-count:2;"&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;&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;&amp;nbsp; &lt;/span&gt;mapping.xml&lt;br /&gt;&lt;span style="mso-tab-count:2;"&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;&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;&amp;nbsp; &lt;/span&gt;install.sql&lt;br /&gt;&lt;span style="mso-tab-count:2;"&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;&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;&amp;nbsp; &lt;/span&gt;SampleDocs&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;(In the example scenario that comes with the tool, the full path is C:\Temp\Samples\&lt;i&gt;DocType&lt;/i&gt;)&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;While both mapping.xml and SampleDocs are automatically created by the export runs, the install.sql has to be created manually. We will discuss how this is done as we go through the migration process. This process can be broken up into logical steps:&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font face="Cambria" color="#4f81bd" size="4"&gt;1. Analyze your solution&lt;/font&gt;&lt;/h2&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Suppose you need to migrate a Timecards solution. The first step is to edit the Timecard configuration in DBXL and to inspect what tables it is being shred into. Let&amp;#39;s say that Timecards shred into two tables: Hours and WorkItems.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;The second step is to figure out the dependencies. For this, design the form in InfoPath Designer and inspect the secondary data sources. In a typical DBXL solution, data connections such as QueryDocuments are indicative of a dependency. Verify the web service arguments to find out what the doctypes we depend upon are.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Finally, the third step is to repeat the same process for all the doctypes we&amp;#39;ve found in the step 3.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;When done, you will end up with a sort of a Solution Manifest (you can create a text file for convenience, for example) that will list all doctypes and dependencies. For example, in the Timecard case this could be:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Main Document Type: &lt;strong&gt;Timecard&lt;/strong&gt;&lt;br /&gt;Shreds into: &lt;em&gt;Hours&lt;/em&gt;, &lt;em&gt;WorkItems&lt;/em&gt;&lt;br /&gt;Depends on: &lt;strong&gt;TimecardConfig&lt;/strong&gt;&lt;br /&gt;Depends on: &lt;strong&gt;Employees&lt;/strong&gt;&lt;br /&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;Shreds into: &lt;em&gt;Employees&lt;/em&gt;&lt;br /&gt;Depends on: &lt;strong&gt;Projects&lt;/strong&gt;&lt;br /&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;Shreds into: &lt;em&gt;Projects&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font face="Cambria" color="#4f81bd" size="4"&gt;2. Create SQL scripts&lt;/font&gt;&lt;/h2&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Now that you know what your solution is composed of, it is time to create the SQL scripts. If you are lucky you already have them around, otherwise you&amp;#39;ll need to re-create them. The easiest way to do so is by using the SQL Server Management Studio. Create one install.sql file per doctype that creates all the tables this doctype needs. Place the SQL scripts in the locations where the Migration Tool will drop the mappings and actual documents. In our example, those will be:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;C:\Temp\Samples\&lt;strong&gt;Timecard&lt;/strong&gt;\install.sql – contains SQL code to create &lt;em&gt;Hours&lt;/em&gt; and &lt;em&gt;WorkItems&lt;/em&gt; tables&lt;br /&gt;C:\Temp\Samples\&lt;strong&gt;Employees&lt;/strong&gt;\ install.sql – contains SQL code to the &lt;em&gt;Employees &lt;/em&gt;table&lt;br /&gt;C:\Temp\Samples\&lt;strong&gt;Projects&lt;/strong&gt;\ install.sql – contains SQL code to create the &lt;em&gt;Projects&lt;/em&gt; table&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font face="Cambria" color="#4f81bd" size="4"&gt;3. Configure the tool&lt;/font&gt;&lt;/h2&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Configure the Migration Tool to export the four document types (&lt;strong&gt;Timecard&lt;/strong&gt;, &lt;strong&gt;TimecardConfig&lt;/strong&gt;, &lt;strong&gt;Employees&lt;/strong&gt; and &lt;strong&gt;Projects&lt;/strong&gt;) along with their documents into C:\Temp\Samples (see the previous blog post for more details)&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font face="Cambria" color="#4f81bd" size="4"&gt;4. Run the tool - export&lt;/font&gt;&lt;/h2&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Execute the tool with the Export run. This should export all the data you need.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Caveat: Often enough, complex solutions shred into a separate database which might not exist on the target DBXL machine. Because of this, install.sql scripts will fail to run. To solve this problem, create a fake doctype called ensured in the Samples folder and put an install.sql script (without the mapping). The code in it could look like this:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;IF NOT EXISTS&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;( &lt;span style="COLOR:blue;"&gt;SELECT &lt;/span&gt;* &lt;span style="COLOR:blue;"&gt;FROM &lt;/span&gt;sys.databases &lt;span style="COLOR:blue;"&gt;WHERE name &lt;/span&gt;= &lt;span style="COLOR:#a31515;"&gt;&amp;#39;&lt;i&gt;YourDB&lt;/i&gt;&amp;#39; &lt;/span&gt;) &lt;span style="COLOR:blue;"&gt;CREATE DATABASE &lt;/span&gt;&lt;i&gt;YourDB&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;GO&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;USE &lt;/span&gt;&lt;i&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;YourDB&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;;&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;IF NOT EXISTS &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;(&lt;span style="COLOR:blue;"&gt;SELECT &lt;/span&gt;* &lt;span style="COLOR:blue;"&gt;FROM &lt;/span&gt;dbo.sysusers &lt;span style="COLOR:blue;"&gt;where name&lt;/span&gt;=&lt;span style="COLOR:#a31515;"&gt;&amp;#39;NT AUTHORITY\NETWORK SERVICE&amp;#39;&lt;/span&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;BEGIN&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;CREATE USER &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;[NT AUTHORITY\NETWORK SERVICE] &lt;span style="COLOR:blue;"&gt;FOR &lt;/span&gt;LOGIN [NT AUTHORITY\NETWORK SERVICE] &lt;span style="COLOR:blue;"&gt;WITH &lt;/span&gt;DEFAULT_SCHEMA=[dbo]&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;EXEC &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;sp_addrolemember N&lt;span style="COLOR:#a31515;"&gt;&amp;#39;db_datareader&amp;#39;&lt;/span&gt;, N&lt;span style="COLOR:#a31515;"&gt;&amp;#39;NT AUTHORITY\NETWORK SERVICE&amp;#39;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;EXEC &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;sp_addrolemember N&lt;span style="COLOR:#a31515;"&gt;&amp;#39;db_datawriter&amp;#39;&lt;/span&gt;, N&lt;span style="COLOR:#a31515;"&gt;&amp;#39;NT AUTHORITY\NETWORK SERVICE&amp;#39;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;END&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-bidi-language:HE;mso-no-proof:yes;"&gt;GO&lt;/span&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;h2 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font face="Cambria" color="#4f81bd" size="4"&gt;5. Reconfigure the tool&lt;/font&gt;&lt;/h2&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Configure the Migration Tool to import the four document types along with their mappings. Make sure that you pass the correct DB connection striong to the ImportMapping method!&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;h2 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font face="Cambria" color="#4f81bd" size="4"&gt;6. Run the tool - import&lt;/font&gt;&lt;/h2&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Execute the tool with the Import run. This should complete the migration by importing all the data into the new DBXL instance. Voila!&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=22896" width="1" height="1"&gt;</description></item><item><title>Automating DBXL tasks with the DBXL Migration Tool</title><link>http://www.infopathdev.com/blogs/david/archive/2007/08/30/automating-dbxl-tasks-with-the-dbxl-migration-tool.aspx</link><pubDate>Thu, 30 Aug 2007 04:29:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:22778</guid><dc:creator>davidair</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=22778</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2007/08/30/automating-dbxl-tasks-with-the-dbxl-migration-tool.aspx#comments</comments><description>&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Two commonly requested features for Qdabra DBXL are automatically populating the database and migrating content from one site to another. We have developed a tool that allows you to do both.&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The DBXL Document Deployer is an XML-driven, command-line tool with pluggable architecture that is simple to configure and that can automate many operations you&amp;#39;d typically do manually via the DBXL Administration Tool (also known as DAT). A Document Deployer plug-in called the MigrationTool allows you to easily export document types along with their settings and documents from a DBXL instance and then subsequently re-import them into another one.&lt;/font&gt;&lt;/font&gt; 
&lt;h2 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font size="4"&gt;&lt;font color="#4f81bd"&gt;&lt;font face="Cambria"&gt;Getting Started&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font face="Calibri" size="3"&gt;Download the tool here: &lt;a href="http://www.infopathdev.com/files/folders/document_deployer/default.aspx"&gt;http://www.infopathdev.com/files/folders/document_deployer/default.aspx&lt;/a&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The first step is to configure the tool to point to your local DBXL. Do this by selecting &lt;b&gt;Programs/Qdabra DBXL Migration Tool/Configure&lt;/b&gt; from your start menu, changing the value of DbxlRoot to your local instance and saving the configuration file.&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The Document Deployer tool uses XML Scenario files that define the actions that need to be executed. Each scenario file is split into two sections: the complex ActionDefinitions part that defines various DBXL actions and the Runs section which invokes those actions.&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Defining action definitions can be a daunting task but do not worry, you can do a lot with the existing sample action definitions that ship with Document Deployer! &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;To start the Document Deployer shell, select &lt;b&gt;Programs/Qdabra DBXL Migration Tool/DBXL Migration Tool&lt;/b&gt;.&lt;/font&gt;&lt;/font&gt; 
&lt;h3 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font size="3"&gt;&lt;font color="#4f81bd"&gt;&lt;font face="Cambria"&gt;Here are a few examples of what you can do:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;ol style="MARGIN-TOP:0cm;"&gt;
&lt;li class="MsoNormal" style="MARGIN:0cm 0cm 10pt;mso-list:l1 level1 lfo2;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Create sample taxonomy for the QdCatalogBase document type that ships with DBXL 2.1:&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;i&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;DocumentDeployer.exe Scenarios\QdCatBaseTaxonomy.xml CreateTaxonomy&lt;/font&gt;&lt;/font&gt;&lt;/i&gt;&lt;/b&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;Note: taxonomies are used to browse forms via the QdCatalogBase taskpane.&lt;/i&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;ol style="MARGIN-TOP:0cm;" start="2"&gt;
&lt;li class="MsoNormal" style="MARGIN:0cm 0cm 10pt;mso-list:l1 level1 lfo2;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Deploy sample documents for the QdCatalogBase document type:&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;i&gt;&lt;span style="mso-ansi-language:FR-CA;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;DocumentDeployer.exe Scenarios\DeployQdCatBaseInstances.xml PopulateCatalogBase&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; 
&lt;ol style="MARGIN-TOP:0cm;" start="3"&gt;
&lt;li class="MsoNormal" style="MARGIN:0cm 0cm 10pt;mso-list:l1 level1 lfo2;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Publish a new document type that contains pictures:&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;i&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;DocumentDeployer.exe Scenarios\DeployPictureForm.xml PublishPictures&lt;/font&gt;&lt;/font&gt;&lt;/i&gt;&lt;/b&gt; 
&lt;ol style="MARGIN-TOP:0cm;" start="4"&gt;
&lt;li class="MsoNormal" style="MARGIN:0cm 0cm 10pt;mso-list:l1 level1 lfo2;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Bulk deployment of documents with pictures (requires a previous PublishPictures deployment, requires Vista):&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;i&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;DocumentDeployer.exe Scenarios\DeployPictureForm.xml BulkDeploy&lt;/font&gt;&lt;/font&gt;&lt;/i&gt;&lt;/b&gt; 
&lt;ol style="MARGIN-TOP:0cm;" start="5"&gt;
&lt;li class="MsoNormal" style="MARGIN:0cm 0cm 10pt;mso-list:l1 level1 lfo2;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Export the QdCatalogBase document type and all its documents&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;i&gt;&lt;span style="mso-ansi-language:FR-CA;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;DocumentDeployer.exe Scenarios\Migrate.xml ExportCatBase&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; 
&lt;ol style="MARGIN-TOP:0cm;" start="6"&gt;
&lt;li class="MsoNormal" style="MARGIN:0cm 0cm 10pt;mso-list:l1 level1 lfo2;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Export the QdCatalogBase document type, all its documents and the complete taxonomy&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;span style="mso-ansi-language:FR-CA;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;DocumentDeployer.exe Scenarios\Migrate.xml ExportFullCatBase&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;If you want to achieve other tasks either create a new scenario file or modify an existing one. Mind you that you can import action definitions from other scenario files without having to copy them over! See Scenarios\Migrate.xml for an example.&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;DocumentDeployer comes with two documentation files (available from the Start menu via &lt;b&gt;Programs/Qdabra DBXL Migration Tool&lt;/b&gt;) that contain more details on the tool itself and the MigrationTool plug-in.&lt;/font&gt;&lt;/font&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;h2 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font size="4"&gt;&lt;font color="#4f81bd"&gt;&lt;font face="Cambria"&gt;List of all Scenario files and their Action Definitions&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;
&lt;h3 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font size="3"&gt;&lt;font color="#4f81bd"&gt;&lt;font face="Cambria"&gt;QdCatBaseTaxonomy.xml&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;This scenario defines actions that can populate the taxonomy for the qForm solution that ships as part of DBXL 2.1. It contains the following action definitions:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;AddHierarchy: adds a hierarchy to a specified doctype&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;AddCategory: adds a category for a specified hierarchy&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;ChainCategory: puts one category under another&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;EnumerateDocumentIds: lists documents matching specific criteria&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;RemoveEnumeratedDocuments: removes listed documents&lt;/font&gt;&lt;/font&gt; 
&lt;h3 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font size="3"&gt;&lt;font color="#4f81bd"&gt;&lt;font face="Cambria"&gt;DeployQdCatBaseInstances.xml&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;This scenario defines actions that can create instances of the qForm solution and accomplish complex tasks such as tagging documents and assigning workflow. It contains the following action definitions:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;GetHierarchy: gets the docid of a specific QdCatalogBase hierarchy&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;EnumerateDocumentIds: lists documents matching specific criteria&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;RemoveEnumeratedDocuments: removes listed documents&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;RemoveAllDocuments: removes all documents for a doctype&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;TagDocument: tags a document with a specified category&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;AddEmailFlow: adds e-mail flow to a document&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;AddCatalogBase: adds an instance of the qForm&lt;/font&gt;&lt;/font&gt; 
&lt;h3 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font size="3"&gt;&lt;font color="#4f81bd"&gt;&lt;font face="Cambria"&gt;Cleanup.xml&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;This scenario contains only one generic RemoveAllDocuments action definition that eases DBXL cleanup.&lt;/font&gt;&lt;/font&gt; 
&lt;h3 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font size="3"&gt;&lt;font color="#4f81bd"&gt;&lt;font face="Cambria"&gt;DeployPictureForm.xml&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;This scenario demonstrates the use of compile-on-the-fly plugins and bulk deployment. It contains the following action definitions:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;UploadDoctype: uploads a hardcoded doctype (can be modified to be made more generic)&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;AddPictureDocument: uploads one document with a base64-encoded image&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;BulkDeploy: uses an external plug-in to upload all sample pictures (requires Vista to work as-is)&lt;/font&gt;&lt;/font&gt; 
&lt;h3 style="MARGIN:10pt 0cm 0pt;"&gt;&lt;font size="3"&gt;&lt;font color="#4f81bd"&gt;&lt;font face="Cambria"&gt;MigrateCore.xml&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;This scenario defines action definitions for the MigrationTool plugin and allows to export/import documents and doctypes. It contains the following action definitions:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;ExportDocType: exports a specified doctype to a given folder&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;ListDocumentsForDoctype: enumerates all documents for the specified doctype&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;DownloadListedDocuments: exports documents listed by the previous action definition&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;ImportDocType: imports a specified doctype into DBXL&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;ImportDocuments: imports specified documents into DBXL&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;ExportDoctypeWithTaxonomyAndFlow: a complex action definition that can export a qForm-derived solution along with all its taxonomy and flow&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-bidi-font-family:Calibri;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font face="Calibri" size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;ImportDoctypeWithTaxonomyAndFlow: a complex action definition that can import a qForm-derived solution along with all its taxonomy and flow&lt;/font&gt;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Each of the scenario files (other than MigrateCore.xml) contains examples of how to use the actions. For document migration, the usage examples are in a separate file, Migrate.xml. This file also demonstrates how you can easily build your own scenario by importing action definitions from existing scenario files.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=22778" width="1" height="1"&gt;</description></item><item><title>Showing custom modal dialogs in managed code</title><link>http://www.infopathdev.com/blogs/david/archive/2007/08/29/showing-custom-modal-dialogs-in-managed-code.aspx</link><pubDate>Wed, 29 Aug 2007 22:34:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:22765</guid><dc:creator>davidair</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=22765</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2007/08/29/showing-custom-modal-dialogs-in-managed-code.aspx#comments</comments><description>&lt;p class="MsoNormal" style="margin:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;A common question is to how to show custom dialogs using the InfoPath 2007 OM. In InfoPath 2003 one could use the ShowModalDialog OM function that would take an arbitrary HTML and show it. Although you can still use the old IP2003 OM in InfoPath 2007, there is a better option if you are writing in managed code, namely WinForms!&lt;/font&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;If you are writing using IP2007 OM, you don&amp;#39;t need to do anything special, System.Windows.Forms has already been referenced for you and the &lt;i&gt;using&lt;/i&gt; statement has been included.&lt;/font&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;If you are writing using IP2003 OM, make sure to select &amp;quot;Add Reference&amp;quot; for your project and add System.Windows.Forms. Now you can start showing message boxes or create your custom winforms and show them when needed.&lt;/font&gt;&lt;/p&gt;
&lt;b&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Important: you cannot use WinForms when developing for InfoPath Forms Server. This is because no .NET code can run on the client and running WinForms on the server makes little sense. If you cannot use WinForms, make sure your compatibility is not set to &amp;quot;Browser&amp;quot; in Design Checker.&lt;/font&gt;&lt;/font&gt;&lt;/b&gt; 
&lt;h2 style="margin:10pt 0cm 0pt;"&gt;&lt;font color="#4f81bd" face="Cambria" size="4"&gt;Scenario 1 - Show a simple confirmation box&lt;/font&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;if&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; (&lt;span&gt;MessageBox&lt;/span&gt;.Show(&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &amp;quot;Are you sure&amp;quot;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp; &amp;quot;Question&amp;quot;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;MessageBoxButtons&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;.OKCancel) == &lt;span&gt;DialogResult&lt;/span&gt;.OK)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;{&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// do something&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin:0cm 0cm 10pt;"&gt;&lt;i&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Note: in IP2003 OM, you will have to prefix each WinForms type with &amp;quot;System.Windows.Forms&amp;quot;. You cannot simply add a &amp;quot;using&amp;quot; statement because WinForms types will clash with the IP2003 ones. However you could use aliases in your using, for example:&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:blue;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;using&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;"&gt; WF=System.Windows.Forms;&lt;/span&gt;&lt;/i&gt; 
&lt;/p&gt;&lt;h2 style="margin:10pt 0cm 0pt;"&gt;&lt;font color="#4f81bd" face="Cambria" size="4"&gt;Scenario 2 – Show a custom dialog box&lt;/font&gt;&lt;/h2&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Showing a custom dialog box is as simple as adding a new WinForm class to your project. Simply right-click the project in SolutionExplorer, select &amp;quot;Add&amp;quot; and then &amp;quot;Windows Form&amp;quot;.&lt;/font&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Here is source code example for a Message Box that can show/hide additional details:&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0cm 0cm 10pt;"&gt;&lt;a href="http://www.infopathdev.com/files/folders/examples/entry41183.aspx"&gt;http://www.infopathdev.com/files/folders/examples/entry41183.aspx&lt;/a&gt;&lt;/p&gt;&lt;font face="Calibri" size="3"&gt;To invoke it, call the following:&lt;/font&gt;
&lt;span style="font-size:10pt;color:blue;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;new&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span&gt;MessageBoxWithDetails&lt;/span&gt;(caption, message, details).ShowDialog();&lt;/span&gt; 
&lt;p class="MsoNormal" style="margin:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;br /&gt;MessageBoxWithDetails is good to show exception data with the stack trace going into details, for example.&lt;/font&gt;&lt;/p&gt;
&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=22765" width="1" height="1"&gt;</description></item><item><title>Implementing Cascading Dropdowns in Forms Server</title><link>http://www.infopathdev.com/blogs/david/archive/2007/08/23/implementing-cascading-dropdowns-in-forms-server.aspx</link><pubDate>Fri, 24 Aug 2007 00:15:00 GMT</pubDate><guid isPermaLink="false">033a2e2d-04e2-4a9d-be01-a4634161eefd:22605</guid><dc:creator>davidair</dc:creator><slash:comments>13</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infopathdev.com/blogs/david/rsscomments.aspx?PostID=22605</wfw:commentRss><comments>http://www.infopathdev.com/blogs/david/archive/2007/08/23/implementing-cascading-dropdowns-in-forms-server.aspx#comments</comments><description>&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The InfoPath Team Blog has a great article on how to implement cascading dropdowns in InfoPath Forms Server (IPFS) without writing code: &lt;/font&gt;&lt;a href="http://blogs.msdn.com/infopath/archive/2006/10/12/cascading-dropdowns-in-browser-forms.aspx"&gt;&lt;font size="3" face="Calibri"&gt;http://blogs.msdn.com/infopath/archive/2006/10/12/cascading-dropdowns-in-browser-forms.aspx&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt;. Unfortunately, this approach does not work in repeating context for the same reason Cascading Dropdowns are so hard in IPFS: there is no filtering on dropdown values.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;However, if you absolutely have to have those in a repeating table or a section, there is a workaround. It is not pretty because it requires you to write code (hence the form needs admin deployment which is much harder), it pollutes your main DOM and it is less performant (postbacks are needed any time you change the &amp;quot;master&amp;quot; dropdown). However it works!&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The approach relies on the fact that the data source for a dropdown can reside in the main DOM as well. Consider the following schema:&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;myFields&lt;br /&gt;&amp;nbsp; myRepeatingTable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myCategory&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mySubCategory&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;There are two dropdowns in the repeating table, one bound to myCategory and one to mySubCategory. If the values for the second dropdown come from a secondary data source, they will be the same for all rows which is obviously not desired. However, adding the source under myRepeatingTable solves the problem:&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;myFields&lt;br /&gt;&amp;nbsp; myRepeatingTable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myCategory&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mySubCategory&lt;br /&gt;&lt;b&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mySubCategoryValues&lt;/b&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;Now all you need to do is to bind the second dropdown values to mySubCategoryValues and then write an OnChange handler for myCategory to modify those dynamically.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;You can find a fully functional example here:&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;&lt;a href="http://www.infopathdev.com/files/folders/examples/entry41178.aspx"&gt;http://www.infopathdev.com/files/folders/examples/entry41178.aspx&lt;/a&gt;&amp;nbsp;&lt;/font&gt;&lt;a href="http://www.infopathdev.com/files/folders/community/entry38234.aspx"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="MARGIN:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The zip file contains the ready-to-deploy XSN as well as the source code.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.infopathdev.com/aggbug.aspx?PostID=22605" width="1" height="1"&gt;</description><category domain="http://www.infopathdev.com/blogs/david/archive/tags/server/default.aspx">server</category><category domain="http://www.infopathdev.com/blogs/david/archive/tags/cascading/default.aspx">cascading</category></item></channel></rss>