<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Microsoft Business Connectivity Services Team Blog</title><link>http://blogs.msdn.com/b/bcs/</link><description /><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>BCS Artifact Generator</title><link>http://blogs.msdn.com/b/bcs/archive/2010/06/04/bcs-artifact-generator.aspx</link><pubDate>Fri, 04 Jun 2010 00:23:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10019757</guid><dc:creator>bcsbauth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=10019757</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/06/04/bcs-artifact-generator.aspx#comments</comments><description>&lt;p&gt;Chances are you’ve already read Brad Stevenson’s post &lt;a href="http://blogs.msdn.com/bcs/archive/2009/11/12/types-of-solutions.aspx"&gt;Types of Solutions&lt;/a&gt; and you’re interested in building a BCS solution.&lt;/p&gt;  &lt;p&gt;If you’ve read my post on the &lt;a href="http://blogs.msdn.com/bcs/archive/2010/04/25/bcs-solution-packaging-tool.aspx"&gt;BCS Solution Packaging Tool&lt;/a&gt;, perhaps you’ve already tried to build and package a solution yourself.&lt;/p&gt;  &lt;p&gt;To help out developers and power users we’ve created another new tool called the &lt;b&gt;BCS Artifact Generator&lt;/b&gt; which will greatly help you get started building working solutions, which you can then customize however you’d like. &lt;/p&gt;  &lt;p&gt;To use the tool simply select your BDC Model (see Lionel Robinson’s post &lt;a href="http://blogs.msdn.com/bcs/archive/2010/01/28/bcs-team-channel-creating-an-external-content-type-in-sharepoint-designer-2010.aspx"&gt;Creating an External Content Type in SharePoint Designer 2010&lt;/a&gt; for help creating a BDC Model), give your solution a name, then follow the wizard which guides you through picking and choosing how your solution will look in Outlook. When you click “Generate” the tool will produce a folder containing all of the files necessary to run a BCS solution.&lt;/p&gt;  &lt;p&gt;You can then point the &lt;b&gt;Solution Packaging Tool&lt;/b&gt; at this folder to package and deploy your solution to Outlook, all in a matter of minutes.&lt;/p&gt;  &lt;p&gt;You can &lt;a href="http://code.msdn.microsoft.com/odcsps14bcsgnrtrtool"&gt;download the free Artifact Generator tool from MSDN Code Gallery&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Also, be sure to &lt;a href="http://code.msdn.microsoft.com/odcsps14bcspkgtool"&gt;download the free Solution Packaging Tool, also from MSDN Code Gallery&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-29-04-metablogapi/8032.clip_5F00_image002_5F00_1D14534C.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-29-04-metablogapi/4745.clip_5F00_image002_5F00_thumb_5F00_47ECB75E.jpg" width="544" height="427" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Creating a Declarative Solution for Outlook&lt;/h4&gt;  &lt;p&gt;To create a declarative BCS solution in Outlook, you’ll do the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create the necessary &lt;b&gt;solution artifacts&lt;/b&gt; (see below for details)&lt;/li&gt;    &lt;li&gt;Put the artifacts in a &lt;b&gt;folder&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;Create a &lt;b&gt;BCS Package&lt;/b&gt; (a special type of VSTO ClickOnce package) using that folder - &lt;i&gt;Optional&lt;/i&gt;: put the BCS Package somewhere public (i.e. SharePoint) where your users can then go to deploy the solution&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Deploy&lt;/b&gt; the solution package to Outlook&lt;/li&gt;    &lt;li&gt;You’re done!&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Creating a BCS Package is done using the Solution Packaging Tool, which we’ve seen already. This post will examine the first step – creating the solution artifacts. We’ll show you how quickly and easily you can do this using the Artifact Generator tool.&lt;/p&gt;  &lt;h5&gt;What are the required artifacts?&lt;/h5&gt;  &lt;p&gt;To have a solution you’ll need the following three files at the very least:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee556378(office.14).aspx"&gt;BDC Model&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee819896(v=office.14).aspx"&gt;Solution Manifest (OIR.config file)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee819875(v=office.14).aspx"&gt;Subscription(s)&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Having these three artifacts will allow you to create and deploy a solution in Outlook. In addition, your solution can contain the following three customizations:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;A) A custom item &lt;b&gt;Taskpane&lt;/b&gt; (item C in the screenshot below)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;B) A custom item &lt;b&gt;Form Region&lt;/b&gt; (item D in the screenshot below)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;C) A custom &lt;b&gt;ribbon&lt;/b&gt; containing item &lt;b&gt;action buttons&lt;/b&gt; (item B in the screenshot below)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The following screenshot shows a declarative solution and each of the three aforementioned customizations:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-29-04-metablogapi/8623.clip_5F00_image004_5F00_35A3F09C.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-29-04-metablogapi/5482.clip_5F00_image004_5F00_thumb_5F00_074A6AEF.jpg" width="544" height="328" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To add a &lt;a href="http://msdn.microsoft.com/en-us/library/ff394561(v=office.14).aspx"&gt;custom Taskpane&lt;/a&gt; to your solution you’ll need each of the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;a) &lt;/b&gt;&lt;b&gt;InfoPath Form [.xsn]&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Layout file [.xml]&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;c) A few lines of XML added to the Solution Manifest&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To add a &lt;a href="http://msdn.microsoft.com/en-us/library/ee819887(v=office.14).aspx"&gt;custom Form Region&lt;/a&gt; to your solution you’ll need each of the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;a) &lt;/b&gt;&lt;b&gt;Office Form Storage File [.ofs]&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Form Region Manifest [.xml]&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;c) A few lines of XML added to the Solution Manifest&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To add a &lt;a href="http://msdn.microsoft.com/en-us/library/ee819895(v=office.14).aspx"&gt;custom ribbon tab&lt;/a&gt; with action buttons to your solution you’ll need each of the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Ribbon definition file [.xml]&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) A few lines of XML added to the Solution Manifest&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;Using the Artifact Generator&lt;/h4&gt;  &lt;p&gt;You can now use the Artifact Generator to create most of these files automatically:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Solution Manifest (including the additional lines needed for each customization)&lt;/li&gt;    &lt;li&gt;Subscription(s)&lt;/li&gt;    &lt;li&gt;Layout file&lt;/li&gt;    &lt;li&gt;Form Region Manifest&lt;/li&gt;    &lt;li&gt;Ribbon definition file&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Before using the tool, be sure to create the following files if you’d like to include them for use:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;BDC Model&lt;/li&gt;    &lt;li&gt;[Optional] InfoPath form (to show item details in the taskpane)&lt;/li&gt;    &lt;li&gt;[Optional] Office Form Storage file (to customize the added form region)&lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Steps to use the Artifact Generator&lt;/h5&gt;  &lt;ol&gt;   &lt;li&gt;Give your solution a name&lt;/li&gt;    &lt;li&gt;Import the BDC Model&lt;/li&gt;    &lt;li&gt;Click “Next”&lt;/li&gt;    &lt;li&gt;You can customize each of the External Content Types (ECT) that are mapped to Outlook item types by clicking “Customize” (see below for customization options):&lt;/li&gt;    &lt;/ol&gt;&lt;ol&gt;     &lt;li&gt;First, you can change the name that is displayed for that item.&lt;/li&gt;      &lt;li&gt;You can also change the icon that is displayed for that item.&lt;/li&gt;      &lt;li&gt;Click “Next”.&lt;/li&gt;      &lt;li&gt;For the ECT fields (i.e. “Product Serial Number”) that aren’t mapped to regular Outlook fields (like “First Name”, “Phone Number”, etc.), a form region will be automatically generated for your solution. You can also create and customize this region yourself by &lt;a href="http://msdn.microsoft.com/en-us/library/ee819887(v=office.14).aspx"&gt;creating an Office Form Storage file&lt;/a&gt; and selecting to use that file for this item.&lt;/li&gt;      &lt;li&gt;Click “Next”.&lt;/li&gt;      &lt;li&gt;If the External Content Type has an association (&lt;a href="http://msdn.microsoft.com/en-us/library/ee348594.aspx"&gt;in the BDC Model&lt;/a&gt;) you can show those associated items in a list on a taskpane (i.e. when you open a customer contact, it will show the orders that the customer has placed).&lt;/li&gt;      &lt;li&gt;You can also add an InfoPath form which will show the field details for each item you select in that list. First &lt;a href="http://msdn.microsoft.com/en-us/library/ee554886(v=office.14).aspx"&gt;create and customize the InfoPath form&lt;/a&gt; and select it for use in the wizard for this item.&lt;/li&gt;      &lt;li&gt;Click “Next”.&lt;/li&gt;      &lt;li&gt;To add a ribbon for the item which can have action buttons that perform custom actions for the item, click “Add a custom action” and then choose a name for the ribbon tab and for the ribbon group label where the button appears.&lt;/li&gt;      &lt;li&gt;By default the Artifact Generator will help you create one action button to start with. You can easily edit the Ribbon definition file later to add more buttons. This default button is a “URL Action” type of button, which opens up a URL in the browser based on a parameter value for that item. Enter a URL (be sure to add “{0}” in the URL where the value should go) and select a field to use as that parameter.&lt;/li&gt;      &lt;li&gt;Click “Finish”.&lt;/li&gt;   &lt;/ol&gt;    &lt;ul&gt;&lt;li&gt;Click “Generate artifacts”.&lt;/li&gt;    &lt;li&gt;A folder containing these newly generated artifacts will be created at the same location of the tool itself. The folder will also open up, displaying the artifacts.&lt;/li&gt;   &lt;/ul&gt;&lt;p&gt;Then, use the BCS Solution Packaging Tool to select this folder and create a new solution package to be used for installation and deployment of the solution. Be sure to select “Outlook Intermediate Declarative Solution” as the solution type.&lt;/p&gt;  &lt;p&gt;You should now have created an Intermediate Declarative Solution in Outlook!&lt;/p&gt;  &lt;h3&gt;Data Solution&lt;/h3&gt;  &lt;p&gt;If you’ve read my post &lt;a href="http://blogs.msdn.com/bcs/archive/2010/02/19/overview-of-bcs-advanced-code-based-solutions.aspx"&gt;Overview of BCS Advanced Code-Based Solutions&lt;/a&gt; or the MSDN article &lt;a href="http://msdn.microsoft.com/en-us/library/ff394635.aspx"&gt;Creating Advanced Code-Based Solutions Using Business Connectivity Services&lt;/a&gt; you’re aware that you can create Office Add-Ins using Visual Studio which can integrate with BCS and external data.&lt;/p&gt;  &lt;p&gt;These solutions need metadata and subscriptions on the machine running the solution, which dictate synchronization of the external data between the client and the external system. This metadata can be set up on that machine by having a user deploy a Simple Solution to &lt;a href="http://blogs.msdn.com/bcs/archive/2009/12/04/bcs-team-channel-external-lists-in-outlook.aspx"&gt;Outlook&lt;/a&gt; or &lt;a href="http://blogs.msdn.com/bcs/archive/2009/12/10/external-lists-in-sharepoint-workspace.aspx"&gt;SharePoint Workspace&lt;/a&gt;, but this requires additional steps that each user of your solution would have to perform initially.&lt;/p&gt;  &lt;p&gt;The ideal and recommended approach is to use a complementary Data Solution to go with your Office Add-In, which will set up the metadata and subscriptions on the user’s machine automatically.&lt;/p&gt;  &lt;p&gt;A Data Solution requires the following files:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;BDC Model&lt;/li&gt;    &lt;li&gt;Subscription(s)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Again, you can either &lt;a href="http://msdn.microsoft.com/en-us/library/ee819875(v=office.14).aspx"&gt;create the subscriptions by hand&lt;/a&gt; or use the Artifact Generator to create them for you. Simply import your BDC Model to the Artifact Generator and click “Generate artifacts”. Then, use the Solution Packaging Tool to point to that folder and create a BCS Package of type “Data Solution for Office Add-In”.&lt;/p&gt;  &lt;p&gt;If the user deploys this solution and then deploys your Office Add-In, your add-in will be able to display and manipulate external BCS data.&lt;/p&gt;  &lt;p&gt;To try this out for yourself, check out the following: &lt;a href="http://code.msdn.microsoft.com/odcspbcsexceladdin"&gt;Business Connectivity Services Excel 2010 Add-In&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Thanks for reading, and enjoy the tool!&lt;/p&gt;  &lt;p&gt;Russell Palmer&lt;/p&gt;  &lt;p&gt;Program Manager&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10019757" width="1" height="1"&gt;</description></item><item><title>BCS Solutions in Outlook</title><link>http://blogs.msdn.com/b/bcs/archive/2010/06/04/bcs-solutions-in-outlook.aspx</link><pubDate>Fri, 04 Jun 2010 00:04:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10019743</guid><dc:creator>bcsbauth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=10019743</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/06/04/bcs-solutions-in-outlook.aspx#comments</comments><description>&lt;p&gt;If you’ve read Brad Stevenson’s post &lt;a href="http://blogs.msdn.com/bcs/archive/2009/11/12/types-of-solutions.aspx"&gt;Types of Solutions&lt;/a&gt; then you’re already familiar with the three types of BCS solutions:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Simple Out-Of-Box Solutions&lt;/li&gt;    &lt;li&gt;Intermediate Declarative Solutions&lt;/li&gt;    &lt;li&gt;Advanced Code-Based Solutions&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This post will discuss the different types of BCS solutions possible in Outlook 2010.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Simple solutions&lt;/b&gt; can be created using out-of-box capabilities, by simply clicking the “Connect to Outlook” button in the ribbon of a SharePoint External List.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-29-04-metablogapi/7827.clip_5F00_image002_5F00_33D1F6F5.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-29-04-metablogapi/7485.clip_5F00_image002_5F00_thumb_5F00_6BA43B18.jpg" width="524" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;At that point, a new folder will be displayed in Outlook. Clicking on the item type in that folder will display the external data items, previously seen in the External List, inside of Outlook either as a Contact, Post, Task or Appointment. See &lt;a href="http://blogs.msdn.com/bcs/archive/2009/12/04/bcs-team-channel-external-lists-in-outlook.aspx"&gt;External Lists in Outlook&lt;/a&gt; for an example.&lt;/p&gt;  &lt;p&gt;The fields that are unique to this External Content Type (i.e. “Customer ID Number”) that were not mapped to Outlook fields (such as First Name, Phone Number, Email, etc.) will be displayed in a standard auto-generated form region when opening up an item. All of the names and icons for the solution will be automatically selected.&lt;/p&gt;  &lt;p&gt;For developers that want to create a similar type of solution in Outlook, yet customize it to extend its capabilities and look more uniquely professional, an &lt;b&gt;intermediate declarative solution&lt;/b&gt; can be created for these needs. This will allow you to customize the:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Number of External Content Types that appear in the solution folder in Outlook&lt;/li&gt;    &lt;li&gt;Solution names and icons used&lt;/li&gt;    &lt;li&gt;Taskpane, which displays related items for External Content Types with associations&lt;/li&gt;    &lt;li&gt;Ribbon, which contains custom action ribbon buttons&lt;/li&gt;    &lt;li&gt;Form region, used to show the unique fields&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;In addition to these Simple and Intermediate solutions, developers can also create Advanced BCS solutions in Outlook with code, by creating an Outlook Office Add-In in Visual Studio 2010 and packaging it together with a BDC Model, subscriptions and a Solution Manifest in a BCS Solution Package.&lt;/p&gt;  &lt;p&gt;Let’s look a little closer at both the &lt;b&gt;Intermediate Declarative Solution&lt;/b&gt; and the &lt;b&gt;Advanced Code-Based Solution&lt;/b&gt;.&lt;/p&gt;  &lt;h3&gt;Intermediate Declarative Solution&lt;/h3&gt;  &lt;p&gt;To create an intermediate declarative solution:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create the required artifacts (see table below for details)&lt;/li&gt;    &lt;li&gt;Put the artifacts in a folder&lt;/li&gt;    &lt;li&gt;Create a BCS Package (a unique kind of VSTO ClickOnce package) from that folder&lt;/li&gt;    &lt;li&gt;Deploy the solution to Outlook&lt;/li&gt;    &lt;li&gt;You’re done!&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;To create the required artifacts, you can either:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Create them automatically using the &lt;a href="http://code.msdn.microsoft.com/odcsps14bcsgnrtrtool"&gt;BCS Artifact Generator tool&lt;/a&gt;, or&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Create them by hand, following the guide &lt;a href="http://msdn.microsoft.com/en-us/library/ee819909(v=office.14).aspx"&gt;Creating Intermediate Declarative Outlook Solutions Using Business Connectivity Services&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Be sure to check out the following resources as well:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee872309(v=office.14).aspx"&gt;Sample solution artifacts&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee872317(v=office.14).aspx"&gt;Solution artifact templates&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To package the required artifacts, you can either:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Use the &lt;a href="http://code.msdn.microsoft.com/odcsps14bcspkgtool"&gt;BCS Solution Packaging Tool&lt;/a&gt; with type “Outlook Intermediate Declarative Solution”, or&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Use the server APIs to package manually&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Here’s an example of what a custom intermediate declarative solution can look like in Outlook:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-29-04-metablogapi/4377.clip_5F00_image004_5F00_6B380823.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-29-04-metablogapi/6428.clip_5F00_image004_5F00_thumb_5F00_51D004E9.jpg" width="544" height="328" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The following table lists the required and optional artifacts:&lt;/p&gt;  &lt;table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none; mso-border-top-alt: solid #4f81bd 1.0pt; mso-border-top-themecolor: accent1; mso-border-bottom-alt: solid #4f81bd 1.0pt; mso-border-bottom-themecolor: accent1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class="MsoTableLightShadingAccent1" border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr style="height: 22pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;       &lt;td style="border-bottom: #4f81bd 1pt solid; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; height: 22pt; border-top: #4f81bd 1pt solid; border-right: medium none; padding-top: 0in; mso-border-top-themecolor: accent1; mso-border-bottom-themecolor: accent1" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 5" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #1f497d; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: text2"&gt;Component               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: #4f81bd 1pt solid; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; height: 22pt; border-top: #4f81bd 1pt solid; border-right: medium none; padding-top: 0in; mso-border-top-themecolor: accent1; mso-border-bottom-themecolor: accent1" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 1" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #1f497d; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: text2"&gt;Artifact               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: #4f81bd 1pt solid; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; height: 22pt; border-top: #4f81bd 1pt solid; border-right: medium none; padding-top: 0in; mso-border-top-themecolor: accent1; mso-border-bottom-themecolor: accent1" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 1" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #1f497d; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: text2"&gt;Details               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 0"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 68" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;BDC Model               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Metadata.bdcm             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Required; must have .bdcm file extension or be named exactly “metadata.xml”             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 1"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 4" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Subscription file(s)               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*Subscription.xml             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Required, one for each External Content Type; must be named as *Subscription.xml (i.e. “myCustomerSubscription.xml”)             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 2"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 68" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Solution Manifest               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;OIR.config             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Required; must be named OIR.config             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 3"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 4" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;OIR or layout resource file(s)               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*.resx             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Optional             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 4"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 68" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Outlook ribbon file(s)               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*.xml             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Optional             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 5"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 4" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Layout file(s)               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*.xml             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Optional             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 6"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 68" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;InfoPath form(s)               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*.xsn             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Optional             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 7"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 4" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Outlook form region(s)               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*.ofs             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Optional             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 8"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 68" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Form region manifest file(s)               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*.xml             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Optional             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 9"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 4" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Custom Ribbon Manger, Custom Action and Custom OBPart assembly               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*.dll             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Optional             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 10"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 68" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Outlook view definition(s)               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*.ovd             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Optional             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 11; mso-yfti-lastrow: yes"&gt;       &lt;td style="border-bottom: #4f81bd 1pt solid; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in; mso-border-bottom-themecolor: accent1" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 4" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Icon(s)               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: #4f81bd 1pt solid; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in; mso-border-bottom-themecolor: accent1" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*.ico, *.jpg, *.png             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: #4f81bd 1pt solid; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in; mso-border-bottom-themecolor: accent1" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Optional             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h3&gt;Advanced Code-Based Solution&lt;/h3&gt;  &lt;p&gt;To create an advanced code-based solution:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create the required artifacts (see table below for details)&lt;/li&gt;    &lt;li&gt;Create an Outlook Office 2010 Add-In using Visual Studio 2010&lt;/li&gt;    &lt;li&gt;Put the artifacts and Add-In DLL in a folder&lt;/li&gt;    &lt;li&gt;Create a BCS Package (a unique kind of VSTO ClickOnce package) from that folder&lt;/li&gt;    &lt;li&gt;Deploy the solution to Outlook&lt;/li&gt;    &lt;li&gt;You’re done!&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;To create the required artifacts, you can either:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Create them automatically using the &lt;a href="http://code.msdn.microsoft.com/odcsps14bcsgnrtrtool"&gt;BCS Artifact Generator tool&lt;/a&gt;, or&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Create them by hand&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To package the required artifacts, you can either:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Use the &lt;a href="http://code.msdn.microsoft.com/odcsps14bcspkgtool"&gt;BCS Solution Packaging Tool&lt;/a&gt; with type “Outlook Advanced Code-Based Solution (OIR)”, or&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Use the server APIs to package manually&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;p&gt;The following table lists the required and optional artifacts:&lt;/p&gt;  &lt;table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none; mso-border-top-alt: solid #4f81bd 1.0pt; mso-border-top-themecolor: accent1; mso-border-bottom-alt: solid #4f81bd 1.0pt; mso-border-bottom-themecolor: accent1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class="MsoTableLightShadingAccent1" border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr style="height: 22pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;       &lt;td style="border-bottom: #4f81bd 1pt solid; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; height: 22pt; border-top: #4f81bd 1pt solid; border-right: medium none; padding-top: 0in; mso-border-top-themecolor: accent1; mso-border-bottom-themecolor: accent1" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 5" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #1f497d; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: text2"&gt;Component               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: #4f81bd 1pt solid; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; height: 22pt; border-top: #4f81bd 1pt solid; border-right: medium none; padding-top: 0in; mso-border-top-themecolor: accent1; mso-border-bottom-themecolor: accent1" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 1" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #1f497d; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: text2"&gt;Artifact                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: #4f81bd 1pt solid; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; height: 22pt; border-top: #4f81bd 1pt solid; border-right: medium none; padding-top: 0in; mso-border-top-themecolor: accent1; mso-border-bottom-themecolor: accent1" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 1" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #1f497d; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: text2"&gt;Details                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 0"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 68" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;BDC Model               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Metadata.bdcm             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Required; must have .bdcm file extension or be named exactly “metadata.xml”             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 1"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 4" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Subscription file(s)               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*Subscription.xml             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Required, one for each External Content Type; must be named as *Subscription.xml (i.e. “myCustomerSubscription.xml”)             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 2"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 68" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Solution Manifest               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;OIR.config             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Required; must be named OIR.config             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 3"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 4" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;VSTO Add-In assembly                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*.dll             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Required             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 4"&gt;       &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 68" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;OIR or layout resource file(s)               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*.resx             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; background: #d3dfee; border-top: medium none; border-right: medium none; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 64" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Optional             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 5; mso-yfti-lastrow: yes"&gt;       &lt;td style="border-bottom: #4f81bd 1pt solid; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in; mso-border-bottom-themecolor: accent1" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-yfti-cnfc: 4" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Icon(s)               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: #4f81bd 1pt solid; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 143.55pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in; mso-border-bottom-themecolor: accent1" valign="top" width="191"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;*.ico, *.jpg, *.png             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: #4f81bd 1pt solid; border-left: medium none; padding-bottom: 0in; padding-left: 5.4pt; width: 152.8pt; padding-right: 5.4pt; border-top: medium none; border-right: medium none; padding-top: 0in; mso-border-bottom-themecolor: accent1" valign="top" width="204"&gt;         &lt;p style="line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class="MsoNormal"&gt;&lt;span style="color: #365f91; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-themecolor: accent1; mso-themeshade: 191"&gt;Optional             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h3&gt;BCS Solution Tools&lt;/h3&gt;  &lt;p&gt;For more information on the &lt;b&gt;BCS Solution Packaging Tool&lt;/b&gt; read the blog post &lt;a href="http://blogs.msdn.com/bcs/archive/2010/04/25/bcs-solution-packaging-tool.aspx"&gt;BCS Solution Packaging Tool&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-29-04-metablogapi/8407.clip_5F00_image006_5F00_386801AF.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-29-04-metablogapi/6825.clip_5F00_image006_5F00_thumb_5F00_634065C1.jpg" width="326" height="371" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For more information on the &lt;b&gt;BCS Artifact Generator&lt;/b&gt; see the blog post BCS Artifact Generator.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-29-04-metablogapi/7418.clip_5F00_image008_5F00_230A4C47.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-29-04-metablogapi/2211.clip_5F00_image008_5F00_thumb_5F00_42B9260F.jpg" width="372" height="293" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h3&gt;Further Reading&lt;/h3&gt;  &lt;p&gt;For more information check out the follow MSDN articles:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee906650.aspx"&gt;Types of Solutions You Can Create Using BCS&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff394635.aspx"&gt;Creating Advanced Code-Based Solutions Using Business Connectivity Services&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee819909(v=office.14).aspx"&gt;Creating Intermediate Declarative Outlook Solutions Using Business Connectivity Services&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff394455(v=office.14).aspx"&gt;Useful Resources for Creating an Intermediate Declarative Outlook Solution&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff394657(v=office.14).aspx"&gt;Frequently Asked Questions: Declarative Outlook Solution&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Thanks for reading!&lt;/p&gt;  &lt;p&gt;Russell Palmer&lt;/p&gt;  &lt;p&gt;Program Manager&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10019743" width="1" height="1"&gt;</description></item><item><title>How do I optimize backend synchronization?</title><link>http://blogs.msdn.com/b/bcs/archive/2010/05/13/how-do-i-optimize-backend-synchronization.aspx</link><pubDate>Thu, 13 May 2010 15:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10009437</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=10009437</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/05/13/how-do-i-optimize-backend-synchronization.aspx#comments</comments><description>&lt;P&gt;Business Connectivity Services (BCS) has a synchronization framework that uses a client cache to enable you to work with external data even when disconnected. &lt;/P&gt;
&lt;P&gt;In this post, we’ll discuss ways to optimize solutions to best use the synchronization framework client cache. We’ll be using the &lt;B&gt;Contoso Sales Manager&lt;/B&gt; sample solution presented in the previous post, &lt;A href="http://blogs.msdn.com/bcs/archive/2010/04/25/bcs-solution-packaging-tool.aspx" mce_href="http://blogs.msdn.com/bcs/archive/2010/04/25/bcs-solution-packaging-tool.aspx"&gt;&lt;B&gt;BCS Solution Packaging Tool&lt;/B&gt;&lt;/A&gt;. Please check that post for instructions on how to package and deploy the solution.&lt;/P&gt;
&lt;H4&gt;&lt;B&gt;How does the client cache work?&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;When a solution is deployed to an Office client, a process called BCSSync.exe contacts the external system directly and downloads the data into a per-user SQL CE database managed by the synchronization framework.&lt;/P&gt;
&lt;P&gt;Every client will be contacting the external system directly, so it’s really important to optimize your solution for offline use to minimize the load on the external system. &lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Working with Subscriptions&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;To determine what data will be brought to the client cache, solutions need to define subscription xml files. Each subscription file is responsible for defining how to request data from the external system.&lt;/P&gt;
&lt;P&gt;Subscriptions can have 3 types of items: Queries, Explicit Identities and Associations. Queries point to finders that will be executed against the external system to populate the cache, Explicit Identities are additional instances that are added individually to the subscription, and Associations are used to bring related instances. &lt;/P&gt;
&lt;P&gt;Here is the subscription file for &lt;B&gt;Contoso Sales Manager&lt;/B&gt; solution defining how to request data for the “Customers” external content type. &lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 1pt; PADDING-LEFT: 4pt; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 1pt; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt;
&lt;P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; MARGIN-BOTTOM: 0pt; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: red; FONT-SIZE: 9.5pt"&gt;version&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"&gt;"&lt;SPAN style="COLOR: blue"&gt;1.0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;encoding&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;utf-8&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;?&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Subscription&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: red; FONT-SIZE: 9.5pt"&gt;LobSystemInstanceName&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"&gt;"&lt;SPAN style="COLOR: blue"&gt;AdventureWorksContosoLOBInstance&lt;/SPAN&gt;"&amp;nbsp; &lt;BR&gt;&lt;SPAN style="COLOR: red"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;EntityNamespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;AdventureWorksContoso&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;EntityName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Customer&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;AdventureWorksContosoCustomerSubscription&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;View&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetCustomerById&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsCached&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;RefreshIntervalInMinutes&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;360&lt;/SPAN&gt;" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: red"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog"&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Queries&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Query&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: red; FONT-SIZE: 9.5pt"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"&gt;"&lt;SPAN style="COLOR: blue"&gt;AdventureWorksContosoCustomerQuery&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodInstanceName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetCustomers&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;DefaultDisplayName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Customer Read List&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;RefreshIntervalInMinutes&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;180&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;IsCached&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Enabled&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Queries&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Associations&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Association&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: red; FONT-SIZE: 9.5pt"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"&gt;"&lt;SPAN style="COLOR: blue"&gt;GetOrdersForCustomer&lt;/SPAN&gt;" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: red"&gt;MethodInstanceName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetOrdersForCustomer&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TargetSubscriptionName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;AdventureWorksContosoOrderHeaderSubscription&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TargetView&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetSalesOrderHeaderById&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LobSystemInstanceName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;AdventureWorksContosoLOBInstance&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RefreshIntervalInMinutes&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;60&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Associations&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Subscription&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;The subscription above has one query, which runs the “GetCustomers” Finder on the external content type. All Customer instances returned by the finder call will be cached locally on every client that has the solution installed. The refresh interval for the query is set to 180 minutes, so every 3 hours the finder will be executed and the local data will be refreshed on each client. &lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 1pt; PADDING-LEFT: 4pt; PADDING-RIGHT: 4pt; BACKGROUND: #eaf1dd; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 1pt; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: accent3; mso-background-themetint: 51"&gt;
&lt;P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BACKGROUND: #eaf1dd; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-background-themecolor: accent3; mso-background-themetint: 51" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;NOTE&lt;/B&gt;: When working with the client cache, it’s important to know that it performs best when the Finder view matches the SpecificFinder view. If the Finder returns a subset of the fields that the SpecificFinder returns, the synchronization framework is forced to call the SpecificFinder on every instance returned by the finder to populate all fields of the instance. If it’s not possible for the Finder and the SpecificFinder views to match, bulk stereotypes can be used to improve performance. Bulk stereotypes will be covered on a later post.&lt;/P&gt;&lt;/DIV&gt;
&lt;H4&gt;&lt;B&gt;Optimizing Subscriptions&lt;/B&gt;&lt;/H4&gt;
&lt;H5&gt;&lt;B&gt;&lt;B&gt;Explicit Identities&lt;/B&gt;&lt;/B&gt;&lt;/H5&gt;
&lt;P&gt;If you know exactly which items to synchronize, you can just add their identities to the subscription individually. This is a lot easier to do programmatically since you have to put the serialized identity on the subscription XML file.&lt;/P&gt;
&lt;P&gt;To get the serialized Identity, you need to instantiate an Identity object with the appropriate identifier values, and call its Serialize method. More information can be found at the&lt;B&gt; &lt;/B&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.businessdata.runtime.identity.serialize%28v=office.14%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.businessdata.runtime.identity.serialize%28v=office.14%29.aspx"&gt;&lt;B&gt;Identity.Serialize method page on MSDN&lt;/B&gt;&lt;/A&gt;. Once you have the Identity’s serialized string, you just need to add it in an “&amp;lt;Identity&amp;gt;” tag within the “&amp;lt;Identities&amp;gt;” tag, as will be shown later in the example.&lt;/P&gt;
&lt;H5&gt;&lt;B&gt;Filtering data&lt;/B&gt;&lt;/H5&gt;
&lt;P&gt;The obvious way to optimize synchronization is to reduce the amount of data that is downloaded by the client. The easiest way to do this is by using filters. The filters supported by the synchronization framework that can be used to reduce the number of items downloaded are Wildcard, Comparison and Limit filters.&lt;/P&gt;
&lt;P&gt;For example, you can use a Wildcard filter to download all employees whose names start with the letter “M” using “M*” as the filter value. Or you can select all customers that have their zip code equal to “98052” using a comparison filter. A limit filter can be used to limit the number of products to 100.&lt;/P&gt;
&lt;H5&gt;&lt;B&gt;Example&lt;/B&gt;&lt;/H5&gt;
&lt;P&gt;Here is an example of the subscription above with 11003 and 11020 as explicit identities and a filter to return only customer with CustumerIDs greater than 11050. &lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 1pt; PADDING-LEFT: 4pt; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 1pt; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt;
&lt;P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; MARGIN-BOTTOM: 0pt; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: red; FONT-SIZE: 9.5pt"&gt;version&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"&gt;"&lt;SPAN style="COLOR: blue"&gt;1.0&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;encoding&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;utf-8&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;?&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Subscription&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: red; FONT-SIZE: 9.5pt"&gt;LobSystemInstanceName&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"&gt;"&lt;SPAN style="COLOR: blue"&gt;AdventureWorksContosoLOBInstance&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EntityNamespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;AdventureWorksContoso&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;EntityName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Customer&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;AdventureWorksContosoCustomerSubscription&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;View&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetCustomerById&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsCached&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;RefreshIntervalInMinutes&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;360&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Identities&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Identity&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"&gt;i+yoAAA==&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Identity&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Identity&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"&gt;iDCsAAA==&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Identity&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Identities&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Queries&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Query&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: red; FONT-SIZE: 9.5pt"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"&gt;"&lt;SPAN style="COLOR: blue"&gt;AdventureWorksContosoCustomerQuery&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodInstanceName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetCustomers&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;DefaultDisplayName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Customer Read List&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;RefreshIntervalInMinutes&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;180&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;IsCached&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Enabled&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;FilterValues&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;FilterValue&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: red; FONT-SIZE: 9.5pt"&gt;FilterDescriptorName&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"&gt;"&lt;SPAN style="COLOR: blue"&gt;MinCustomerId&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;FilterIndex&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;0&lt;/SPAN&gt;" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;System.Int32&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;11050&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;FilterValue&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;FilterValues&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Query&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Queries&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Associations&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Association&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: red; FONT-SIZE: 9.5pt"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"&gt;"&lt;SPAN style="COLOR: blue"&gt;GetOrdersForCustomer&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MethodInstanceName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetOrdersForCustomer&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TargetSubscriptionName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;AdventureWorksContosoOrderHeaderSubscription&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TargetView&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;GetSalesOrderHeaderById&lt;/SPAN&gt;" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;LobSystemInstanceName&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;AdventureWorksContosoLOBInstance&lt;/SPAN&gt;" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;RefreshIntervalInMinutes&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;60&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Associations&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: #a31515; FONT-SIZE: 9.5pt"&gt;Subscription&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;&amp;gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;This subscription will only download the specified customers, as you can see in the image below.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/HowdoIoptimizebackendsynchronization_EE33/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/HowdoIoptimizebackendsynchronization_EE33/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/HowdoIoptimizebackendsynchronization_EE33/image_thumb_1.png" width=544 height=420 mce_src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/HowdoIoptimizebackendsynchronization_EE33/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The filters used by the subscription file have to be defined on the model, and the external system needs to support them, too. The model for the &lt;B&gt;Contoso Sales Manager&lt;/B&gt; solution and the AdventureWorks web service used by the solution were updated to support a comparison filter on the CustomerID field. The updated solution can be found in the &lt;A href="http://blogs.msdn.com/bcs/attachment/10009437.ashx" mce_href="http://blogs.msdn.com/bcs/attachment/10009437.ashx"&gt;package attached to this post&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 1pt; PADDING-LEFT: 4pt; PADDING-RIGHT: 4pt; BACKGROUND: #eaf1dd; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 1pt; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: accent3; mso-background-themetint: 51"&gt;
&lt;P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BACKGROUND: #eaf1dd; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; mso-background-themecolor: accent3; mso-background-themetint: 51" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;NOTE: &lt;/B&gt;The version number of the Customer external content type was increased on the updated solution. When editing the model manually, this is an important step to make sure our changes are not ignored during deployment. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;
&lt;H4&gt;&lt;B&gt;Recommended reading&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;To learn more about BCS client cache, navigate to &lt;A href="http://msdn.microsoft.com/en-us/library/ee556385%28office.14%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee556385%28office.14%29.aspx"&gt;&lt;B&gt;Understanding Business Connectivity Services Client Cache to Optimize Your Solutions&lt;/B&gt;&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;For more information on how to bring external data to Office client applications go to: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/bcs/archive/2009/12/04/bcs-team-channel-external-lists-in-outlook.aspx" mce_href="http://blogs.msdn.com/bcs/archive/2009/12/04/bcs-team-channel-external-lists-in-outlook.aspx"&gt;&lt;B&gt;BCS Team Channel: External Lists in Outlook&lt;/B&gt;&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/bcs/archive/2009/12/10/external-lists-in-sharepoint-workspace.aspx" mce_href="http://blogs.msdn.com/bcs/archive/2009/12/10/external-lists-in-sharepoint-workspace.aspx"&gt;&lt;B&gt;External Lists in SharePoint Workspace&lt;/B&gt;&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/bcs/archive/2009/12/14/bcs-team-channel-external-data-in-sharepoint-workspace.aspx" mce_href="http://blogs.msdn.com/bcs/archive/2009/12/14/bcs-team-channel-external-data-in-sharepoint-workspace.aspx"&gt;&lt;B&gt;BCS Team Channel: External Data in SharePoint Workspace&lt;/B&gt;&lt;/A&gt;. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;For more information on subscriptions and subscription files, see &lt;A href="http://msdn.microsoft.com/en-us/library/ee558389%28v=office.14%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee558389%28v=office.14%29.aspx"&gt;&lt;B&gt;What Is a Cache Subscription?&lt;/B&gt;&lt;/A&gt;.&lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Is that all?&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;Limiting the amount of data downloaded by the client is not always an option. For those cases, version field, Bulk Stereotypes and Last Id Seen filter are a great option. They will be covered in an upcoming post.&lt;/P&gt;
&lt;P&gt;- Rodrigo Silveira.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10009437" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-00-94-37/ContosoSalesManager-Filtered.zip" length="422819" type="application/x-zip-compressed" /></item><item><title>How do I leverage Secure Store from within my .Net Connectivity Assembly?</title><link>http://blogs.msdn.com/b/bcs/archive/2010/05/11/how-do-i-leverage-secure-store-from-within-my-net-connectivity-assembly.aspx</link><pubDate>Tue, 11 May 2010 15:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10009379</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=10009379</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/05/11/how-do-i-leverage-secure-store-from-within-my-net-connectivity-assembly.aspx#comments</comments><description>&lt;p&gt;With Database, Web Service and WCF connectors, there is one and only one external system. BCS understands how to connect to these external systems, and it supports Secure Store integration out-of-box for these connectors. Within a .NET assembly connector, the .NET assembly code can use zero, one or many external systems. Since BCS does not know what the .NET assembly code does, it does not support Secure Store integration out of box for the .NET assembly connector.&lt;/p&gt;  &lt;p&gt;Even though BCS does not have OOB support for Secure Store in .NET assembly connector, it provides two different mechanisms to leverage Secure Store within a .NET connectivity assembly. In the first mechanism (no-code approach) BCS does the heavy lifting of reading the credentials from secure store whereas in the second mechanism (code approach) .NET connectivity assembly needs to do the heavy lifting.&lt;/p&gt;  &lt;p&gt;This blog explains how both approaches are used.&lt;/p&gt;  &lt;h4&gt;No-code approach&lt;/h4&gt;  &lt;p&gt;As the name suggests, your .NET connectivity assembly does not directly interact with Secure Store. Using filters, it can utilize BCS to read the credentials from Secure Store and get the credentials as input parameters to the method. This approach is not unique to .NET assembly connector and can be used with Database, Web Service and WCF connectors.&lt;/p&gt;  &lt;p&gt;When writing the method in .NET connectivity assembly, you will need to have input parameters for credentials. The following example shows “GetEntity” method with input parameters for username and password along with other parameters.&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;public&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; SampleEntity GetEntity(&lt;span style="color: blue"&gt;string&lt;/span&gt; username, &lt;span style="color: blue"&gt;string&lt;/span&gt; password, &lt;span style="color: blue"&gt;int&lt;/span&gt; id)&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: green; font-size: 10pt; mso-no-proof: yes"&gt;// parameters username and password      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160; // contains the credentials&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;} &lt;/span&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To get the credentials in the username and password parameters, you will need to use filters UsernameFilter and PasswordFilter. In the metadata model, you will need to define the properties “SecondarySsoApplicationId” and “SsoProviderImplementation” for LobSystemInstance and associate the filters to appropriate input parameter of the method. When BCS encounters filters, it uses the properties “SecondarySsoApplicationId” and “SsoProviderImplementation” for secure store target application id and secure store provider.&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;LobSystemInstance&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;...&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Properties&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: green; font-size: 10pt; mso-no-proof: yes"&gt; other properties omitted –&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Property&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;Name&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;SecondarySsoApplicationId&lt;/span&gt;&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;MyLobAppId&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Property&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;Name&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;SsoProviderImplementation&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Microsoft.Office.SecureStoreService.Server.SecureStoreProvider, Microsoft.Office.SecureStoreService, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Properties&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;LobSystemInstance&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt; &lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;Now let’s define the two filters for the method.&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 9pt"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Method&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;Name&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;GetEntity&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;FilterDescriptors&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;FilterDescriptor&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;Type&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;Username&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;UserNameFilter&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;FilterDescriptor&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;Type&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;Password&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;PasswordFilter&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;FilterDescriptors&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Method&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt; &lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;With the filters defined for the method, the following snippet shows how to associate the two filters to the input parameters of the method.&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Parameter&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;Direction&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;In&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;username&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;TypeName&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;username&lt;/span&gt;&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;AssociatedFilter&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;UserNameFilter&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Parameter&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Parameter&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;Direction&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;In&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;password&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;TypeName&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;password&lt;/span&gt;&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;AssociatedFilter&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;PasswordFilter&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Parameter&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt; &lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt; That’s all you will need to leverage secure store in .NET connectivity assembly. When BCS executes the method, it will read the credentials from the secure store and set the credentials in the input parameters of the method.&lt;/p&gt;  &lt;h4&gt;Code-approach&lt;/h4&gt;  &lt;p&gt;Before we start writing code for leveraging Secure Store, let’s take a look at how BCS leverages Secure Store in other connectors. Other connectors in BCS rely on the metadata model to provide them information about Secure Store and the target application id where the credentials can be retrieved from for authenticating with the external system. For example, in the case of the Database connector, the properties for &lt;i&gt;LobSystemInstance&lt;/i&gt; in the metadata model look like this:&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;LobSystemInstance&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;...&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Properties&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: green; font-size: 10pt; mso-no-proof: yes"&gt; other properties omitted –&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Property&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;Name&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;SsoApplicationId&lt;/span&gt;&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;MyLobAppId&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Property&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;Name&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;SsoProviderImplementation&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;Microsoft.Office.SecureStoreService.Server.SecureStoreProvider, Microsoft.Office.SecureStoreService, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Properties&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;LobSystemInstance&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt; &lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;Reading the metadata model, the Database connector understands that it needs credentials to connect to the database and the credentials can be obtained from the specified secure store provider. Once the database connector has the necessary information for the Secure Store provider, it reads the credentials from the provider and impersonates the user for database connection.&lt;/p&gt;  &lt;p&gt;The following sections explain how to read the metadata model properties within your .NET assembly code and use secure store APIs to read user credentials. &lt;/p&gt;  &lt;h5&gt;Reading metadata model properties&lt;/h5&gt;  &lt;p&gt;To read metadata model properties in the .NET connectivity assembly, code in .NET assembly must implement &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.businessdata.systemspecific.icontextproperty(office.14).aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.businessdata.systemspecific.icontextproperty(office.14).aspx"&gt;IContextProperty&lt;/a&gt; interface. The following code shows a sample implementation of IContextProperty interface.&lt;/p&gt;  &lt;h5&gt;Sample implementation of IContextProperty&lt;/h5&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;using&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; IContextProperty = Microsoft.BusinessData.SystemSpecific.IContextProperty; &lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;public&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;SampleConnector&lt;/span&gt; : IContextProperty       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; IMethodInstance methodInstance;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; ILobSystemInstance lobSystemInstance;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; IExecutionContext executionContext;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;#region&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; IContextProperty implementation&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; IMethodInstance MethodInstance       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;.methodInstance; }       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;set&lt;/span&gt; { &lt;span style="color: blue"&gt;this&lt;/span&gt;.methodInstance = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; ILobSystemInstance LobSystemInstance       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;.lobSystemInstance; }       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;set&lt;/span&gt; { &lt;span style="color: blue"&gt;this&lt;/span&gt;.lobSystemInstance = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; IExecutionContext ExecutionContext       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;.executionContext; }       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;set&lt;/span&gt; { &lt;span style="color: blue"&gt;this&lt;/span&gt;.executionContext = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;#endregion &lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;&lt;font color="#000000" face="Arial"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;// unrelated code removed for brevity         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;} &lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;When the .NET connectivity assembly class implements the IContextProperty interface, the BCS runtime automatically initializes IContextProperty properties.&lt;/p&gt;  &lt;p&gt;At runtime, the code has the context (method instance and LOB system instance) in which it executes; a method implemented in the code can read the properties from the metadata model. The following code shows how LobSystemInstance properties are read:&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;public&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; SampleEntity GetEntity(&lt;span style="color: blue"&gt;int&lt;/span&gt; id)       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: green; font-size: 10pt; mso-no-proof: yes"&gt;// read the LobSystemInstance property defined in metadata model      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;string&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; provider =&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LobSystemInstance.GetProperties()[“ssoProviderImplementation”]       &lt;br /&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; as&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: green; font-size: 10pt; mso-no-proof: yes"&gt;// unrelated code removed for brevity      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;}&lt;/span&gt; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&lt;strong&gt;Interacting with Secure Store&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When the .NET connectivity assembly requires reading &lt;b&gt;one credential&lt;/b&gt; from Secure Store, we recommend using the following property names.&lt;/p&gt;  &lt;p&gt;ssoProviderImplementation – Secure Store provider    &lt;br /&gt;SecondarySsoApplicationId – Target Application for Secure Store&lt;/p&gt;  &lt;p&gt;ssoProviderImplementation and SecondarySsoApplicationId properties are supported for modeling .NET assembly connector models in SPD.&lt;/p&gt;  &lt;p&gt;If the .NET connectivity assembly requires reading more than one credential from Secure Store, choose a property name that makes the most sense for your scenario.&lt;/p&gt;  &lt;h6&gt;Sample implementation for reading credentials&lt;/h6&gt;  &lt;p&gt;The first step is to instantiate the Secure Store provider from the provider implementation. In your code, make sure that the provider implements &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.businessdata.infrastructure.securestore.isecurestoreprovider(office.14).aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.businessdata.infrastructure.securestore.isecurestoreprovider(office.14).aspx"&gt;ISecureStoreProvider&lt;/a&gt; interface.&lt;/p&gt;  &lt;p&gt;A simple implementation for instantiating the provider may look like&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;private&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; ISecureStoreProvider GetSecureStoreProvider()      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;{&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;// error checking removed for brevity&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt 24pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;string&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; provider = &lt;span style="color: blue"&gt;this&lt;/span&gt;.LobSystemInstance.GetProperties()&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [“ssoProviderImplementation”] &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt 24pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt 24pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;Type providerType = Type.GetType(provider); &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt 24pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin: 0in 0in 0pt 24pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;return&lt;/span&gt; Activator.CreateInstance(providerType)&amp;#160; &lt;br /&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; as &lt;/span&gt;ISecureStoreProvider;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;}&lt;/span&gt; &lt;/p&gt;  &lt;p mce_keep="true"&gt;Once the Secure Store provider has been instantiated, it’s time to get the credentials from Secure Store. Secure Store returns a &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.businessdata.infrastructure.securestore.securestorecredentialcollection(office.14).aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.businessdata.infrastructure.securestore.securestorecredentialcollection(office.14).aspx"&gt;SecureStoreCredentialCollection &lt;/a&gt;for the user and target id, which contains a collection of credentials. &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.businessdata.infrastructure.securestore.isecurestorecredential_properties(office.14).aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.businessdata.infrastructure.securestore.isecurestorecredential_properties(office.14).aspx"&gt;ISecureStoreSecureCredentials&lt;/a&gt; interface defines the credentials type and its value. &lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;private&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ReadCredentialsFromSecureStore()       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;{ &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;// error checking removed for brevity&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: green; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: green; font-size: 10pt; mso-no-proof: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;string&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt; targetId =      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LobSystemInstance.GetProperties()[“SecondarySsoApplicationId”]&lt;span style="color: blue"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; as&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt;;       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;#160;&amp;#160;&amp;#160; ISecureStoreProvider provider = GetSecureStoreProvider();&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// get the credentials for the user on whose behalf the code        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // is executing         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;using&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;(SecureStoreCredentialCollection credentials = &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; provider.GetRestrictedCredentials(targetId))       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;SecureString secureUsername;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;SecureString securePassword; &lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // look for username and password in credentials        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach&lt;/span&gt; (ISecureStoreCredential credential &lt;span style="color: blue"&gt;in&lt;/span&gt; credentials)       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;switch&lt;/span&gt; (credential.CredentialType)       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;ase&lt;/span&gt; SecureStoreCredentialType.UserName:       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; case &lt;/span&gt;SecureStoreCredentialType.WindowsUserName:       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; secureUsername = credential.Credential;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; break&lt;/span&gt;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;case&lt;/span&gt; SecureStoreCredentialType.Password:       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;case&lt;/span&gt; SecureStoreCredentialType.WindowsPassword:       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;securePassword = credential.Credential;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;break&lt;/span&gt;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;default&lt;/span&gt;:       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;break&lt;/span&gt;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;}      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// username and password have been read        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// use them as necessary.&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;//NOTE: Since we are getting the credentials in the using block,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; //&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;all the c&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;redentials that we get will be disposed after the        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; //&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;using block. If you need to &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;cache the credentials don't use        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; //&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;using block but dispose the credentials when &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;you are done        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; //&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;with it.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-no-proof: yes"&gt;} &lt;/span&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;The above code shows how the credentials are read from secure store. These credentials can be used for authentication to an external system. &lt;/p&gt;  &lt;h4&gt;Summary&lt;/h4&gt;  &lt;p&gt;Depending upon your scenario, you may choose no-code approach or code approach to leverage secure store in your .NET connectivity assembly. The following table lists the differences between these two approaches. &lt;/p&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="331"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="150"&gt;           &lt;p&gt;&lt;b&gt;No-code approach&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;&lt;b&gt;Code approach&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="331"&gt;           &lt;p&gt;Interaction with secure store API required?&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="150"&gt;           &lt;p&gt;No&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;Yes&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="331"&gt;           &lt;p&gt;Exclusive to .NET assembly connector&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="150"&gt;           &lt;p&gt;No&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;Yes&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="331"&gt;           &lt;p&gt;SPD support&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="150"&gt;           &lt;p&gt;Yes&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;Partially&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="331"&gt;           &lt;p&gt;Impacts method signature&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="150"&gt;           &lt;p&gt;Yes&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;No&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="331"&gt;           &lt;p&gt;Read from multiple Secure Store&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="150"&gt;           &lt;p&gt;No&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;Yes&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="331"&gt;           &lt;p&gt;Can credentials be set at LobSystemInstance level?&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="150"&gt;           &lt;p&gt;No&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;Yes&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;-Kaushik Raj&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10009379" width="1" height="1"&gt;</description></item><item><title>BCS Logging</title><link>http://blogs.msdn.com/b/bcs/archive/2010/05/07/bcs-logging.aspx</link><pubDate>Fri, 07 May 2010 09:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10009256</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=10009256</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/05/07/bcs-logging.aspx#comments</comments><description>&lt;P&gt;BCS is a cool framework to bring external data to Office Applications on the client. But due to various reasons like misconfigured BDC models/ Advanced Code-Based Solutions/ Intermediate Declarative Solutions or External System’s business logic, the expected data might not show up on the client. Most of the troubleshooting can be done by looking at the event logs. If the information in event logs is not enough to troubleshoot the issue, then the next best thing to do is start BCS logging on the client. Client logs provide rich and descriptive information, which is really helpful in debugging complex issues. Check out &lt;A href="http://technet.microsoft.com/en-us/library/ff463594(office.14).aspx" mce_href="http://technet.microsoft.com/en-us/library/ff463594(office.14).aspx"&gt;“Diagnostic logging in Business Connectivity Services overview (SharePoint Server 2010&lt;/A&gt;)” for information on how to enable BCS logging on the client.&lt;/P&gt;
&lt;P&gt;There are 2 levels of logging from BCS on the client – &lt;B&gt;Events logs&lt;/B&gt;&lt;B&gt; &lt;/B&gt;and &lt;B&gt;Trace logs&lt;/B&gt;. All the logging from BCS can be found in Trace logs. Whereas only a subset of the Trace logs are logged under Event Logs and they comprise of the important BCS actions which will help the user in figuring out the state of the BCS Solutions on the client i.e. information regarding the Solution download, Install &amp;amp; Uninstall, solution activation, Services startup &amp;amp; shutdown, Solution Registration and Errors. Trace Logs are more descriptive than Event logs and contains the exception stack trace of errors if any.&lt;/P&gt;
&lt;P&gt;Here are the different Categories under which most of the BCS actions are logged:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Deployment&lt;/B&gt; - The logs under this category help the user to figure out the important deployment actions that happen when offlining an External list from SharePoint or while doing a standalone install of Declarative/Code-Based solutions. All the actions involved with Solution download, Activation, package verification and Uninstallation get logged under this category. &lt;BR&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Runtime&lt;/B&gt; – BCS on the client has both managed and unmanaged assemblies. All the offlining calls from the managed components of BCS like CRUD operations, Subscription Refresh, Picker resolution, Rich List part actions from office applications, etc…fall under this category. &lt;BR&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Wrapped PST&lt;/B&gt; – The logs under this category are from the unmanaged BCS Add-in running in outlook. &lt;BR&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Business Data&lt;/B&gt; – All the BDC Runtime calls involved in executing against the External System are found under this category. These calls include preparation of the request, invoking of BDC stereotype methods against the External System and runtime processing of the results. &lt;BR&gt;&amp;nbsp; &lt;BR&gt;&lt;I&gt;By default the values of Input and Return Parameters are not dumped in the logs due to privacy issues. For debugging purpose, you can add the “&lt;B&gt;LogParameterValues&lt;/B&gt;” property at the Method Parameter level in metadata to log the parameter values sent and received from the External System for every call. &lt;BR&gt;&amp;nbsp; &lt;BR&gt;&lt;/I&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Property &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;LogParameterValues&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;System.Boolean&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;true&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Property&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Cross Sync&lt;/B&gt; – Actions involving data Sync between Offline Cache (i.e. SQL CE database) and Outlook Wrapped PST are logged under this category. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Here are some sample logs which outline the important actions logged as part of the E2E life cycle of a WCF based External Content Type (ECT) off-lined to outlook:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Solution Install/ List Offlining logs:&lt;/B&gt; 
&lt;UL&gt;
&lt;LI&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - BCSSync started with PID: 4020, integrity level: 8192 and command line: ""C:\Program Files (x86)\Microsoft Office\Office14\BCSSync.exe" -Embedding".&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Cache database file not found, creating new database file.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - BCS directory encrypted successfully.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Service Microsoft.Office.BusinessApplications.Runtime.DiskIOThrottler was started.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;SPAN style="mso-list: ignore"&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Service Microsoft.Office.BusinessApplications.Runtime.ProxyRegistrationService was started.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Service Microsoft.Office.BusinessApplications.Runtime.Deployment.ActivatorService was started.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Service Microsoft.Office.BusinessApplications.Runtime.Deployment.VerifierService was started.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Service Microsoft.Office.BusinessData.Offlining.SynchronizationManager was started.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Service Microsoft.Office.BusinessApplications.Runtime.Deployment.UpdateService was started.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Deployment&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;- Url:file:///C:/Users/&amp;lt;UserName&amp;gt;/Desktop/Output/ContosoSalesManager.vsto Solution Name:ContosoSalesManager Solution Id:ContosoSalesManager Solution Version:1.0.0.0 Message:Solution download completed successfully.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Starting verification process for model C:\Users\&amp;lt;UserName&amp;gt;\AppData\Local\Microsoft\BCS\cont..ager_ae3bf1f59b9d1e0f_0001.0000_0c401f2e52834d92\metadata.xml.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Business Data&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Generating WCF Proxy Assembly in a parallel App Domain&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Business Data&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Trying to discover service document at '&lt;U&gt;http://&amp;lt;Server&amp;gt;:8181/webservice.asmx?wsdl&lt;/U&gt;'&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Business Data&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Compiling proxy was success, will retrieve the assembly.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Set to Verification Complete for the solution ContosoSalesManager.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - BCSSync with PID: 4020 was requested to spawn a new instance and shutdown.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - BCSSync started with PID: 4068, integrity level: 8192 and command line: ""C:\Program Files (x86)\Microsoft Office\Office14\BCSSync.exe" /Restart /Activation /RestartApps".&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Starting deployment of subscriptions for solution ContosoSalesManager.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Verifying subscriptions.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Generating subscriptions in cache&lt;/SPAN&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Wrapped PST Data Sync logs:&lt;/B&gt; 
&lt;UL&gt;
&lt;LI&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Notification is being sent&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Cross Sync -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; Receiving Cache Changed (Direct) Event&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; 17 direct change notifications processed at 10:42:11.0782575&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Cross Sync -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; BCS/PST synchronization: Changing 1 Outlook items with information from item 'e83807ab-4748-4a36-ba32-ab62a9aafd78' IsDeleted=False .&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Cross Sync -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; BCS/PST synchronization: Folder 'ContosoCustomerFolderID' is scheduled to be synchronized.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Cross Sync -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; BCS/PST synchronization: Folder state changed to 'vfId=ContosoCustomerFolderID, status=resync, token=8973, exception=null'.&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Cross Sync -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; Copied Syncstamp 2010-04-28 17:45:50Z for folder ContosoCustomerFolderID ito XS_FOLDER record&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Cross Sync -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; BCS/PST synchronization: Completed synchronization of folders: ContosoCustomerFolderID,&lt;/SPAN&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Cross Sync -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; Syncstamp for folder ContosoCustomerFolderID is set to 2010-04-28 17:45:51Z&lt;/SPAN&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class=MsoNormal&gt;&lt;B&gt;LOB communication logs:&lt;/B&gt;&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; Data change detected; restarting synchronization loop.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Runtime -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; Refreshing subscription AWWSExampleCustomerSubscription with results of query AWWSExampleCustomerQuery&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Business Data -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; Opening connection to SystemInstance: &lt;U&gt;http://&amp;lt;Server&amp;gt;:8080/webservice.asmx?wsdl&lt;/U&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Business Data -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; Creating ClientBase object with type : BCSServiceProxy.WebServiceSoapClient&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Business Data -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; Using WCF authentication mode : PassThrough&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Business Data -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; Executing MethodInstance '2147484216' representing Web Method 'GetCustomers'&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Business Data&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; - Closing connection to SystemInstance: &lt;/SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN&gt;&lt;U&gt;http://&amp;lt;Server&amp;gt;:8080/webservice.asmx?wsdl&lt;/U&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt" class=MsoNormal&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt;Business Data -&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: calibri; mso-fareast-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"&gt; Exiting out of method to enumerator executor &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Most of the BCS logs are pretty descriptive and intuitive. Hopefully this blog post can act as a starting point for debugging issues while developing BCS solutions.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;- Sreekanth Lingannapeta &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10009256" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/bcs/archive/tags/Debug/">Debug</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/Runtime/">Runtime</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/Log/">Log</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/Trace/">Trace</category></item><item><title>BCS Team Channel:  Secure Store Service</title><link>http://blogs.msdn.com/b/bcs/archive/2010/05/06/bcs-team-channel-secure-store-service.aspx</link><pubDate>Thu, 06 May 2010 22:55:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10008819</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=10008819</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/05/06/bcs-team-channel-secure-store-service.aspx#comments</comments><description>&lt;p&gt;We just uploaded the next installment on the BCS Team Channel. In this video Sanjay Rama takes you through a quick introduction and demo of the Secure Store Service.&lt;/p&gt;  &lt;p&gt;Secure Store Service is the new single sign on service in SharePoint 2010. It provides the capability of storing secure data (i.e. A set of credentials) and the ability to map this data to a specific identity or a group of identities.The most common scenario for Secure Store Service is an application trying to authenticate against a system in which the current logged in user is known differently or has a different account for authentication. It’s a shared service in SharePoint 2010 and can be used to store credentials of multiple external systems.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:88ae6726-fb26-4fde-b656-054bfeac407e" class="wlWriterEditableSmartContent"&gt;&lt;div id="b624c03e-e0b4-412c-86aa-84ea65b5e4f7" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=2kHMY-fl4WU&amp;amp;hl=en&amp;amp;fs=1" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSTeamChannelSecureStoreService_DFF0/videoa6e2fb6cec8a.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('b624c03e-e0b4-412c-86aa-84ea65b5e4f7'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/2kHMY-fl4WU&amp;amp;hl=en&amp;amp;fs=1&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/2kHMY-fl4WU&amp;amp;hl=en&amp;amp;fs=1&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10008819" width="1" height="1"&gt;</description></item><item><title>Why it’s important to define filters for a good picking experience</title><link>http://blogs.msdn.com/b/bcs/archive/2010/05/05/why-it-s-important-to-define-filters-for-a-good-picking-experience.aspx</link><pubDate>Wed, 05 May 2010 22:29:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10008104</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=10008104</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/05/05/why-it-s-important-to-define-filters-for-a-good-picking-experience.aspx#comments</comments><description>&lt;p&gt;Hi this is Juan Balmori with another post for the BCS blog. This is a follow up to my previous post, about the &lt;a href="http://blogs.msdn.com/bcs/archive/2010/02/15/surfacing-business-data-in-word-2010-using-external-data-columns-and-the-external-item-content-control.aspx"&gt;external item picker&lt;/a&gt;. There is a problematic scenario that you may face: You are searching for an external item on the picker dialog that you are 100% sure it exists on the external system but the dialog does not seem to work properly and is not finding it. Worse it’s not even filtering by the specified search criteria.&lt;/p&gt;  &lt;p&gt;For example in the following image I am searching for an ‘Artist’ whose name is ‘Kim’ and evidently exists as you can see on the search results but the picker is:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Effectively showing Kim &lt;/li&gt;    &lt;li&gt;But is also showing a bunch of additional results that don’t even meet the search criteria &lt;/li&gt;    &lt;li&gt;On top of that, I get a strange error message telling me that ‘Search criteria cannot be met as Filters are not defined for the External Content Type. Contact your system administrator’ &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;What’s going on?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/Whyitsimportanttodefinefiltersforagoodpi_D9DD/clip_image002_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/Whyitsimportanttodefinefiltersforagoodpi_D9DD/clip_image002_thumb.jpg" width="534" height="376" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Well, as the error message is suggesting, the problem is that in this example the “Artist” External Content Type (ECT) does not have a filter defined and when an ECT lacks a Filter, the default behavior is to show the first 200 items and we cannot filter/narrow the search results. And you are going to get that warning. &lt;/p&gt;  &lt;p&gt;Moreover, imagine a scenario in which you have thousands of items to pick from; you will need to have a good set of filters defined on your ECT so that your users can find the items they are searching for, and/or quickly narrow their search to the item they are looking for. &lt;/p&gt;  &lt;p&gt;So as a general rule of thumb, I strongly recommend you to always define at least one filter on your ECTs.&lt;/p&gt;  &lt;p&gt;Fortunately, filter definitions can be done in SharePoint Designer (SPD) and it’s really easy to do it, I will describe how. Filters need to be defined on the read list operations (aka finders, as named in the BDC metadata model). There is a specific dialog to configure a filter for the read list operation as you can see on this image. (Double-click on the read list operation and then hit ‘next’ to get here)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/Whyitsimportanttodefinefiltersforagoodpi_D9DD/clip_image004_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/Whyitsimportanttodefinefiltersforagoodpi_D9DD/clip_image004_thumb.jpg" width="534" height="402" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then follow these instructions:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;You need to click on the ‘Add Filter Parameter’ button &lt;/li&gt;    &lt;li&gt;Click on the ‘(Click to Add)’ link on the Properties panel to configure the picker. You’ll find the following dialog:&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/Whyitsimportanttodefinefiltersforagoodpi_D9DD/clip_image006_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/Whyitsimportanttodefinefiltersforagoodpi_D9DD/clip_image006_thumb.jpg" width="474" height="364" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Give the filter a name on the New Filter text box &lt;/li&gt;    &lt;li&gt;Select a filter field to be used. In this example I want to filter by ‘Artist Name’ so I select that field. &lt;/li&gt;    &lt;li&gt;Define the type of filter to use. For a complete list of filter types and how they work please refer to &lt;a href="http://msdn.microsoft.com/en-us/library/ee556392(office.14).aspx"&gt;this article&lt;/a&gt;. It’s worth mentioning two frequently used filters types: Comparison and wildcard. For this example, the artist name can have multiple words. (i.e. ‘Franz Kohl’), let’s see what happens when I use each filter type:       &lt;ul&gt;       &lt;li&gt;&lt;b&gt;Comparison&lt;/b&gt;: If you use the ‘equal’ operator we’ll expect the user to type the full artist name to find items. Hence it will only filter if the user types ‘Franz Kohl’, but will not work with either just ‘Franz’ or with just ‘Kohl’ &lt;/li&gt;        &lt;li&gt;&lt;b&gt;Wildcard&lt;/b&gt;: If you use the ‘wildcard’ type then the filter will be send to the external system with wildcards. In this case it will filter if the user types ‘Franz’ or ‘Kohl’ (we’ll return all the artists that have the string ‘Franz’ as part of the name or vice-versa). &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Finally, identify what to do if the filter value is null. You need to select this option if you have an external list associated with this ECT. Otherwise you’ll see no items when browsing the list (because the filter value will be null). &lt;/li&gt;    &lt;li&gt;You can add more filter parameters as needed and add a AND/OR behavior to it. For instance, we are interested to filter by last name and zone. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;b&gt;One very important note regarding the design experience&lt;/b&gt;: when integrating specifically with databases, our tools generate the necessary queries to enable the designed filters. If you are using other types of BCS data sources such as web services, WCF or .NET assemblies you need to make sure that your filters are part of their API, before you can model them in SPD.&lt;/p&gt;  &lt;p&gt;Here is an example of how the picker dialog is going to look like when we select a ‘wildcard’ type of filter on the artist name and we search for ‘Karen’&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/Whyitsimportanttodefinefiltersforagoodpi_D9DD/clip_image008_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/Whyitsimportanttodefinefiltersforagoodpi_D9DD/clip_image008_thumb.jpg" width="534" height="376" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once multiple filters are defined on the ECT, the external item picker algorithm to apply those filters is the following: it appends the resulting items of each filter of each read list operation of the ECT. So to be more efficient we recommend not having a high number of filters/finders on each ECT as this can potentially result in calling a high number of operations on the ECT.&lt;/p&gt;  &lt;p&gt;In summary, the most important piece of information for this post is: Always define filters on your ECT, especially when you are going to use it for picking purposes. &lt;/p&gt;  &lt;p&gt;Thanks for reading!&lt;/p&gt;  &lt;p&gt;&lt;a name="_GoBack"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- Juan Balmori, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10008104" width="1" height="1"&gt;</description></item><item><title>Searching External Data in SharePoint 2010 Using Business Connectivity Services</title><link>http://blogs.msdn.com/b/bcs/archive/2010/04/30/searching-external-data-in-sharepoint-2010-using-business-connectivity-services.aspx</link><pubDate>Fri, 30 Apr 2010 22:10:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10005525</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=10005525</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/04/30/searching-external-data-in-sharepoint-2010-using-business-connectivity-services.aspx#comments</comments><description>&lt;p&gt;Eric White posted great content on how to &lt;a href="http://blogs.msdn.com/ericwhite/archive/2010/04/28/searching-external-data-in-sharepoint-2010-using-business-connectivity-services.aspx" target="_blank"&gt;Search External Data in SharePoint 2010 using BCS&lt;/a&gt;. Here is the overview of the post from his blog:&lt;/p&gt;  &lt;h4&gt;Overview&lt;/h4&gt;  &lt;p&gt;This article will examine how to use SharePoint Designer to define an external content type (ECT) and how to set up a search crawl that includes that external data. You will then see how to reduce crawl times for large amounts of data by using incremental crawls. All of this will be done using SharePoint Designer, SharePoint Central Administration and some editing of XML.&lt;/p&gt;  &lt;p&gt;Before beginning, you should have the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;Access to SharePoint 2010 Central Administration, including the search service and the business data connectivity service.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Access to SharePoint Designer.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;A SharePoint 2010 web application with a site collection. For more information, see &lt;a href="http://technet.microsoft.com/en-us/library/cc263094(office.14).aspx"&gt;Create a site collection (Office SharePoint Server)&lt;/a&gt;. You can probably use &lt;b&gt;Sharepoint - 80&lt;/b&gt; for these examples.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Access to Microsoft SQL Server. You can use the same instance of SQL Server that SharePoint uses.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;A sample database for Microsoft SQL Server (AdventureWorks will be used in these examples. See &lt;a href="http://msftdbprodsamples.codeplex.com/releases/view/24854"&gt;Sample Databases for Microsoft SQL Server 2008R2&lt;/a&gt; to install.)&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These examples will be more meaningful if you have some general understanding of SQL queries and views. Previous experience with XML will also be helpful. Even without that experience, you should be able to successfully complete all the examples.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/ericwhite/archive/2010/04/28/searching-external-data-in-sharepoint-2010-using-business-connectivity-services.aspx" target="_blank"&gt;…read more about searching external data using BCS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;- Lionel Robinson, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10005525" width="1" height="1"&gt;</description></item><item><title>Introduction to System Filters</title><link>http://blogs.msdn.com/b/bcs/archive/2010/04/29/introduction-to-system-filters.aspx</link><pubDate>Fri, 30 Apr 2010 00:14:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10004919</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=10004919</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/04/29/introduction-to-system-filters.aspx#comments</comments><description>&lt;p&gt;Filters are used by Microsoft Business Connectivity Service (BCS) to give values to input parameters while invoking a Method on the External System (LobSystem). But there could be some parameters whose values should be provided by the system (example: username, password) and not from the user. Filters that provide values to these input parameters are called System Filters. &lt;/p&gt;  &lt;p&gt;&lt;i&gt;Here is an example Scenario of when to use System Filter: Jim has a web service operation that creates a file. The method takes filename, user name, and password. File name will be passed as user input, but username and password will have to be passed from the system. Jim needs a solution to pass these values without requesting them from the user.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Solution: Jim will have to configure username and password filters for the parameters that match username and password. Jim will also have to specify the “SecondarySSOApplicationID” and “SSOProviderImplementation” on the External System Instance, which will be used by the filters to fetch username and password values. This will make the system provide username and password as values to input parameters.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;The different types of System Filters that are supported are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;ActivityID (Activity Identifier Filter)        &lt;br /&gt;&lt;/strong&gt;Activity Identifier Filter is used while calling operations on an external system, and the value to be passed as input parameter should represent a context identity of the invoking operation.       &lt;br /&gt;BCS sets a&lt;i&gt; &lt;/i&gt;GUID that represents the current operation context as the value on the input parameter which is associated with the ActivityID filter.&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Password (Password Credential Filter)        &lt;br /&gt;&lt;/strong&gt;Password credential filter is used while calling operations on external system and the value to be passed as input parameter should represent a password stored in Secure Store.       &lt;br /&gt;BCS gets the credentials that map to the External System Instance (LobSystemInstance) properties “SecondarySsoApplicationId” and “SsoProviderImplementation”. It uses the password obtained from credentials as the value for the input parameter which is associated with the Password filter. &lt;i&gt;Note: SecondarySSOApplicationId is different from SSOApplicationId, SecondarySSOApplicationId is used by UserName filter and Password filter. For more information read &lt;/i&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms550725.aspx"&gt;&lt;i&gt;SecondarySSOApplicationID property on LobSystemInstance&lt;/i&gt;&lt;/a&gt;&lt;i&gt;.        &lt;br /&gt;&amp;#160; &lt;/i&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;SSOTicket (Single sign on Ticket Filter)        &lt;br /&gt;&lt;/strong&gt;Single sign on ticket filter should be used while calling an operation on the External System and the value to be passed as an input parameter should represent a sign on ticket for the user from the Secure Store. The target service or application can then redeem this ticket to get the user credentials.       &lt;br /&gt;BCS uses the “SSOProviderImplementation” property specified in the External System Instance and requests this provider to issue an SSOTicket. This SSOTicket is passed as the input parameter which is associated with the SSOTicket filter.       &lt;br /&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;UserContext (User Context Filter)        &lt;br /&gt;&lt;/strong&gt;User Context Filter should be used while calling an operation on the External System.The value to be passed as an input parameter should represent the user context.       &lt;ul&gt;       &lt;li&gt;In this case, BCS uses the “UserContextType” property on the Filter (FilterDescriptor) to find a value to set on the input parameter. If the “UserContextType” specified is “MachineId”, the value passed to the input parameter will be the unique id for machine’s operating system installation. &lt;/li&gt;        &lt;li&gt;If the “UserContextType” specified is “QualifiedUserName”, the value passed to the input parameter will depend:          &lt;ul&gt;           &lt;li&gt;If the login mode for user is Windows classic, the value will be the windows logon name for the user. This will contain the domain name and the user name (&lt;i&gt;example: domainname /username&lt;/i&gt;). &lt;/li&gt;            &lt;li&gt;If the login mode for user is Claims based, then value passed will be the unique value that identifies the user (&lt;i&gt;example: membership:username, username@provider.com&lt;/i&gt;).               &lt;br /&gt;&amp;#160; &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;UserCulture (User Culture Filter)        &lt;br /&gt;&lt;/strong&gt;User Culture Filter should be used while calling an operation on the External System and the value to be passed as an input parameter should represent the culture of the user environment invoking the operation.       &lt;br /&gt;BCS uses the “Format” property on the Filter to find a value to set on the input parameter.       &lt;ul&gt;       &lt;li&gt;If the value of the “Format” property is “RFC1766”, the value passed to the input parameter will be the name of the culture. &lt;a href="http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.name(v=VS.90).aspx"&gt;Read about name of a culture.&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;If the value of the “Format” property is “TwoLetterISO”, the value passed to the input parameter will be two letter ISO language name of the culture. &lt;a href="http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.twoletterisolanguagename(v=VS.90).aspx"&gt;Read about two letter ISO language name of a culture.&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;If the value of the “Format” property is “ThreeLetterISO”, the value passed to the input parameter will be the three letter ISO language name of the culture. &lt;a href="http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.threeletterisolanguagename(v=VS.90).aspx"&gt;Read about three letter ISO language name of a culture.&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;If the value of the “Format” property is “ThreeLetterWindows”, the value passed to the input parameter will be the three letter windows language name of the culture. &lt;a href="http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.threeletterwindowslanguagename(v=VS.90).aspx"&gt;Read about three letter windows language name of a culture.&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;If the value of the “Format” property is “LCID”, the value passed to the input parameter will be the LCID of the culture.&lt;a href="http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.lcid(v=VS.90).aspx"&gt; Read about LCID of a culture.&lt;/a&gt;           &lt;br /&gt;&amp;#160; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;UserName (User Name Credential Filter)        &lt;br /&gt;&lt;/strong&gt;User Name Credential Filter should be used while calling an operation on the External System and the value to be passed as an input parameter should represent the User Name stored in Secure Store.       &lt;br /&gt;BCS gets the credentials that map to the External System Instance properties “SecondarySsoApplicationId” and “SsoProviderImplementation”. It uses the user name obtained from credentials as the value for the input parameter which is associated with the UserName system filter. &lt;i&gt;Note: SecondarySSOApplicationId is different from SSOApplicationId, it’s used by UserName filter and Password filter. For more information read &lt;/i&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms550725.aspx"&gt;&lt;i&gt;SecondarySSOApplicationID property on LobSystemInstance&lt;/i&gt;&lt;/a&gt;&lt;i&gt;.        &lt;br /&gt;&amp;#160;&lt;/i&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;UserProfile (User Profile Filter)        &lt;br /&gt;&lt;/strong&gt;User Profile Filter should be used while calling an operation on the External System and the value to be passed as an input parameter should be a property on the current user’s profile.       &lt;br /&gt;BCS uses the “UserProfileProvider” and the “UserProfilePropertyName” properties specified on the Filter to find a value to set on the input parameter. “UserProfileProvider” is used to fetch the current user’s profile and “UserProfilePropertyName” contains the property name whose value on the user profile should be passed to the input parameter. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Configuring System Filters&lt;/h3&gt;  &lt;h4&gt;SPD approach:&lt;/h4&gt;  &lt;p&gt;System Filters can be configured for input parameters via SPD. The steps to configure System Filters via SPD are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open SPD &lt;/li&gt;    &lt;li&gt;Click on “OpenSite” and open a site. &lt;/li&gt;    &lt;li&gt;Click on “External Content Types” on “Site Objects” pane on the left of SPD. &lt;/li&gt;    &lt;li&gt;Click on “New External Content Type” ribbon button to create new external content type. &lt;/li&gt;    &lt;li&gt;Click on “Operations Design View” ribbon button to create new methods for external content type. &lt;/li&gt;    &lt;li&gt;Click on “Add Connection” button and discover a data source connection. &lt;/li&gt;    &lt;li&gt;Enter the method configuration wizard used to design the operations, by right clicking a data source node and selecting the operation that is required. &lt;/li&gt;    &lt;li&gt;Move to the Input Parameter Configuration to define filters for input parameters. &lt;/li&gt;    &lt;li&gt;Click on the “Click to Add” next to filters to configure filters. The screen shot below shows the link that is used to create filters.&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/IntroductiontoSystemFilters_A198/clip_image002_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/IntroductiontoSystemFilters_A198/clip_image002_thumb.jpg" width="524" height="437" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Select New Filter and give it a name. &lt;/li&gt;    &lt;li&gt;Use the Filter Type combo box to choose a System Filter as shown in the screen shot below:      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/IntroductiontoSystemFilters_A198/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/IntroductiontoSystemFilters_A198/image_thumb.png" width="414" height="354" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;h4&gt;Hand Written Approach:&lt;/h4&gt;  &lt;p&gt;System Filters can be configured by making changes to the model file by hand. The steps to follow to configure System Filters are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open the Model file. &lt;/li&gt;    &lt;li&gt;Find the method whose input parameters should be configured with system filters. &lt;/li&gt;    &lt;li&gt;Add FilterDescriptors section or modify if one already exist, to add filter descriptors that point to system filters. An example to configure SsoTicket System filter is shown below.      &lt;br /&gt;      &lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 10pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi"&gt;FilterDescriptors&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;FilterDescriptor&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;Type&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;SsoTicket&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;NameofSsoTicketFilter&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;          &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 10pt; mso-no-proof: yes"&gt; properties omitted --&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;FilterDescriptor&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 10pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi"&gt;FilterDescriptors&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi"&gt;&amp;gt;&lt;/span&gt;&lt;a name="_GoBack"&gt;&lt;/a&gt;       &lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt"&gt;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/li&gt;    &lt;li&gt;Configure your desired input parameter’s type descriptor to point to this FilterDescriptor created in the previous step. An example to configure the above created FilterDescirptor is shown below:      &lt;p style="line-height: normal; margin-bottom: 0pt; mso-add-space: auto; mso-layout-grid-align: none" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;Parameter&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;Direction&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;In&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;...&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;            &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 10pt; mso-no-proof: yes"&gt; properties omitted –&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;          &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-no-proof: yes"&gt;FilterName&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-no-proof: yes"&gt;&amp;quot;&lt;span style="color: blue"&gt;NameofSsoTicketFilter&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;...&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;            &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 10pt; mso-no-proof: yes"&gt; properties omitted –&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;          &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 10pt; mso-no-proof: yes"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-no-proof: yes"&gt;&amp;gt;          &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: cambria"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: cambria"&gt;Parameter&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: cambria"&gt;&amp;gt;          &lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- Tittu Jose, Software Development Engineer&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10004919" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/bcs/archive/tags/SharePoint+Designer/">SharePoint Designer</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/System+Filter/">System Filter</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/Filter/">Filter</category></item><item><title>Accessing BLOB Data from External Systems Using Business Connectivity Services in SharePoint Server 2010</title><link>http://blogs.msdn.com/b/bcs/archive/2010/04/27/accessing-blob-data-from-external-systems-using-business-connectivity-services-in-sharepoint-server-2010.aspx</link><pubDate>Wed, 28 Apr 2010 00:20:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10003545</guid><dc:creator>lionelro</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=10003545</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/04/27/accessing-blob-data-from-external-systems-using-business-connectivity-services-in-sharepoint-server-2010.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/taj/"&gt;Tajeshwar Singh&lt;/a&gt; wrote a white paper which shows you how to use Microsoft Business Connectivity Services (BCS) in Microsoft SharePoint Server 2010 to access and surface BLOB data in the SharePoint user interface and search. Check out the overview below taken from the paper. &lt;/p&gt;  &lt;p&gt;Link to document: &lt;a href="http://msdn.microsoft.com/en-us/library/ff634782(office.14).aspx"&gt;Accessing BLOB Data from External Systems Using Business Connectivity Services in SharePoint Server 2010&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Overview of the white paper&lt;a name="_GoBack"&gt;&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Microsoft Business Connectivity Services (BCS) is the new version of Microsoft Office SharePoint Server 2007 Business Data Catalog functionality. New features are added that help retrieve binary large object data (referred to as BLOB data) from external systems and make it available in Microsoft SharePoint Server 2010. This article describes the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The functionality that is provided by the &lt;strong&gt;StreamAccessor&lt;/strong&gt; stereotype that is introduced in Business Connectivity Services. &lt;/li&gt;    &lt;li&gt;How to use &lt;strong&gt;StreamAccessor&lt;/strong&gt; to retrieve file attachments from external systems for viewing and indexing.&lt;/li&gt;    &lt;li&gt;How to write the BDC model that is required to consume BLOB data. &lt;/li&gt;    &lt;li&gt;The built-in Web Parts behavior for BLOB data, and how BLOB fields can be indexed by SharePoint Server search.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In this article's scenario, the AdventureWorks database that is hosted in Microsoft SQL Server 2008 is used as an external system that contains the binary data. The BDC metadata model is created with a &lt;strong&gt;StreamAccessorMethodInstance&lt;/strong&gt; to retrieve the BLOB field of type &lt;strong&gt;varbinary&lt;/strong&gt; from SQL Server as an external content type. The BLOB fields are modeled as types that can be read in chunks to help Business Connectivity Services read the stream in chunks, and not load the complete content in memory. This can help prevent out-of-memory conditions. An example of such a type is &lt;strong&gt;System.IO.Stream&lt;/strong&gt; in the Microsoft .NET Framework. An External Data Grid Web Part is configured to show the external items with links to download the BLOB. Finally, Search is configured to crawl the BLOBs and show the results in the SharePoint Server search user interface (UI).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- Lionel Robinson, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10003545" width="1" height="1"&gt;</description></item><item><title>BCS Solution Packaging Tool</title><link>http://blogs.msdn.com/b/bcs/archive/2010/04/25/bcs-solution-packaging-tool.aspx</link><pubDate>Mon, 26 Apr 2010 06:02:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10002361</guid><dc:creator>lionelro</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=10002361</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/04/25/bcs-solution-packaging-tool.aspx#comments</comments><description>&lt;p&gt;If you’ve read Brad Stevenson’s post &lt;a href="http://blogs.msdn.com/bcs/archive/2009/11/12/types-of-solutions.aspx"&gt;Types of Solutions&lt;/a&gt;, you’re already familiar with the range of BCS Solutions across three levels:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;b&gt;Simple&lt;/b&gt; out-of-box solutions&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Intermediate&lt;/b&gt; declarative solutions&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Advanced&lt;/b&gt; code-based solutions&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;b&gt;Simple solutions&lt;/b&gt; are easily created through the click of a button, and the user doesn’t have to worry about packaging or deployment (see Andrew Harris’ post &lt;a href="http://blogs.msdn.com/bcs/archive/2009/12/10/external-lists-in-sharepoint-workspace.aspx"&gt;External Lists in SharePoint Workspace&lt;/a&gt; and Juan Balmori Labra’s post &lt;a href="http://blogs.msdn.com/bcs/archive/2009/12/04/bcs-team-channel-external-lists-in-outlook.aspx"&gt;External Lists in Outlook&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Intermediate declarative solutions&lt;/b&gt; (as the name describes) are a way to step up from what is provided out-of-the-box with simple solutions, to customize and enhance solutions declaratively – without code – to fit your particular needs and requirements. These types of solutions can include &lt;i&gt;re-usable components &lt;/i&gt;created and delivered by other developers, or can include components like InfoPath forms, workflows and Web part pages.&lt;/p&gt;  &lt;p&gt;One interesting type of solution can be created by combining several of these pieces, and other pieces specific to regular Outlook customizations, to create a full Business Connectivity Services solution in Outlook: an &lt;b&gt;Outlook Intermediate Declarative Solution&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;When all of the components and pieces of this solution are assembled, they need to be packaged together as a Visual Studio Tools for Office (VSTO) ClickOnce package, in the same way the simple “out-of-box” Outlook solution is automatically packaged. Similarly, this solution can then be deployed to user’s computers with the click of a button.&lt;/p&gt;  &lt;p&gt;As you’ve probably already guessed, the Solution Packaging Tool will help you to package your Outlook Intermediate Declarative solution. This post will show you where to get the tool, outline how to use it, define the types of solutions it can package, introduce the command line interface for the tool and finally, provide a link to download a sample solution that you can use to test things out for yourself.&lt;/p&gt;  &lt;h3&gt;Solution Packaging Tool&lt;/h3&gt;  &lt;p&gt;To begin, download the tool from MSDN Code Gallery:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/odcsps14bcspkgtool"&gt;http://code.msdn.microsoft.com/odcsps14bcspkgtool&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSSolutionPackagingTool_143F4/01_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="01" border="0" alt="01" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSSolutionPackagingTool_143F4/01_thumb.jpg" width="350" height="400" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To use the tool, you’ll be following these general steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a folder on your local computer and put all of your solution files in this folder&lt;/li&gt;    &lt;li&gt;Create another new folder (which will eventually hold the generated package)&lt;/li&gt;    &lt;li&gt;Give the solution a name and version (i.e. “Customer Tracker” and “1.0.0.1”)&lt;/li&gt;    &lt;li&gt;Browse to and select the folder from step 1 as the “Source Folder”&lt;/li&gt;    &lt;li&gt;Browse to and select the folder from step 2 as the “Output Folder”&lt;/li&gt;    &lt;li&gt;Pick a solution type (read on for details about solution types) from the following:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Outlook Intermediate Declarative Solution&lt;/li&gt;      &lt;li&gt;Outlook Advanced Code-Based Solution (OIR)&lt;/li&gt;      &lt;li&gt;Data Solution for Office Add-In&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Input a certificate file (when ready with a production solution) or, for now, just use the default certificate that is provided for use during development and testing&lt;/li&gt;    &lt;li&gt;For advanced solution types, add an assembly (read on for details about this solution type)&lt;/li&gt;    &lt;li&gt;Click “Package”&lt;/li&gt;    &lt;li&gt;Click “Deploy”, or open the Output Folder and double-click the .vsto file&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The solution will then be installed in Outlook on that machine.&lt;/p&gt;  &lt;p&gt;For more information on Intermediate Declarative Solutions, see the content on MSDN and in the SharePoint 2010 SDK. This tool also contains a help guide (click the “Help” button in the bottom left corner of the tool window) which describes in detail:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Each of the three solution types, and how to package them&lt;/li&gt;    &lt;li&gt;The types of files/artifacts that comprise each type&lt;/li&gt;    &lt;li&gt;How and where to host solutions after packaging (so users can deploy them)&lt;/li&gt;    &lt;li&gt;Using certificate files&lt;/li&gt;    &lt;li&gt;Using the command prompt support&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For now, however, let’s examine the solution types in a bit more detail.&lt;/p&gt;  &lt;h3&gt;Types of Solutions&lt;/h3&gt;  &lt;p&gt;There are three types of solutions that you can package with the Solution Packaging Tool:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Outlook Intermediate Declarative Solutions&lt;/li&gt;    &lt;li&gt;Outlook Advanced Code-Based Solutions (leveraging the Solution Manifest)&lt;/li&gt;    &lt;li&gt;Data Solutions for Office Add-Ins (which don’t leverage the Solution Manifest)&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;When we refer to an “&lt;b&gt;Intermediate Declarative &lt;i&gt;Solution&lt;/i&gt;&lt;/b&gt;” rather than just individual declarative customization components, we’re generally referring to the solution created for Outlook.&lt;/p&gt;  &lt;p&gt;If you add custom code assemblies to further enhance this type of Outlook solution, you’re moving up the scale to an &lt;b&gt;Advanced Code-Based solution&lt;/b&gt;, but you can still leverage some of the capabilities of Declarative solutions (Solution Manifest, form regions, InfoPath forms) without fully diving into an all-code solution. Specifically, this type of solution would still leverage the Solution Manifest (OIR.config) file to dictate how the External Data for the solution should appear and behave in Outlook. You can still use the Solution Packaging Tool for this type of solution.&lt;/p&gt;  &lt;p&gt;Lastly, if you’re interested in developing Office Add-Ins using Visual Studio (for Excel, PowerPoint, etc.) you’ll be fully creating &lt;b&gt;Advanced Code-Based Solutions&lt;/b&gt; which control all the functionality of the solution. We do still provide one level of assistance here, however. You can create something called a &lt;b&gt;Data Solution&lt;/b&gt;, which is comprised of a BDC Model (containing External Content Type definitions with security and connection information) and External Content Type Subscription files (which define how/when to retrieve data to the Rich Client Cache).&lt;/p&gt;  &lt;p&gt;This will allow you to focus on developing your Office Add-In user-experience and functionality, and let the Data Solution take care of the lifecycle of the external items of data to and from the external system. This Data Solution package can also be created using the Solution Packaging Tool. However, the Office Add-In itself will need to be packaged separately using Visual Studio. &lt;/p&gt;  &lt;p&gt;So to reiterate, the three types of solutions that can be packaged using the Solution Packaging Tool are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Outlook Intermediate Declarative Solutions&lt;/li&gt;    &lt;li&gt;Outlook Advanced Code-Based Solutions (with a Solution Manifest)&lt;/li&gt;    &lt;li&gt;Data Solutions for Office Add-Ins&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You’ll notice these three types in the tool’s “Solution Type” dropdown selection menu.&lt;/p&gt;  &lt;h3&gt;Command Line Interface&lt;/h3&gt;  &lt;p&gt;The tool also supports a command prompt interface, which some users may find faster and easier to use than the graphical user interface. The commands can also be useful in script files.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSSolutionPackagingTool_143F4/02_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="02" border="0" alt="02" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSSolutionPackagingTool_143F4/02_thumb.jpg" width="450" height="460" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;Sample Solution to Get Started&lt;/h3&gt;  &lt;p&gt;If you want to try out the tool, or simply want to check out a sample Intermediate Declarative solution, you can download our &lt;b&gt;Contoso Sales Manager&lt;/b&gt; sample solution from the &lt;a href="http://code.msdn.microsoft.com/odcsps14bcspkgtool"&gt;tool site&lt;/a&gt;. On the download page, at the right side in the “Releases” section click “Sample Solution”.&lt;/p&gt;  &lt;p&gt;A ReadMe file is provided to walk you through setting it up.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSSolutionPackagingTool_143F4/03_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="03" border="0" alt="03" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSSolutionPackagingTool_143F4/03_thumb.jpg" width="544" height="389" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This solution allows you to track contacts from an External System database (a sample database provided free by Microsoft named “Adventure Works”) in Outlook as native Outlook contacts, with the ability to create, edit and delete customers to the backend External System.&lt;/p&gt;  &lt;p&gt;It also provides a taskpane, visible in the contact view which shows a list of all orders placed by that customer in the database. When an order is selected from the list, the order details show in the taskpane as well.&lt;/p&gt;  &lt;p&gt;Finally, there is a URL-based action in the custom ribbon for each customer item, which searches the internet at MSN white pages to look up that user’s telephone number as a parameter and provide contextual information.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Sample Solution pre-requisites&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Client&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Office Professional Plus 2010&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Server&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Server 2008&lt;/li&gt;    &lt;li&gt;SharePoint Server 2010 with Enterprise Client Access License&lt;/li&gt;    &lt;li&gt;SQL Server 2008 (and SQL Server Management Studio)&lt;/li&gt;    &lt;li&gt;SharePoint Server 2010 Software Development Kit (and Samples)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Again, for more information on creating Intermediate Declarative Solutions or developing Advanced Code-Based Solutions, see the content in the SharePoint 2010 SDK or on MSDN.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;p&gt;- Russell Palmer, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10002361" width="1" height="1"&gt;</description></item><item><title>Authenticating to Your External System</title><link>http://blogs.msdn.com/b/bcs/archive/2010/03/12/authenticating-to-your-external-system.aspx</link><pubDate>Sat, 13 Mar 2010 01:13:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9977871</guid><dc:creator>lionelro</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9977871</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/03/12/authenticating-to-your-external-system.aspx#comments</comments><description>&lt;p&gt;When getting acquainted with BCS, most new users work against an unsecured backend. This means they can ignore the issue of authentication and focus on the fun stuff, like making external lists and searching external content. But real world external systems have all kinds of sensitive data: payrolls, inventories, credit card numbers, and more. The &lt;a href="http://blogs.msdn.com/bcs/archive/2009/11/24/permissions-in-business-connectivity-services.aspx"&gt;permissions built into BCS&lt;/a&gt; can help out, but since users could simply connect directly to the external system without using BCS, the external system needs to have its own authentication turned on too.&lt;/p&gt;  &lt;p&gt;I’m Adam Outcalt, a Software Development Engineer for BCS, and in this article we’ll look at the authentication modes supported by BCS and how you can use them to make sure you stay in control of your data.&lt;/p&gt;  &lt;h4&gt;Authentication Modes&lt;/h4&gt;  &lt;p&gt;Now that we know why backend authentication is important, let’s look at the modes available in BCS. The names are different depending on where you see them, and are summarized in the table below.    &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="213"&gt;           &lt;p&gt;Name&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="213"&gt;           &lt;p&gt;SPD&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="213"&gt;           &lt;p&gt;Model&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="213"&gt;           &lt;p&gt;Pass Through&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="213"&gt;           &lt;p&gt;User’s Identity&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="213"&gt;           &lt;p&gt;PassThrough&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="213"&gt;           &lt;p&gt;SSO (Windows)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="213"&gt;           &lt;p&gt;Impersonated Custom/Windows Identity&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="213"&gt;           &lt;p&gt;RdbCredentials / WindowsCredentials&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="213"&gt;           &lt;p&gt;Revert To Self&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="213"&gt;           &lt;p&gt;BDC Identity&lt;a href="#footnote_01"&gt;[1]&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="213"&gt;           &lt;p&gt;RevertToSelf&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;h5&gt;Pass Through&lt;/h5&gt;  &lt;p&gt;Pass Through means to authenticate to the external system with the same credentials that were used to authenticate to SharePoint. Pass Through will not function by default in NTLM, because NTLM does not allow for delegation of identity; if your backend does not allow anonymous logon, you’ll get an error like this one in your external list:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The query against the database caused an error.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And ones like these in the server logs:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The query against the database for LobSystem 'AdventureWorks', LobSystemInstance ' AdventureWorks', MethodInstance 'Read List', caused an error : Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. A severe error occurred on the current command. The results, if any, should be discarded.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate,NTLM'&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is because your identity made two hops to get to the external system: one from the client machine to the server, and the other from the server to the external system. Since NTLM did not allow for delegating identity, the request to the backend was anonymous. You can get around this problem by using a system like Kerberos that allows for constrained delegation of credentials. (&lt;a href="http://technet.microsoft.com/en-us/library/cc263449.aspx"&gt;This article&lt;/a&gt; can help you learn more about configuring Kerberos with SharePoint.)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/AuthenticatingtoYourExternalSystem_F225/clip_image001%5B6%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image001[6]" border="0" alt="clip_image001[6]" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/AuthenticatingtoYourExternalSystem_F225/clip_image001%5B6%5D_thumb.png" width="494" height="121" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Even without Kerberos, Pass Through is still useful for simple testing during development; if you are working from a development server, in some configurations (like using a browser on the server to connect to a database, or using a browser off-box to connect to a database on the same machine as SharePoint), the whole trip will only be a single hop – just be sure to test it with a proper configuration before deploying!&lt;/p&gt;  &lt;p&gt;Pass Through can also work with claims; more info on this soon!&lt;/p&gt;  &lt;h5&gt;Secure Store&lt;/h5&gt;  &lt;p&gt;The basic idea of using Secure Store for BCS authentication is to avoid the double hop problem of Pass Through by storing credentials in SharePoint. Since we can use the credentials in Secure Store to sign you in again on the server, the double hop becomes two single hops.&lt;/p&gt;  &lt;p&gt;The other great thing about Secure Store is that you don’t have to sign in users as themselves; you can map them to a service account instead, preferably one that has rights to absolutely nothing except the external system you want to interact with. This means that you don’t have to give the actual users permissions to the backend at all! As long as the users don’t know the password for the service account, they will only be able to access the external system through external lists and other web parts, and you can use this to restrict the sort of operations they can perform.&lt;/p&gt;  &lt;p&gt;Mapping to a service account also leads to large performance improvements, since all the connections are pooled for the single logon. The disadvantage is that the external system won’t be able to record who executed a particular transaction – you can solve this problem with secondary authentication filters, which we’ll discuss later in this article.&lt;/p&gt;  &lt;h5&gt;Revert To Self&lt;/h5&gt;  &lt;p&gt;Revert To Self is a popular authentication mechanism carried over from the last release of SharePoint. Using Revert To Self means to connect to the external system as the IIS application pool that is servicing the request. In external lists, this means the application pool for the content page; for timed workflows it means the process that runs the workflow; and so on. Because the application pool of a SharePoint farm is a very highly privileged account, it is not a recommended security practice to use Revert To Self in deployment environments.&lt;/p&gt;  &lt;p&gt;Even if you don’t use the application pool for anything besides SharePoint, the account still has enough privileges to subvert SharePoint itself (for example, being an application pool, it has privileges to write configuration information about the farm). This means that anybody able to create or edit Revert To Self systems in BDC has at least enough power to make themselves administrators of SharePoint. This was fine in the last release of SharePoint, because the only people who could create or edit BDC LOB Systems were administrators anyways. This release, though, there are lower ranks of users like tenant administrators and SharePoint Designers (SPD) who have this power.&lt;/p&gt;  &lt;p&gt;To keep SPD users from being able to elevate themselves to administrators, Revert To Self is disabled by default, and if you try to import a model that uses Revert To Self, you’ll get an error message like this one:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Application definition import failed. The following error occurred: The metadata object that has Name 'MyWebService' has a Property with name 'WebServiceAuthenticationMode' and value 'RevertToSelf'. This value indicates that the runtime should revert to the identity of the application pool, but reverting to the application pool must be explicitly enabled for the service application by a farm administrator.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You should think very carefully about the structure of your organization before enabling Revert To Self on a production server. It is almost always preferable to set up Secure Store instead; having a legacy model that uses Revert To Self is in general not a good enough justification to turn Revert To Self on. You should only turn it on if ALL of these are true:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;You are on a SKU like SharePoint 2010 Foundation that does not have SecureStore &lt;/li&gt;    &lt;li&gt;You do not have the resources to create a custom SecureStore &lt;/li&gt;    &lt;li&gt;You completely trust all of your site designers, as though they were SharePoint administrators &lt;/li&gt;    &lt;li&gt;You have locked down the use of the application pool account account, so that if it were subverted by a malicious site designer, your losses would be limited to the SharePoint farm and the external systems. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Don’t do it just because it’s convenient! Of course, this is about production servers. If you are working on a throwaway development farm, you can still turn it on for testing purposes, but be sure to test it in a real configuration before deploying.&lt;/p&gt;  &lt;p&gt;In any case, if you have a good reason to use Revert To Self, here’s how to enable it from SharePoint 2010 Management Shell (&lt;a href="http://blogs.msdn.com/bcs/archive/2010/02/16/bcs-powershell-introduction-and-throttle-management.aspx"&gt;what’s that?&lt;/a&gt;). You must be on the farm that provides the BDC service application to enable Revert To Self; if you consume it from a federated farm, the administrators of the federated farm would need to enable it for you.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt"&gt;$apps&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;Get-SPServiceApplication          &lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt"&gt;$bcs&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt"&gt;=&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 10pt"&gt;#Do something appropriate here to get the app that is        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 10pt"&gt;#BCS. If you’re doing this by hand, just type $apps and look        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 10pt"&gt;#for the Business Data one, then index into it like $apps[i].        &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 10pt"&gt;#If you’re doing it for automation, filter by        &lt;br /&gt;#$_.GetType.FullName &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 10pt"&gt;(not $_.TypeName, which is localized).        &lt;br /&gt;&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt"&gt;$bcs.RevertToSelfAllowed&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt"&gt;=&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt"&gt;$true&lt;/span&gt; &lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is an on/off switch that controls whether new models can be created/imported that utilize Revert To Self. If you later choose to turn it back off, that only prevents the creation of new models, but does not prevent you from executing methods in existing models that use Revert To Self; to solve this problem, you should delete all models in the catalog when you turn it back off. Don’t be tempted to turn Revert To Self on, import a model, and turn it back off, since somebody could edit the model to do malicious things once it exists.&lt;/p&gt;  &lt;p&gt;As a final note, if you’re playing with a test copy of SharePoint and set RevertToSelfAllowed to true for the sake of science, there are some scenarios (like tenant sites) where we will detect that there is no legitimate reason for using it, and we’ll ignore the property anyways. Don’t rely on this as a safety net for when it’s okay to enable Revert To Self.&lt;/p&gt;  &lt;h5&gt;Filters for Secondary Authentication&lt;/h5&gt;  &lt;p&gt;Like we dicussed earlier, you can improve performance of BCS calls by using Secure Store with a service account to have all of the connections run as the same user. This is great, but now the external system doesn’t know who the caller is! You can solve this problem by using filters, which will insert the relevant data for you. The best filter for this scenario is the UserContextFilter which will insert a unique, human-readable identifier for the current user. &lt;/p&gt;  &lt;p&gt;Some companies set up their SharePoint and external systems inside a tightly controlled subdomain that is fully secure. In these cases, filters can be used as a primary authentication mechanism, turning off connection level security for a performance improvement. In this configuration, authentication can be handled by using the Username and Password filters, which will use Secure Store to fill in the correct data before making the method call. SsoTicketFilters can also be used to insert a Secure Store ticket, which is similar to a claim.&lt;/p&gt;  &lt;p&gt;Keep in mind that filters are only as secure as the connection to the external system. If a user can connect directly to the external system (such as by offlining a virtual list), he can change the values of the filters to make it appear he is a different user, with or without Secure Store. To use filters as a security measure, only rely on them when they come from a trusted source like the SharePoint server.&lt;/p&gt;  &lt;h5&gt;Anonymous Authentication&lt;/h5&gt;  &lt;p&gt;It is possible to configure a SharePoint site to be accessed anonymously. The most common scenario for this is a read-only external list on a public-facing site, so that users can see the list without needing to sign in. In this case, Pass Through will go to the external system as anonymous, and Secure Store will not be usable (you cannot map “anonymous” to a service account in Secure Store). In this situation, you must allow anonymous access to the backend, so be sure to give only read permissions.&lt;/p&gt;  &lt;h4&gt;Other Security Considerations&lt;/h4&gt;  &lt;p&gt;But what about those rights you can configure in BCS? The BCS execute right is used to filter who is able to make an external system call through BCS. In some systems, this is meaningful security; eg., if you have Secure Store set up to map users to a service account, and only the service account is able to modify the backend. If you configure it so that normal SharePoint users don’t have execute permissions and don’t know the password of the service account, the external system will be secure. &lt;/p&gt;  &lt;p&gt;Notice, though, how easily this degenerates into an insecure setup. If instead the backend allowed anybody to log in, all the carefully-crafted BCS permissions in the world won’t matter, since the users could directly connect to the external system. (Incidentally, don’t rely on security through obscurity, expecting BCS to keep the address of your external system a secret. For example, anybody who can access an external list that has been offlined, or edit a model in SPD, can learn the URL directly; others can learn it by monitoring network traffic, etc.)&lt;/p&gt;  &lt;p&gt;Another easy way end up insecure is to expect that just having Secure Store makes you safe, since ordinary users can’t directly invoke it. Anybody who makes web parts with the SecureStorePermission on your SharePoint server can make one that invokes Secure Store and connects to your external system, or makes connections as the application pool. &lt;/p&gt;  &lt;h4&gt;Recap&lt;/h4&gt;  &lt;p&gt;As we’ve seen, correctly setting up authentication to your external system is crucial to keeping your data secure. Secure Store is the most desirable authentication mode, and Revert To Self should only be used in very specialized corner cases. Pass Through strikes a balance somewhere in the middle, depending on your configuration. Secondary authentication filters can be used in conjunction with Secure Store to improve performance.&lt;/p&gt;  &lt;p&gt;I hope this article has helped you pick the configuration that’s right for you and your company’s security policies. &lt;/p&gt;  &lt;p&gt;-Adam Outcalt, Software Development Engineer&lt;/p&gt;  &lt;hr align="left" size="1" width="33%" /&gt;  &lt;p id="footnote_01"&gt;[1] You can’t discover an LOB with this setting (it wouldn’t make sense), but you can change a LOB’s properties to this.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9977871" width="1" height="1"&gt;</description></item><item><title>Working with BCS in Visual Studio 2010 series</title><link>http://blogs.msdn.com/b/bcs/archive/2010/03/10/working-with-bcs-in-visual-studio-2010-series.aspx</link><pubDate>Thu, 11 Mar 2010 01:25:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9976590</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9976590</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/03/10/working-with-bcs-in-visual-studio-2010-series.aspx#comments</comments><description>&lt;p&gt;The &lt;a href="http://blogs.msdn.com/sharepoint/default.aspx"&gt;SharePoint Team Blog&lt;/a&gt; has a great series that walks you through the creation of an external list using Visual Studio 2010 and the new Business Data Connectivity Designer! The first two posts of the series are already live with more to come.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2010/03/01/walkthrough-of-enabling-crud-for-sharepoint-2010-external-lists-using-visual-studio-2010.aspx"&gt;Walkthrough of enabling CRUD for SharePoint 2010 external lists using Visual Studio 2010&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/12/03/walkthrough-of-creating-a-sharepoint-2010-external-list-using-visual-studio-2010-beta.aspx"&gt;Walkthrough of creating a SharePoint 2010 external list using Visual Studio 2010 Beta&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- Lionel Robinson, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9976590" width="1" height="1"&gt;</description></item><item><title>Introducing the SharePoint SPIdentity Team Blog</title><link>http://blogs.msdn.com/b/bcs/archive/2010/03/09/introducing-the-sharepoint-spidentity-team-blog.aspx</link><pubDate>Wed, 10 Mar 2010 00:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9975800</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9975800</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/03/09/introducing-the-sharepoint-spidentity-team-blog.aspx#comments</comments><description>&lt;P&gt;Check out the &lt;A href="http://blogs.msdn.com/spidentity" mce_href="http://blogs.msdn.com/spidentity"&gt;SharePoint SPIdentity Team Blog&lt;/A&gt; to read up on how Identity was implemented in SharePoint 2010. There, aside from an &lt;A href="http://blogs.msdn.com/spidentity/archive/2010/01/26/belated-intro-to-identity-in-sharepoint-2010.aspx" mce_href="http://blogs.msdn.com/spidentity/archive/2010/01/26/belated-intro-to-identity-in-sharepoint-2010.aspx"&gt;introductory post&lt;/A&gt;, you’ll find the first to parts to a series of blog articles that talk about configuring claims-based authentication:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/spidentity/archive/2010/01/04/claims-based-authentication-cheat-sheet-part-1.aspx" mce_href="http://blogs.msdn.com/spidentity/archive/2010/01/04/claims-based-authentication-cheat-sheet-part-1.aspx"&gt;Claims-based authentication "Cheat Sheet" Part 1&lt;/A&gt;: Forms based authentication and anonymous access&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/spidentity/archive/2010/01/23/claims-based-authentication-cheat-sheet-part-2.aspx" mce_href="http://blogs.msdn.com/spidentity/archive/2010/01/23/claims-based-authentication-cheat-sheet-part-2.aspx"&gt;Claims-based authentication "Cheat Sheet" Part 2&lt;/A&gt;: Configuring a SAML based sign-in&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;- Lionel Robinson, Program Manager&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9975800" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/bcs/archive/tags/Forms+based+authentication/">Forms based authentication</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/Authentication/">Authentication</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/FBA/">FBA</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/Claims/">Claims</category></item><item><title>Using SharePoint workflows with BCS – Full Trust Workflow Activities</title><link>http://blogs.msdn.com/b/bcs/archive/2010/03/02/using-sharepoint-workflows-with-bcs-full-trust-workflow-activities.aspx</link><pubDate>Tue, 02 Mar 2010 23:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9971870</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9971870</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/03/02/using-sharepoint-workflows-with-bcs-full-trust-workflow-activities.aspx#comments</comments><description>&lt;p&gt;In the &lt;a href="http://blogs.msdn.com/bcs/archive/2010/01/29/using-sharepoint-workflows-with-business-connectivity-services-bcs-sandboxed-workflow-actions.aspx"&gt;last post&lt;/a&gt;, we covered how to use Sandboxed Workflow Actions to lessen the stress on your external system. In this post, we will cover the final option for writing activities that surface BCS data to be used in SharePoint Designer (SPD): Full Trust Activities. These activities can be generic, but to build complex scenarios they will most likely be specific to a given scenario. In this post, I will show you how to write a simple Full Trust Activity that implements the same scenario as the last post. This time, it will be targeted to the SafeLimits external context type and will not require an external list. &lt;/p&gt;  &lt;p&gt;Full Trust Activities are written in Visual Studio and need to be installed in the GAC. They also need an actions file to be placed in the workflow template folder on each farm machine’s file system and an AuthorizedTypes entry in the web.config files on each machine to allow the assembly to execute. These have to be deployed on each farm machine, and therefore require much higher permissions and scrutiny.&lt;/p&gt;  &lt;h3&gt;Tips on Action Usage and Common Mistakes&lt;/h3&gt;  &lt;h5&gt;Use Full Trust Workflow Activities for BCS if:&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;You have permission to deploy full trust activities &lt;/li&gt;    &lt;li&gt;You want to do any of the following:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Read, Create, and Update data in an external system from a workflow with or without having an external list already provisioned.&lt;/li&gt;      &lt;li&gt;Make as few calls to the external system as possible.&lt;/li&gt;      &lt;li&gt;Have complex logic that requires looping over multiple items or associations to other external content types without using the Sandboxed Code Service.&lt;b&gt;&lt;/b&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;h5&gt;Things to keep in mind:&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Full trust activities, as their name implies, will run in full trust. This means that you should know exactly what the activity does and trust the author of the activity as though they were an administrator before you deploy the activity.&lt;/li&gt;    &lt;li&gt;If you are using this activity in SPD, you need to return a fixed number of items as SPD does not support looping. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Building the Scenario- Full Trust Workflow activity&lt;/h3&gt;  &lt;p&gt;For this post, the activity we are building will return the approver and safe limit for a given type of expense and employee ID. Information about the external content type is already built into the activity, and the activity will only work on that external content type.&lt;/p&gt;  &lt;h4&gt;Create the Workflow Activity&lt;/h4&gt;  &lt;p&gt;I’ve attached a &lt;a href="http://blogs.msdn.com/bcs/attachment/9971870.ashx"&gt;Visual Studio project&lt;/a&gt; to this post for the activity we will be talking about. Overall, we want to accomplish the same scenario as before, except this time we are not dealing with an external list; we are going to achieve the scenario solely using the Business Data Connectivity (BDC) APIs. This is a little more complex than just reading an item in a list, since the BDC APIs offer much more flexibility than just a flat list. Before we dive into the code, let’s first look at the properties that are exposed by this activity. Although I have exposed all of the activity’s properties so that they can be edited in SPD, I am building in some defaults so that we do not have to enter the information for those that should be consistent across my deployments.     &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="441"&gt;           &lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;&lt;b&gt;EntityName&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="441"&gt;           &lt;p&gt;The name of the external content type. We will hardcode this in the sample to a default, but allow you to override the value in the property grid. In production you may not want to allow EntityName, EntityNamespace and LobSystemIsntanceName to be passed in to the activity at all, as any user of SPD can change the workflow to point to a different entity and possibly get information they should not. These properties are here mostly so you can easily see how the code works.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;&lt;b&gt;EntityNamespace&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="441"&gt;           &lt;p&gt;The namespace of the external content type. We will hardcode this in the sample to a default, but allow you to override the value in the property grid.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;&lt;b&gt;LobSystemInstanceName&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="441"&gt;           &lt;p&gt;The External Systems Instance Name. All of the Instance Names in SPD are the names you type in when discovering the external system. However external content types made outside of SPD can have multiple names, which is why we need to specify one. We will hardcode this in the sample to a default, but allow you to override the value in the property grid.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;&lt;b&gt;EmployeeID&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="441"&gt;           &lt;p&gt;This is the Employee ID we are looking up.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;&lt;b&gt;Category&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="441"&gt;           &lt;p&gt;The Category of expenses. The implementation in the sample supports Morale, Equipment and Travel as the only valid inputs for this parameter.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;&lt;b&gt;Approver&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="441"&gt;           &lt;p&gt;This is returned to the user from the external system. It is the user who should approve the expense.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="172"&gt;           &lt;p&gt;&lt;b&gt;SafeLimit&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="441"&gt;           &lt;p&gt;This is returned to the user from the external system. It is the limit for that particular user, and for that type of expense.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;The next step is to look at the activity code itself. I am not going to go into any real depth into general workflow activity design and instead will just be going over the BCS specific parts of the code. The first thing to notice is that all of the code is contained in the Execute method, which is what the workflow host calls to execute the activity. In this call, the first BDC action we need to do is to get the metadata catalog that contains the “SafeLimits” external content type, as seen in the function below:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;span style="line-height: 115%; font-family: consolas; color: blue; font-size: 9.5pt; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;private&lt;/span&gt;&lt;span style="line-height: 115%; font-family: consolas; font-size: 9.5pt; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; &lt;span style="color: #2b91af"&gt;IMetadataCatalog&lt;/span&gt; GetMetadataCatalog(&lt;span style="color: #2b91af"&gt;SPSite&lt;/span&gt; site, &lt;span style="color: #2b91af"&gt;ISharePointService&lt;/span&gt; hostInterface)&lt;/span&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The code may look simple, but there are a few things to note. First, the catalog is farm scoped, not site scoped. This means that this activity will work on any site that is using the same BDC service. The second thing to notice is that the SharePoint APIs we are using to get the metadata catalog will return null if the item is not found. This is different than the BDC APIs, which will throw exceptions if items are not found (more on this later).&lt;/p&gt;  &lt;p&gt;Now that we have the metadata catalog, we have to find the external content type and return the correct data. This code is in this function:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;private&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; GetSafeLimits(&lt;span style="color: #2b91af"&gt;IMetadataCatalog&lt;/span&gt; catalog, &lt;span style="color: #2b91af"&gt;ISharePointService&lt;/span&gt; hostInterface)        &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Notice in the code sample that GetEntity is in a try catch block. This is because if the external content type was deleted, or was just not in this catalog, a MetadataObjectNotFoundException will be thrown. Instead of just crashing the workflow right there, I wanted to add an entry into the workflow history list to inform us of this, and then re-throw the exception (which would allow the workflow to fail).&lt;/p&gt;  &lt;p&gt;Once we have an external content type, we need to find a specific instance of that external content type. To do this, we use the FindSpecific method of IEntity. This function takes two parameters. First it requires the Identity of the specific instance. In our example, EmployeeID was set as the identifier, so we need to pass the EmployeeID as the Identity. You can see at this point how this has to be targeting this particular external content type. Another entity may have a different identifier with a different name and even a different type. The second parameter is the Lob System Instance that we use to find the item. As stated before, in our case, since we are using SPD, there will be only one Lob System Instance, and we will use the name that is stored in the code for that. You will also notice that FindSpecific will throw a different exception if the item is not found: an ObjectNotFoundException. Again, we will want to catch this and give a nice error to the user before re-throwing the exception so the workflow can fail. Once we have the Entity Instance, the rest is pretty simple. We can use the field names in the square brackets to get the values of the instance.&lt;/p&gt;  &lt;p&gt;Now let’s see it in action. &lt;span style="line-height: 115%; font-family: wingdings; font-size: 11pt; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa; mso-ascii-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi; mso-char-type: symbol; mso-symbol-font-family: wingdings"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: wingdings"&gt;J&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;h5&gt;Setup Instructions&lt;/h5&gt;  &lt;p&gt;To use the &lt;a href="http://blogs.msdn.com/bcs/attachment/9971870.ashx"&gt;attached sample&lt;/a&gt;, you will need to do the following&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Unzip the attached file&lt;/li&gt;    &lt;li&gt;Open in Visual Studio 2010&lt;/li&gt;    &lt;li&gt;Rebuild the solution&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Before you rebuild, make sure the defaults for entity name, namespace and lob system instance name are updated to match your setting. These are defined in the GetSafeLimits function.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Deploy the solution&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;See &lt;a href="http://blogs.msdn.com/sharepointdesigner/archive/2007/03/15/adding-activities-to-spd.aspx"&gt;http://blogs.msdn.com/sharepointdesigner/archive/2007/03/15/adding-activities-to-spd.aspx&lt;/a&gt; and look at steps 2-4 on how to deploy the dll, actions file(BCSReadActivity.Actions in the zip) and how to update the web.config&lt;/li&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;h5&gt;Building the Workflow&lt;/h5&gt;  &lt;ol&gt;   &lt;li&gt;In SPD, go to the ExpenseReports document library you created in the &lt;a href="http://blogs.msdn.com/bcs/archive/2010/01/29/using-sharepoint-workflows-with-business-connectivity-services-bcs-sandboxed-workflow-actions.aspx"&gt;last post&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Click on New List Workflow&lt;/li&gt;    &lt;li&gt;Give the workflow a name and description and continue&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Note: At this point, you are in the workflow designer, and you can start to add your actions.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Insert the “Get Safe Limits for Employee” Action&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;For the first two parameters, you can leave them alone. These are the output variables from the function for Approver and SafeLimit.&lt;/li&gt;      &lt;li&gt;For the third parameter, we want to specify the Category. This is already defined on our list, so as before, pick the ExpenseType column using the CurrentItem by using the &lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/UsingSharePointworkflowswithBCSFullTrust_DFB2/clip_image002_3.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/UsingSharePointworkflowswithBCSFullTrust_DFB2/clip_image002_thumb.jpg" width="20" height="19" /&gt;&lt;/a&gt; button&lt;/li&gt;      &lt;li&gt;For the last parameter, pick the EmployeeID column using the CurrentItem by using the &lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/UsingSharePointworkflowswithBCSFullTrust_DFB2/clip_image002%5B1%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002[1]" border="0" alt="clip_image002[1]" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/UsingSharePointworkflowswithBCSFullTrust_DFB2/clip_image002%5B1%5D_thumb.jpg" width="20" height="19" /&gt;&lt;/a&gt; button&lt;/li&gt;      &lt;li&gt;You should end up with something that looks like this:&lt;/li&gt;   &lt;/ul&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/UsingSharePointworkflowswithBCSFullTrust_DFB2/clip_image004_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/UsingSharePointworkflowswithBCSFullTrust_DFB2/clip_image004_thumb.jpg" width="540" height="64" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And that’s it. I hope you found these articles useful and good luck with workflow and BCS!&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- JD Klaka &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9971870" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-97-18-70/BCSReadActivity.zip" length="13157" type="application/x-zip-compressed" /></item><item><title>Deploying BCS Simple Solutions</title><link>http://blogs.msdn.com/b/bcs/archive/2010/02/25/deploying-bcs-simple-solutions.aspx</link><pubDate>Thu, 25 Feb 2010 19:49:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9969483</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9969483</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/02/25/deploying-bcs-simple-solutions.aspx#comments</comments><description>&lt;p&gt;Previous posts have mentioned how to represent &lt;a href="http://blogs.msdn.com/bcs/archive/2009/12/02/introducing-the-external-content-type.aspx"&gt;business data as external content types&lt;/a&gt;, creating external lists out of these external content types, and how to eventually make this business data available offline in Office applications like &lt;a href="http://blogs.msdn.com/bcs/archive/2009/12/04/bcs-team-channel-external-lists-in-outlook.aspx"&gt;Outlook&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/bcs/archive/2009/12/14/bcs-team-channel-external-data-in-sharepoint-workspace.aspx"&gt;SharePoint Workspace&lt;/a&gt;. The posts showed that this data is taken offline in form of a BCS simple solution which the user then installs on the client machine. In this post I will talk a little bit more on the nature of this BCS solution and point out some information that is important to know to ensure that you have a seamless experience deploying simple solutions.&lt;/p&gt;  &lt;p&gt;When you click the “Connect to Outlook” or “Sync to SharePoint Workspace” button on an external list, the first thing we do is to package all the artifacts relevant to this external list into a &lt;a href="http://msdn.microsoft.com/en-us/library/142dbbz4.aspx"&gt;ClickOnce application&lt;/a&gt; package, which then constitutes our BCS solution. As such, a BCS solution is inherently a ClickOnce application, and all the rules, regulations and limitations that govern general ClickOnce applications are applicable to our BCS solutions. Once this ClickOnce application has been successfully created, and the necessary prerequisites are met on the client, then the Visual Studio Tools for the Office system (VSTO) installer is launched to install the application.&lt;/p&gt;  &lt;h3&gt;Security in ClickOnce Applications&lt;/h3&gt;  &lt;p&gt;ClickOnce security model relies on trusted publishers or user prompting to determine elevation of privileges that would allow a ClickOnce application to be deployed to a client. If a ClickOnce application has been signed by a &lt;a href="http://msdn.microsoft.com/en-us/library/01daf08f.aspx"&gt;trusted publisher&lt;/a&gt;, then the application, without prompting, automatically elevates its own privileges and goes ahead with the installation. However, if the application has not been signed by a trusted publisher, then ClickOnce does not automatically trust this application, and you are prompted to confirm that you want to install the application. However, this prompting is neither automatic nor is it guaranteed: it is determined by the security zone from which the ClickOnce application is being installed from, as explained below. &lt;/p&gt;  &lt;h3&gt;User Prompting Based on Security Zones&lt;/h3&gt;  &lt;p&gt;ClickOnce makes use of &lt;a href="http://msdn.microsoft.com/en-us/library/z17ceyya.aspx"&gt;Code Access Security (CAS)&lt;/a&gt; to determine the deployment experience, for instance whether or not you should see a prompt asking if you want to install a solution. By default, ClickOnce relies on the five built-in security zones that are defined in Internet Explorer (IE): &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;MyComputer &lt;/li&gt;    &lt;li&gt;LocalIntranet &lt;/li&gt;    &lt;li&gt;Internet &lt;/li&gt;    &lt;li&gt;TrustedSites &lt;/li&gt;    &lt;li&gt;UntrustedSites &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These zones are used by CAS to make trust decisions for prompting level and behavior. Each zone is determined by the full path address of the deployment manifest file (in the BCS case, this is the URL of the BCS solution in the external list.) Below is an example of some URLs and their corresponding security zones:&lt;/p&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="433"&gt;           &lt;p&gt;&lt;b&gt;ClickOnce application URL&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="205"&gt;           &lt;p&gt;&lt;b&gt;Security Zone&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="433"&gt;           &lt;p&gt;C:\contoso\clientsolution\customer.vsto&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="205"&gt;           &lt;p&gt;MyComputer&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="433"&gt;           &lt;p&gt;http://contoso/clientsolution/customer.vsto&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="205"&gt;           &lt;p&gt;LocalIntranet&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="433"&gt;           &lt;p&gt;\\contoso\clientsolution\customer.vsto&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="205"&gt;           &lt;p&gt;LocalIntranet&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="433"&gt;           &lt;p&gt;http://fabrikam.contoso/clientsolution/customer.vsto&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="205"&gt;           &lt;p&gt;Internet&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="433"&gt;           &lt;p&gt;http://www.contoso.com/clientsolution/customer.vsto&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="205"&gt;           &lt;p&gt;Internet&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="433"&gt;           &lt;p&gt;\\127.0.0.1\clientsolution\customer.vsto&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="205"&gt;           &lt;p&gt;Internet&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Whether or not a user should see a prompt before a ClickOnce application can be installed is determined by the security zone as follows:    &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;&lt;b&gt;Security Zone&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="523"&gt;           &lt;p&gt;&lt;b&gt;Default Trusting Prompt Behavior&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;MyComputer&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="523"&gt;           &lt;p&gt;Allow user prompting&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;LocalIntranet&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="523"&gt;           &lt;p&gt;Allow user prompting&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;Internet&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="523"&gt;           &lt;p&gt;No user prompting allowed &lt;i&gt;unless&lt;/i&gt; the solution is signed by a certificate whose issuer is a trusted Certificate Authority (CA)&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;TrustedSites&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="523"&gt;           &lt;p&gt;Allow user prompting&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="115"&gt;           &lt;p&gt;UntrustedSites&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="523"&gt;           &lt;p&gt;No user prompting allowed &lt;i&gt;unless&lt;/i&gt; the solution is signed by a &lt;i&gt;trusted&lt;/i&gt; certificate whose issuer is a trusted CA&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;The MSDN article “&lt;a href="http://msdn.microsoft.com/en-us/library/ms996418.aspx"&gt;Configuring ClickOnce Trusted Publishers&lt;/a&gt;” has more information on security zones and how to deal with prompting (pay special attention to the “Get into the Zone” section).&lt;/p&gt;  &lt;p&gt;Our out-of-box deployment experience uses a self-signed certificate to sign our BCS solutions. Being self-signed, therefore, the certificate is not from a trusted CA. This leads to the following default experience for LocalIntranet and Internet zones:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;If your external list is in a LocalIntranet zone when you take it offline, then you’ll see a prompt like the following:      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image002_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image002_thumb.jpg" width="524" height="264" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;If your external list is in an Internet zone then you won’t be prompted, and deployment will thus fail with an error like the following:      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image004_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image004_thumb.jpg" width="524" height="255" /&gt;&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;&lt;b&gt;Avoiding Deployment Failures due to Default Prompting Policy&lt;/b&gt;&lt;/h3&gt;  &lt;p&gt;To get around the deployment failure described above, then you can choose to do &lt;i&gt;any&lt;/i&gt; of the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In an enterprise scenario, administrators can provide CA-issued certificates to be used to sign their BCS solutions. Another post on our BCS blog, “&lt;a href="http://blogs.msdn.com/bcs/archive/2010/01/22/how-can-i-get-rid-of-the-publisher-cannot-be-verified-message-when-taking-external-lists-offline.aspx"&gt;How can I get rid of the “Publisher cannot be verified” message when taking external lists offline?&lt;/a&gt;” explains how to do this.&lt;/li&gt;    &lt;li&gt;In an enterprise scenario, administrators can also push a Trust prompting policy through their &lt;a href="http://technet.microsoft.com/en-us/library/cc754948(WS.10).aspx"&gt;Group Policy&lt;/a&gt; infrastructure if they want different prompting policy than the default ones explained above.&lt;/li&gt;    &lt;li&gt;Users can add the SharePoint site to the list of Trusted sites or the Local intranet sites in IE. Needless to say, this is not recommended for every site and should only be done for sites that the user can vouch for.&lt;/li&gt;    &lt;li&gt;Users can add a PromptingLevel registry key that defines the behavior that they want. The MSDN article “&lt;a href="http://msdn.microsoft.com/en-us/library/bb772070(VS.100).aspx"&gt;How to: Configure Inclusion List Security&lt;/a&gt;” explains how to do this. Something to note here is that if you have installed the 32 bit version of Office on a 64 bit machine, then the registry key needs to be created in the corresponding Wow6432Node node.&lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Prerequisites for BCS Solution Deployment&lt;/h3&gt;  &lt;p&gt;It is worth mentioning that connecting an external list to either Outlook or SharePoint Workspace can only be done from a SharePoint Server 2010 with &lt;a href="http://sharepoint2010.microsoft.com/product/editions/Pages/default.aspx"&gt;Enterprise Client Access License&lt;/a&gt; – &lt;i&gt;all&lt;/i&gt; other servers such as SharePoint Foundation 2010 will not be supported. Now, for a BCS solution to be deployed to a client machine, it needs to have Office Professional Plus 2010 or Outlook 2010 standalone already installed. Other requirements for connecting an external list to function are the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;b&gt;.NET Framework 3.5 (.Net 3.5)&lt;/b&gt;       &lt;br /&gt;Service pack 1 is also supported. If .Net 3.5 is not installed, then you will see this error message when you try to connect an external list to Outlook:       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image006_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image006_thumb.jpg" width="483" height="165" /&gt;&lt;/a&gt;      &lt;br /&gt;      &lt;br /&gt;SharePoint Workspace will show the following error:       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image008_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image008_thumb.jpg" width="498" height="174" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Business Connectivity Services (BCS) feature&lt;/b&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;BCS feature is installed by default when Office Professional Plus 2010 is installed. However, the feature is dependent on .Net 3.5, so if .Net 3.5 is not installed at the time of Office installation, then BCS will not be installed. You will therefore see the above error message if you try to take an external list offline as we’ll first detect that .Net 3.5 is not installed.&lt;/li&gt;      &lt;li&gt;If you eventually install .Net 3.5 and then take an external list offline, the first thing we do is to perform BCS Install on Demand. You will at this point see Office being configured, and once this is done, VSTO installer will be launched to install the solution.&lt;/li&gt;      &lt;li&gt;If you have .Net 3.5 installed but choose not to install BCS (by marking it as “Not Available” in Office Installation Options under Office Shared Features) then you will see the following error message when you try to take the external list offline to Outlook:        &lt;br /&gt;        &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image010_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image010_thumb.jpg" width="474" height="208" /&gt;&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;SharePoint Workspace will show the following error:         &lt;br /&gt;        &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image012_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image012_thumb.jpg" width="496" height="202" /&gt;&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ol&gt;  &lt;h3&gt;Browser Support for BCS Solution Deployment&lt;/h3&gt;  &lt;p&gt;Our mechanism for taking external lists offline makes use of an ActiveX control to check the prerequisites mentioned above. Since only IE supports ActiveX controls, taking external lists offline is only supported in IE. The experience in non IE browsers like Firefox is that the “Connect to Outlook” and “Sync to SharePoint Workspace” buttons will be disabled as shown below: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image014_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/DeployingBCSSimpleSolutions_A660/clip_image014_thumb.jpg" width="325" height="103" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Summary&lt;/h3&gt;  &lt;p&gt;In this post, we discussed the nature of BCS solutions and pointed out that they are essentially ClickOnce applications. We talked about the security model surrounding ClickOnce applications, including using trusted publishers to sign the applications, and making use of the various security zones to determine the default prompting behavior. We provided some ways of avoiding deployment failures due to default prompting policy, and finally, we mentioned some prerequisites that are necessary for successful deployment of BCS simple solutions.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- Sam Kabue, Software Development Engineer in Test &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9969483" width="1" height="1"&gt;</description></item><item><title>Making Web Services BCS Friendly – Part 2</title><link>http://blogs.msdn.com/b/bcs/archive/2010/02/23/making-web-services-bcs-friendly-part-2.aspx</link><pubDate>Wed, 24 Feb 2010 00:28:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9968385</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9968385</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/02/23/making-web-services-bcs-friendly-part-2.aspx#comments</comments><description>&lt;p&gt;As mentioned in the &lt;a href="http://blogs.msdn.com/bcs/archive/2009/10/19/overview-of-business-connectivity-services.aspx"&gt;overview&lt;/a&gt; post, Business Connectivity Services in SharePoint 2010 allows end users to interact with external data using SharePoint and Office interfaces. For this, BCS provides an abstract data access layer that SharePoint and Office applications can consume. The abstraction is achieved through some stereotype methods supported in BCS. These stereotypes are based on some of the common patterns in popular external systems. &lt;/p&gt;  &lt;p&gt;In &lt;a href="http://blogs.msdn.com/bcs/archive/2009/11/18/making-web-services-bcs-friendly-part-1.aspx"&gt;Making web services BCS friendly- Part 1&lt;/a&gt;, we reviewed the semantic requirements for the Read methods required to present external data in the form of an external list in SharePoint 2010. In this post we will look at enabling “Create”, “Update” and “Delete” capability (CUD) and review the semantic requirements that the corresponding backend web service methods have to satisfy.&lt;/p&gt;  &lt;p&gt;As mentioned in &lt;a href="http://blogs.msdn.com/bcs/archive/2009/11/18/making-web-services-bcs-friendly-part-1.aspx"&gt;part 1&lt;/a&gt;, these recommendations are applicable to .Net assemblies and WCF services as well. You can see the &lt;a href="http://msdn.microsoft.com/en-us/library/ee557363(office.14).aspx"&gt;full list of stereotypes on MSDN&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Creator &lt;/h3&gt;  &lt;p&gt;BCS supports create functionality through the “Creator” stereotype. This stereotype is used to create an item in the external system. For example, given a business object called “Customer”, this method can be used to create a new customer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/bcs/archive/2009/11/18/making-web-services-bcs-friendly-part-1.aspx"&gt;Part1&lt;/a&gt; described a view in BCS. For a create method, the set of fields that are required to create the new item is referred to as the “Creator View”.&lt;/p&gt;  &lt;h5&gt;Recommendations for the corresponding web service method&lt;/h5&gt;  &lt;p&gt;To qualify as a Creator, the corresponding web service method should:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Take the fields required to create the item as input parameters &lt;/li&gt;    &lt;li&gt;Either take the identifier (or combination of identifiers) of the item as input – OR – Return the Identifier (or combination of identifiers) for the newly created item &lt;/li&gt;    &lt;li&gt;The Creator View should be equal to or a subset of the view of the specific finder method (see example below) &lt;/li&gt;    &lt;li&gt;If there are multiple specific finders, the creator view should be equal or subset of at least one specific finder view &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Creator View and Specific Finder View&lt;/h5&gt;  &lt;p&gt;As mentioned above, the creator view must be equal to or a subset of at least one specific finder view (It may include read only fields). This is because in external lists, the BCS auto generated forms used for creating items are based on the Specific Finder view. If the creator view has extra fields, these will not be displayed on the auto generated forms and can cause problem with the create operation. To avoid this, BCS will check for this dependency and disable the create operation on the external list if the creator view is larger than the specific finder view. &lt;/p&gt;  &lt;p&gt;If Creator View is a subset of the specific finder view, BCS will allow creation of the item with the create operation in external lists. But for offline scenarios (for instance Outlook), an update method will be required as BCS will call the update method immediately after the create method (for updating the fields that are not included in the creator view). &lt;/p&gt;  &lt;p&gt;See examples later in this post for different scenarios in which create is allowed or not allowed.&lt;/p&gt;  &lt;h5&gt;&lt;b&gt;Other notes&lt;/b&gt;&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;The backend web service method should ensure that the create operation is transactional. The BCS stereotype merely maps to the backend method. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Updater&lt;/h3&gt;  &lt;p&gt;BCS supports update functionality through the “Updater” stereotype. This stereotype is used for updating an item given its identifier (or combination of identifiers). For example, given a business object called “Customer”, this method can be used to update the customer’s phone number. &lt;/p&gt;  &lt;p&gt;For an update method, the set of fields that are required to update the item is referred to as the “Updater View”.&lt;/p&gt;  &lt;h5&gt;Recommendations for the corresponding web service method&lt;/h5&gt;  &lt;p&gt;To qualify as an Updater, the corresponding web service method should: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Take the identifier (or combination of identifiers) of the item as input &lt;/li&gt;    &lt;li&gt;The updater view      &lt;ul&gt;       &lt;li&gt;Must contain all non-read only fields in the specific finder view &lt;/li&gt;        &lt;li&gt;Must be equal to or a subset of the specific finder view &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;If there are multiple specific finders, the updater view should be equal or subset of at least one specific finder view. &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Updater View and Specific Finder View&lt;/h5&gt;  &lt;p&gt;As in case of the Creator view, the Updater view must be equal to or a subset of the view of one of the specific finders. This is because the BCS auto generated forms are dependent on the Specific Finder view. If the Updater view is not equal to or a subset of the view of one of the specific finders, the extra fields in the updater view will not be updatable. Just like the create operation, BCS will check for this dependency and disable the update operation on the external list. &lt;/p&gt;  &lt;p&gt;Updatable identifier (or combination of identifiers) can also be updated by this stereotype BUT they are not supported by the default BCS forms.&lt;/p&gt;  &lt;h5&gt;&lt;b&gt;Other notes&lt;/b&gt;&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;The backend web service method should ensure that the update operation is transactional. The BCS stereotype merely maps to the backend method. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;· The BCS update stereotype maps to a single API of the back-end. For aggregation the .NET connector should be used. &lt;/p&gt;  &lt;h4&gt;&lt;b&gt;Examples&lt;/b&gt;&lt;/h4&gt;  &lt;p&gt;The following table summarizes the dependencies for Creator View and Update View and status for create and update operations:    &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="67"&gt;           &lt;p&gt;&lt;b&gt;Scenario &lt;/b&gt;&lt;b&gt;#&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="102"&gt;           &lt;p&gt;&lt;b&gt;Fields in Specific Finder View&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="66"&gt;           &lt;p&gt;&lt;b&gt;Fields in Creator View &lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="72"&gt;           &lt;p&gt;&lt;b&gt;Fields in Updater View&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="192"&gt;           &lt;p&gt;&lt;b&gt;Operations allowed&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;&lt;b&gt;Notes&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="67"&gt;           &lt;p&gt;1.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="102"&gt;           &lt;p&gt;A              &lt;br /&gt;B (read only)               &lt;br /&gt;C               &lt;br /&gt;D               &lt;br /&gt;E (read only)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="66"&gt;           &lt;p&gt;A              &lt;br /&gt;B               &lt;br /&gt;C               &lt;br /&gt;D               &lt;br /&gt;E               &lt;br /&gt;F&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="72"&gt;           &lt;p&gt;A              &lt;br /&gt;              &lt;br /&gt;C               &lt;br /&gt;D               &lt;br /&gt;              &lt;br /&gt;F&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="192"&gt;           &lt;ul&gt;             &lt;li&gt;Create: Not allowed &lt;/li&gt;              &lt;li&gt;Update: Not allowed &lt;/li&gt;              &lt;li&gt;Offline Create: Not allowed &lt;/li&gt;              &lt;li&gt;Offline Update: Not allowed &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;The field F for the creator and updater cannot be found on the specific finder. This causes BCS to disable both create and update operations.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="67"&gt;           &lt;p&gt;2.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="102"&gt;           &lt;p&gt;A              &lt;br /&gt;B (read only)               &lt;br /&gt;C               &lt;br /&gt;D               &lt;br /&gt;E (read only)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="66"&gt;           &lt;p&gt;A              &lt;br /&gt;B               &lt;br /&gt;C               &lt;br /&gt;D               &lt;br /&gt;E&lt;/p&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="72"&gt;           &lt;p&gt;A              &lt;br /&gt;              &lt;br /&gt;C               &lt;br /&gt;D&lt;/p&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="192"&gt;           &lt;ul&gt;             &lt;li&gt;Create: Allowed &lt;/li&gt;              &lt;li&gt;Update: Allowed &lt;/li&gt;              &lt;li&gt;Offline Create: Allowed &lt;/li&gt;              &lt;li&gt;Offline Update: Allowed &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;Values of fields B and E can be specified by user during create but cannot be updated later.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="67"&gt;           &lt;p&gt;3.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="102"&gt;           &lt;p&gt;A              &lt;br /&gt;B (read only)               &lt;br /&gt;C               &lt;br /&gt;D               &lt;br /&gt;E (read only)&lt;/p&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="66"&gt;           &lt;p&gt;A              &lt;br /&gt;B&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="72"&gt;           &lt;p&gt;A              &lt;br /&gt;              &lt;br /&gt;C               &lt;br /&gt;D&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="192"&gt;           &lt;ul&gt;             &lt;li&gt;Create: Allowed &lt;/li&gt;              &lt;li&gt;Update: Allowed &lt;/li&gt;              &lt;li&gt;Offline Create: Allowed &lt;/li&gt;              &lt;li&gt;Offline Update: Allowed &lt;/li&gt;           &lt;/ul&gt;            &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;Value of field B can be specified by user during create but cannot be updated later.&lt;/p&gt;            &lt;p&gt;Value of field E is assigned by the external system and cannot be updated by the user.&lt;/p&gt;            &lt;p&gt;For offline create, the update operation is called immediately after create.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="67"&gt;           &lt;p&gt;4.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="102"&gt;           &lt;p&gt;A              &lt;br /&gt;B (read only)               &lt;br /&gt;C               &lt;br /&gt;D               &lt;br /&gt;E (read only)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="66"&gt;           &lt;p&gt;A              &lt;br /&gt;B&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="72"&gt;           &lt;p&gt;A              &lt;br /&gt;              &lt;br /&gt;C&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="192"&gt;           &lt;ul&gt;             &lt;li&gt;Create: Allowed on default EL forms only &lt;/li&gt;              &lt;li&gt;Update: Not allowed &lt;/li&gt;              &lt;li&gt;Offline Create: Not allowed &lt;/li&gt;              &lt;li&gt;Offline Update: Not allowed &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;Field D cannot be updated. This inconsistency causes BCS to disable the update operation.&lt;/p&gt;            &lt;p&gt;Offline create is disabled because there is no valid update operation.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="67"&gt;           &lt;p&gt;5.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="102"&gt;           &lt;p&gt;A              &lt;br /&gt;B (read only)               &lt;br /&gt;C               &lt;br /&gt;D               &lt;br /&gt;E (read only)&lt;/p&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="66"&gt;           &lt;p&gt;A              &lt;br /&gt;              &lt;br /&gt;C               &lt;br /&gt;D&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="72"&gt;           &lt;p&gt;No update operation defined&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="192"&gt;           &lt;ul&gt;             &lt;li&gt;Create: Allowed &lt;/li&gt;              &lt;li&gt;Update: Not Allowed &lt;/li&gt;              &lt;li&gt;Offline Create: Allowed &lt;/li&gt;              &lt;li&gt;Offline Update: Not allowed &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;Values of fields B and E are both assigned by the external system.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="67"&gt;           &lt;p&gt;6.&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="102"&gt;           &lt;p&gt;A              &lt;br /&gt;B (read only)               &lt;br /&gt;C               &lt;br /&gt;D               &lt;br /&gt;E (read only)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="66"&gt;           &lt;p&gt;A              &lt;br /&gt;B               &lt;br /&gt;C&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="72"&gt;           &lt;p&gt;No update operation defined&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="192"&gt;           &lt;ul&gt;             &lt;li&gt;Create: Allowed on default EL forms only &lt;/li&gt;              &lt;li&gt;Update: Not allowed &lt;/li&gt;              &lt;li&gt;Offline Create: Not allowed &lt;/li&gt;              &lt;li&gt;Offline Update: Not allowed &lt;/li&gt;           &lt;/ul&gt;         &lt;/td&gt;          &lt;td valign="top" width="168"&gt;           &lt;p&gt;Value of Field D cannot be set during create and there is no valid update operation defined for setting it later. This causes BCS to disable offline create operation.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;h3&gt;Deleter&lt;/h3&gt;  &lt;p&gt;This stereotype is used for deleting an item given its identifier. For example, given a business object called “Customer”, this method can be used to delete a customer with Id 1001.&lt;/p&gt;  &lt;h5&gt;Recommendations for the corresponding web service method&lt;/h5&gt;  &lt;p&gt;To qualify as a Deleter, the corresponding web service method: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Should take the identifier (or combination of identifiers) of the item as input. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In this post we discussed create, update and delete stereotypes required for enabling CUD capability. Future posts that will cover the other advanced &lt;a href="http://msdn.microsoft.com/en-us/library/ee557363(office.14).aspx"&gt;stereotypes&lt;/a&gt; such as Association Navigators, Id Enumerator etc.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- Sanjay Rama, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9968385" width="1" height="1"&gt;</description></item><item><title>Overview of BCS Advanced Code-Based Solutions</title><link>http://blogs.msdn.com/b/bcs/archive/2010/02/19/overview-of-bcs-advanced-code-based-solutions.aspx</link><pubDate>Sat, 20 Feb 2010 01:19:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9966657</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9966657</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/02/19/overview-of-bcs-advanced-code-based-solutions.aspx#comments</comments><description>&lt;p&gt;Business Connectivity Services (BCS) provides many out-of-box capabilities that deliver rich, end-to-end solutions. BCS is also a programmable platform, allowing developers to further extend BCS to create customized solutions.&lt;/p&gt;  &lt;p&gt;Three types of BCS solutions that can be created are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Simple Solutions (which leverage out-of-box capabilities) &lt;/li&gt;    &lt;li&gt;Intermediate Declarative Solutions &lt;/li&gt;    &lt;li&gt;Advanced Code-Based Solutions &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;For a description of these three types of BCS solutions see Brad Stevenson’s post &lt;a href="http://blogs.msdn.com/bcs/archive/2009/11/12/types-of-solutions.aspx"&gt;Types of Solutions&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This post will focus on Advanced Code-Based solutions, which are solutions and extensions coded by developers. They range from rich end-to-end solutions with code components running on the client and on the server, to re-usable BCS components that can be re-used by Power Users for declarative-type solutions.&lt;/p&gt;  &lt;p&gt;To begin, let’s look at an important distinguishing factor for these types of solutions: the Object Model (OM) that the developers code against.&lt;/p&gt;  &lt;h3&gt;Object Model&lt;/h3&gt;  &lt;p&gt;Developers will code against a particular OM to retrieve and manipulate External Data, either directly from the External System (while connected) or locally from the BCS Rich Client Cache.&lt;/p&gt;  &lt;p&gt;There are two significant OMs to consider: the SharePoint OM and the BDC OM. Each display unique advantages and limitations, and as a result are appropriate for use with different types of solutions. The intention of this post is to guide developers to ask the right questions during the planning stages and thus help them to arrive at the best possible design for their solution.&lt;/p&gt;  &lt;h4&gt;OM Choice – List Parity&lt;/h4&gt;  &lt;p&gt;External Data can be presented in the form of an External List, which is designed to be analogous to a regular SharePoint List (SPList). Because of this, developers can either code against these SharePoint “External” Lists similar to how they do with regular lists, or they can choose to code against the BDC OM by manipulating the &lt;a href="http://blogs.msdn.com/bcs/archive/2009/12/02/introducing-the-external-content-type.aspx"&gt;External Content Type&lt;/a&gt; directly.&lt;/p&gt;  &lt;p&gt;Both the SharePoint OM and the BDC OM have a server component and a client component, and each is described below.&lt;/p&gt;  &lt;h5&gt;SharePoint OM&lt;/h5&gt;  &lt;p&gt;External Data can be manipulated through External Lists using the SPList class in the &lt;i&gt;Microsoft.SharePoint&lt;/i&gt; namespace of the server-side OM. Developers can also manipulate lists in code from the client, through the corresponding List class counterpart in the client-side OM (known as the CSOM) in the &lt;i&gt;Microsoft.SharePoint.Client &lt;/i&gt;and &lt;i&gt;Microsoft.SharePoint.Client.Silverlight&lt;/i&gt; namespaces.&lt;/p&gt;  &lt;h5&gt;BDC OM&lt;/h5&gt;  &lt;p&gt;The BDC OM is available on both the server and the client in SharePoint Foundation 2010, SharePoint Server 2010 and Office Professional Plus 2010. Operations are performed on the External Content Type, so an External List is not necessary.&lt;/p&gt;  &lt;p&gt;For more detail view the &lt;a href="http://msdn.microsoft.com/en-us/library/ee557766(office.14).aspx"&gt;Business Connectivity Services Class Library&lt;/a&gt; on MSDN.&lt;/p&gt;  &lt;h5&gt;SharePoint OM versus BDC OM&lt;/h5&gt;  &lt;p&gt;The following diagram may help to assist you in visualizing the External Data access stack.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/OverviewofBCSAdvancedCodeBasedSolutions_F39C/clip_image002%5B1%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002[1]" border="0" alt="clip_image002[1]" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/OverviewofBCSAdvancedCodeBasedSolutions_F39C/clip_image002%5B1%5D_thumb.jpg" width="540" height="349" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The BDC OM performs Create, Read, Update and Delete (CRUD) operations through an External Content Type on the External Data, from both the server and the client.&lt;/p&gt;  &lt;p&gt;The SPList class sits on top of the BDC OM to perform CRUD operations on an External List from the server.&lt;/p&gt;  &lt;p&gt;The CSOM wraps the server-side OM to perform operations from the client.&lt;/p&gt;  &lt;p&gt;When developing on the server, there is an option for which entry point in the stack to code against. The recommended option is to code against the SPList class to manipulate External List data. SPList has benefits such as the ability to run in a Partially Trusted Environment, being widely available to developers and works with any code already written to perform list operations against regular SharePoint lists.&lt;/p&gt;  &lt;p&gt;However, there are certain limitations displayed by the SPList class pertaining to External Data. When these limitations are encountered, the secondary option is to code against the lower-level APIs of the BDC OM by manipulating the External Content Types directly. These limitations for fields are encountered when the following requirements occur:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/bcs/archive/2010/02/10/working-with-complex-data-types-in-business-connectivity-services.aspx"&gt;Complex&lt;/a&gt; and custom types &lt;/li&gt;    &lt;li&gt;No mapping between .NET type to SPField type exists (e.g. System.Object) &lt;/li&gt;    &lt;li&gt;ID field is of type int64 &lt;/li&gt;    &lt;li&gt;Paging or “data chunking” of data &lt;/li&gt;    &lt;li&gt;Bulk operations (e.g. reading 25 instances simultaneously) &lt;/li&gt;    &lt;li&gt;Streaming data from External Systems (e.g. binary large objects aka BLOBs) &lt;/li&gt;    &lt;li&gt;Different back-end views for Create and Update operations &lt;/li&gt;    &lt;li&gt;Invoking a SpecificFinder (Read Item Operation) with non-integer IDs &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Types of Solutions&lt;/h3&gt;  &lt;p&gt;Developers can create client components (where the code runs on the end-user’s client machine), server components (browser-based, where the code runs on the server machine), or end-to-end solutions that span both server and client.&lt;/p&gt;  &lt;p&gt;For client components, developers can choose to create a Microsoft Office Add-in or a Microsoft Silverlight Application.&lt;/p&gt;  &lt;p&gt;There are several different BCS solution designs available, and depend on some of the following factors:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Client or server component &lt;/li&gt;    &lt;li&gt;Office Add-in or Silverlight Application &lt;/li&gt;    &lt;li&gt;Online-only solution, or using the BCS Rich Client Cache &lt;/li&gt;    &lt;li&gt;Will the solution be self-contained, or will it leverage metadata and subscriptions that have already been deployed through other solutions &lt;/li&gt;    &lt;li&gt;For Outlook solutions, should you use the Outlook Integrated Runtime Solution Manifest for data cross-synchronization between Outlook and the BCS Rich Client Cache &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The following flowchart will assist you to select an appropriate solution design based on these requirements: (Click the image to view it in full resolution.)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/OverviewofBCSAdvancedCodeBasedSolutions_F39C/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/OverviewofBCSAdvancedCodeBasedSolutions_F39C/image_thumb_1.png" width="540" height="360" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As you can see, there are several different types of BCS solutions:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Custom Server Component &lt;/li&gt;    &lt;li&gt;Silverlight Application &lt;/li&gt;    &lt;li&gt;Office Add-in      &lt;ul&gt;       &lt;li&gt;Pre-deployed &lt;/li&gt;        &lt;li&gt;Self-contained &lt;/li&gt;        &lt;li&gt;Online-only &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Office Outlook Add-in      &lt;ul&gt;       &lt;li&gt;Self-contained &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Further documentation in the SharePoint 2010 Software Development Kit (SDK) will explain each of these design types in detail, but for now here are some key explanations:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Pre-deployed:&lt;/b&gt; an Office Add-in can leverage the solutions that have already had metadata and subscriptions deployed to the client of a machine. These types of solutions discover and reflect upon data in the BCS Rich Client Cache.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Online-only:&lt;/b&gt; an Office Add-in which accesses data directly from the External System through the BDC OM or by using the client-side OM to go through the server when special circumstances require them to do so (i.e. a corporate firewall blocking direct access to the External System).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Self-contained:&lt;/b&gt; an Office Add-in similar to the pre-deployed type, except that is uses a special data-only deployment package (aka Data Solution) to bring the data to the cache.&lt;/p&gt;  &lt;h3&gt;Summary&lt;/h3&gt;  &lt;p&gt;In this post we’ve looked in more detail at one of the three types of BCS solutions: the Advanced Code-Based Solution. We mentioned that developers can create re-usable components, client solution components, server solution components, or full end-to-end solutions that span server and client.&lt;/p&gt;  &lt;p&gt;Then, we introduced the differences between Object Models and our recommendations for when to use the SharePoint OM and when to use the BDC OM.&lt;/p&gt;  &lt;p&gt;Finally, we looked at some important design considerations and the types of solutions that these design characteristics can lead us to. We also brought up some of the different variations of data deployment for Office Add-ins.&lt;/p&gt;  &lt;p&gt;Thanks for reading.&lt;/p&gt;  &lt;p&gt;- Russell Palmer, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9966657" width="1" height="1"&gt;</description></item><item><title>BCS PowerShell: Introduction and Throttle Management</title><link>http://blogs.msdn.com/b/bcs/archive/2010/02/16/bcs-powershell-introduction-and-throttle-management.aspx</link><pubDate>Wed, 17 Feb 2010 01:10:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9964756</guid><dc:creator>lionelro</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9964756</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/02/16/bcs-powershell-introduction-and-throttle-management.aspx#comments</comments><description>&lt;p&gt;Your external list worked great when you tested it, but it’s not working on the deployment server! Reading the SharePoint &lt;a&gt;logs&lt;/a&gt;, you see a message like one of these: &lt;/p&gt;  &lt;p style="margin: 0in 0.5in 10pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 9pt"&gt;Timeout expired. BDC Runtime Object Model has throttled the response. The response from the service took more than '180000' milliseconds. The limit can be changed via the &amp;quot;Set-SPBusinessDataCatalogThrottleConfig' cmdlet. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0.5in 10pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 9pt"&gt;WCF Service Connector has throttled the response. The response from the WCF service contains more than '3000000' bytes. The maximum amount of data that can be read through WCF Service Connector is '3000000' bytes. The limit can be changed via the 'Set-SPBusinessDataCatalogThrottleConfig' cmdlet. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0.5in 10pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 9pt"&gt;Web Service Connector has throttled the response. The response from the web service contains more than ‘3000000’ bytes. The maximum amount of data that can be read through Web Service Connector is ‘3000000’ bytes. The limit can be changed via the ‘Set-SPBusinessDataCatalogThrottleConfig’ cmdlet. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0.5in 10pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 9pt"&gt;Opening of a new connection is throttled. Maximum enabled connections ‘200’ for proxy are already been opened. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0.5in 10pt" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 9pt"&gt;Database response throttled. Maximum number of rows that can be read through the database system utility is 2000.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;I’m Adam Outcalt, a Software Development Engineer for BCS, and in this post, we’ll look at what these messages mean and how to address them.&lt;/p&gt;  &lt;p&gt;This type of error means that BCS has throttled an external system call for taking too long, or trying to transfer too much data. This feature is enabled by default to prevent Denial of Service attacks that could adversely affect SharePoint or external system health by performing huge transactions. If you have a business need, you may want to increase the limits or disable them entirely, but keep in mind that you increase your farm’s exposure to Denial of Service threats. (It is possible to throttle on the Office rich clients as well, but this is separately controlled by Local Policies and is outside the scope of this post.)&lt;/p&gt;  &lt;p&gt;Only farm administrators can change throttling rules, and the rules cannot be changed through the web controls or SharePoint Designer; you must change them from one of the farm machines, using public APIs or PowerShell. This means that if you are a tenant administrator or site collection administrator, you cannot change throttling rules for your hosting farm; in this case, you should contact your host or administrator to discuss the limits with them. &lt;/p&gt;  &lt;p&gt;If you are the farm administrator, good news! We’ve made a broad set of PowerShell cmdlets to help you with various administration tasks. Almost anything that you can do through the web interface, you can also automate through PowerShell, from importing models to managing permissions, and there are a few things that you can exclusively manage in PowerShell. For this post, we’ll be focusing on throttle management, but it helps to have a little context on the SharePoint 2010 Management Shell in general.&lt;/p&gt;  &lt;h4&gt;SharePoint 2010 Management Shell&lt;/h4&gt;  &lt;p&gt;The SharePoint 2010 Management Shell is just like any other PowerShell prompt, except that when you start it, it automatically loads the SharePoint cmdlets. If you want to use another shell, just type this command to get all of the BCS cmdlets: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;Add-PSSnapin&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: maroon; font-size: 10pt"&gt;Microsoft.Sharepoint.PowerShell.dll&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 9pt"&gt; &lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The Get-Command cmdlet is very useful for finding out about commands available to you. You can see all of the BCS cmdlets by typing: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;Get-Command&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;-Noun&lt;/span&gt;&lt;/i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; SP*BusinessData&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: maroon; font-size: 10pt"&gt;*&lt;/span&gt;&lt;span style="line-height: 115%; font-size: 9pt"&gt; &lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h4&gt;Throttle Management&lt;/h4&gt;  &lt;p&gt;The entry point for most BCS cmdlets is the Service Context, which represents a tenant using a BCS Service Application Proxy. Throttle Management works instead on the Proxy itself, irrespective of tenants. This means that if you are a host farm administrator, you cannot change limits per-tenant. (If you want to do so, you can set up a unique proxy for each tenant, and associate those proxies with their respective web applications.)&lt;/p&gt;  &lt;p&gt;The first step, then, is to get the BCS proxy that you want to work with. You can get all of the proxies on your farm with &lt;em&gt;Get-SPServiceApplicationProxy&lt;/em&gt;. You can filter this by name to get the one you want, or index into the results. One easy way to get the BCS proxy is:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt"&gt;$bdcProxy&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt"&gt;=&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;Get-SPServiceApplicationProxy&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; | &lt;/span&gt;&lt;b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;where&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; {&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt"&gt;$_&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;.GetType().FullName &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt"&gt;-eq&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; (&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: maroon; font-size: 10pt"&gt;'Microsoft.SharePoint.BusinessData.SharedService.' + 'BdcServiceApplicationProxy'&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;)}&lt;/span&gt;&lt;span class="MsoSubtleEmphasis"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 10pt"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Once you have a handle on the proxy, you can start working with the throttling rules. BCS throttle management works on a change-and-refresh strategy. If you do anything to change a throttling rule, you should re-fetch it from BCS to be sure that you have the latest copy. To view a rule, run a command like this one:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;$dbRule&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;=&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;Get-SPBusinessDataCatalogThrottleConfig&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;-Scope&lt;/span&gt;&lt;/i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; Database &lt;/span&gt;&lt;i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;-ThrottleType&lt;/span&gt;&lt;/i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; Items &lt;/span&gt;&lt;i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;-ServiceApplicationProxy&lt;/span&gt;&lt;/i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;$bdcProxy&lt;/span&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you then type $dbRule by itself, you’ll see something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 9pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi"&gt;Scope: Database        &lt;br /&gt;ThrottleType: Items         &lt;br /&gt;Enforced: True         &lt;br /&gt;Default : 2000         &lt;br /&gt;Max: 1000000&lt;/span&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;em&gt;Scope&lt;/em&gt; and &lt;em&gt;ThrottleType&lt;/em&gt; describe the rule you’re working with. Enforced represents whether it’s turned on, and &lt;em&gt;Default&lt;/em&gt; is the limit that is applied to external list. Custom web parts can override the &lt;em&gt;Default&lt;/em&gt; limit and work on more data than external lists; they are instead limited by the &lt;em&gt;Max&lt;/em&gt; limit.&lt;/p&gt;  &lt;p&gt;Once you have a rule, you can change it using a command like any of these examples: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 10pt"&gt;#Default and Maximum must be provided together. This increases the limit for external lists to 3000.        &lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;Set-SPBusinessDataCatalogThrottleConfig&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;-Identity&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt"&gt;$dbRule&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;-Maximum &lt;/span&gt;&lt;/i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;1000000 &lt;/span&gt;&lt;i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;-Default&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; 3000 &lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 10pt"&gt;#This disables a throttling rule. Notice the “:” instead of a space.        &lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;Set-SPBusinessDataCatalogThrottleConfig&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;-Identity&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt"&gt;$dbRule&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt"&gt;-Enforced&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt"&gt;:&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt"&gt;$false&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: green; font-size: 10pt"&gt;#This enables a throttling rule.        &lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;Set-SPBusinessDataCatalogThrottleConfig&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;-Identity&lt;/span&gt;&lt;/i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;$dbRule&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;-Enforced&lt;/span&gt;&lt;/i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;:&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: purple; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;$true&lt;/span&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Remember that if you run one of these commands and immediately type&lt;em&gt; $dbRule&lt;/em&gt;, you won’t see the changes reflected; you should re-fetch the rule using &lt;em&gt;Get-SPBusinessDataCatalogThrottleConfig&lt;/em&gt; again. Your changes are immediately committed by Set-&lt;em&gt;SPBusinessDataCatalogThrottleConfig&lt;/em&gt;, but it may take a few minutes for them to be reflected in external lists and other runtime scenarios.&lt;/p&gt;  &lt;p&gt;So, what kinds of rules can you set? There are four ThrottleTypes and five Scopes:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="99"&gt;         &lt;p&gt;&lt;b&gt;ThrottleType&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="319"&gt;         &lt;p&gt;&lt;b&gt;Meaning&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="99"&gt;         &lt;p&gt;Items&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="319"&gt;         &lt;p&gt;The number of records returned&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="99"&gt;         &lt;p&gt;Size&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="319"&gt;         &lt;p&gt;The amount of data returned, in bytes&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="99"&gt;         &lt;p&gt;Connections&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="319"&gt;         &lt;p&gt;The number of connections opened to the database, web service, or .NET assembly&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="99"&gt;         &lt;p&gt;Timeout&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="319"&gt;         &lt;p&gt;The time until an open connection is terminated, in milliseconds&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="0" width="423"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="92"&gt;         &lt;p&gt;&lt;b&gt;Scope&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="329"&gt;         &lt;p&gt;&lt;b&gt;Meaning&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="92"&gt;         &lt;p&gt;Global&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="329"&gt;         &lt;p&gt;Applies to Database, Web Service, WCF, and .NET Assembly Connectors (not to Custom Connectors)&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="92"&gt;         &lt;p&gt;Database&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="329"&gt;         &lt;p&gt;Applies to Database Connectors&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="92"&gt;         &lt;p&gt;WebService&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="329"&gt;         &lt;p&gt;Applies to Web Service Connectors&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="92"&gt;         &lt;p&gt;Wcf&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="329"&gt;         &lt;p&gt;Applies to WCF Connectors&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="92"&gt;         &lt;p&gt;Custom&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="329"&gt;         &lt;p&gt;Applies to Custom Connectors&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Here’s a table of the rules that exist: &lt;/p&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="96"&gt;           &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="65"&gt;           &lt;p align="center"&gt;&lt;strong&gt;Global&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="77"&gt;           &lt;p align="center"&gt;&lt;strong&gt;Database&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="95"&gt;           &lt;p align="center"&gt;&lt;strong&gt;WebService&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="65"&gt;           &lt;p align="center"&gt;&lt;strong&gt;Wcf&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="96"&gt;           &lt;p&gt;&lt;strong&gt;Items&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="65"&gt;           &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="77"&gt;           &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSPowerShellIntroductionandThrottleMana_EA35/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSPowerShellIntroductionandThrottleMana_EA35/image_thumb.png" width="20" height="19" /&gt;&lt;/a&gt; &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="95"&gt;           &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="65"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="96"&gt;           &lt;p&gt;&lt;strong&gt;Size&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="65"&gt;           &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="77"&gt;           &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="95"&gt;           &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSPowerShellIntroductionandThrottleMana_EA35/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSPowerShellIntroductionandThrottleMana_EA35/image_thumb.png" width="20" height="19" /&gt;&lt;/a&gt; &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="65"&gt;           &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSPowerShellIntroductionandThrottleMana_EA35/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSPowerShellIntroductionandThrottleMana_EA35/image_thumb.png" width="20" height="19" /&gt;&lt;/a&gt; &lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="96"&gt;           &lt;p&gt;&lt;strong&gt;Connections&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="65"&gt;           &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSPowerShellIntroductionandThrottleMana_EA35/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSPowerShellIntroductionandThrottleMana_EA35/image_thumb.png" width="20" height="19" /&gt;&lt;/a&gt; &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="77"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="95"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="65"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="96"&gt;           &lt;p&gt;&lt;strong&gt;Timeout&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="65"&gt;           &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="77"&gt;           &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSPowerShellIntroductionandThrottleMana_EA35/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSPowerShellIntroductionandThrottleMana_EA35/image_thumb.png" width="20" height="19" /&gt;&lt;/a&gt; &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="95"&gt;           &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="65"&gt;           &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSPowerShellIntroductionandThrottleMana_EA35/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSPowerShellIntroductionandThrottleMana_EA35/image_thumb.png" width="20" height="19" /&gt;&lt;/a&gt; &lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;You’ll notice that there are no rules for the Custom Scope. This value is reserved for advanced scenarios outside the scope of this post.&lt;/p&gt;  &lt;p&gt;Once you have your throttles set up how you like them, be sure to check out some of our other cmdlets with:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;&lt;b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;Get-Help&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: maroon; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;&amp;lt;cmdlet&amp;gt;&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; color: cadetblue; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;-Examples&lt;/span&gt;&lt;/i&gt; &lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;They can save you a lot of time on repeated tasks!&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- Adam Outcalt, Software Development Engineer&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9964756" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/bcs/archive/tags/External+List/">External List</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/cmdlet/">cmdlet</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/Throttle/">Throttle</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/PowerShell/">PowerShell</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/Throttling/">Throttling</category></item><item><title>Surfacing business data in Word 2010 using External Data Columns and the External Item Content Control.</title><link>http://blogs.msdn.com/b/bcs/archive/2010/02/15/surfacing-business-data-in-word-2010-using-external-data-columns-and-the-external-item-content-control.aspx</link><pubDate>Tue, 16 Feb 2010 01:34:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9963972</guid><dc:creator>lionelro</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9963972</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/02/15/surfacing-business-data-in-word-2010-using-external-data-columns-and-the-external-item-content-control.aspx#comments</comments><description>&lt;p&gt;Another post for BCS… this is Juan Balmori, I’ve being working in the SharePoint 2010 release on how to simplify customers lives by using data from external systems in Office client applications such as Word and Outlook. This time I am going to focus on how to pump business data into Word 2010. In order to be successful here you’ll need to understand the concept of External Data Columns (aka EDCs) and content controls.&lt;/p&gt;  &lt;p&gt;In SharePoint 2010 there are three main artifacts you can use to play with external data: External Lists (which have being discussed in great detail on this blog), External Data Web Parts, and External Data Columns, the main subject of this blog entry. An External Data Column enables you to aggregate information from external systems into regular SharePoint lists, such as a document library. Typical scenario for this is to add a ‘Customer’ column (whose data lives in a CRM system) into document library that stores ‘Contracts’. This feature was previously shipped with MOSS 2007 as Business Data Column (or BDIL), but this time you can pick the desired external data in Microsoft Word 2010 inside the document content (and not just resolve on the document properties panel). &lt;/p&gt;  &lt;p&gt;We also learned that many users require embedding data from external systems into Word documents (i.e. customer and/or product names, prices info into purchase orders documents). Typically this implies switching to a complex backend system, finding the data you are interested, copying that data, switch back to word and paste and format the information there. We aimed to simplify that experience by making external data columns available as &lt;a href="http://blogs.msdn.com/microsoft_office_word/archive/2006/10/23/control-yourself.aspx"&gt;content controls inside Word 2010.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It is the combination of both concepts (EDCs and Content Controls) which makes it possible to have external data into Word! Now let’s clarify the concepts with a simple example:&lt;/p&gt;  &lt;p&gt;Assuming you already have an &lt;a href="http://blogs.msdn.com/bcs/archive/2009/12/02/introducing-the-external-content-type.aspx"&gt;External Content Type&lt;/a&gt; ‘Customer’ (from your CRM system) you want to create a document library of ‘Contracts’ and you need to add customer information on it (such as name, address, phone, etc.). You’ll need to follow these steps to pick a ‘Customer’ for the contract directly from the CRM system and within Word: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a ‘Contracts’ document library based on Microsoft Word documents. &lt;/li&gt;    &lt;li&gt;Create an External Data Column ‘Customer’ to the list and configure it to use the ‘Customer’ ECT.      &lt;ul&gt;       &lt;li&gt;Select the primary field: represents the field to be shown in the column and content control. &lt;/li&gt;        &lt;li&gt;Select the secondary fields: additional fields to be automatically filled upon primary field selection. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Edit the template associated with the document library and insert the EDC fields (by navigating to the document library settings, then select ‘Advanced settings” and finally click on the ‘Edit template’ option).      &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/SurfacingbusinessdatainWord2010usingExt_F741/Fig1_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Fig1" border="0" alt="Fig1" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/SurfacingbusinessdatainWord2010usingExt_F741/Fig1_thumb.png" width="534" height="133" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;Once in Word, on the Insert Tab -&amp;gt; Quick Parts -&amp;gt; Document Property dropdown you’ll find the primary and secondary fields that where defined on the ‘Contracts’ document library. &lt;/li&gt;        &lt;li&gt;Notice that the primary field is represented by the external item content control on the document. Secondary fields are represented as read-only text boxes. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Save the template. &lt;/li&gt;    &lt;li&gt;Create a new document on the ‘Contracts’ document library &lt;/li&gt;    &lt;li&gt;Use the external item content control to indicate the customer for this contract. If you are familiarized with the people picker, the you are going to love this content control which will enable you to either:      &lt;ul&gt;       &lt;li&gt;&lt;b&gt;Pick a customer for the contract&lt;/b&gt;: by clicking on the ‘Select’ button of the external item content control you’ll pop the external item picker that will let you choose the item, in this case customer that will sign the contract. There are a few important points you need to consider while designing an ECT that is desired to be used for picking purposes that directly impact the data that is shown and the behavior of the picker dialog:           &lt;ul&gt;           &lt;li&gt;&lt;b&gt;How the picker retrieves data&lt;/b&gt;: As you know BCS provides functionality to work offline by storing external data on the BCS client cache. The picker tries to search data as fast as possible so if the cache has data it will show what’s available there. Depending on the nature of the problem you are working on, for example if ‘Customers’ are added very frequently, the cache may not have the latest data available, and you may not find the item you are looking for. You’ll see a ‘More Results’ button on the picker dialog that will enable you to search beyond the cache and find more items online. By hitting the ‘More results’ button you’ll also refresh the cache with the latest data, so in subsequent picking operations you can find refreshed cached data. &lt;/li&gt;            &lt;li&gt;&lt;b&gt;Read List Method (aka Finder)&lt;/b&gt;: The query that is going to be executed to get the initial set of items to be shown on the picker will be the default read list method, in the way described above. &lt;/li&gt;            &lt;li&gt;&lt;b&gt;Show in picker option&lt;/b&gt;: While designing an ECT you can configure which fields/columns are to be shown on the picker (for example Customer Name, Address, Phone, etc). Check those columns you would like to see by using the ‘Show in Picker’ option while designing your ECT on SharePoint Designer. If none is specified by default we’ll show all the columns of the ECT.&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/SurfacingbusinessdatainWord2010usingExt_F741/Fig2_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Fig2" border="0" alt="Fig2" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/SurfacingbusinessdatainWord2010usingExt_F741/Fig2_thumb.png" width="451" height="339" /&gt;&lt;/a&gt;&amp;#160; &lt;/li&gt;         &lt;/ul&gt;          &lt;ul&gt;           &lt;li&gt;&amp;#160;&lt;b&gt;Filter configuration&lt;/b&gt;: Always define filters so that you can narrow your search. Especially when working with high volume of items, there might be cases in which you may have millions of items to pick, we’ll show up to 200 items and if the query exceeds that, we’ll pop a warning to narrow your search criteria. We can only do this if you have defined filters on your finder, so use them, otherwise you can potentially not find the item you are looking for. &lt;/li&gt;            &lt;li&gt;&lt;b&gt;Display name&lt;/b&gt;: Once you have picked (or resolved, see below) an item, the ‘Customer’ field that is going to appear in the content control is going to be the field specified as ‘Title’ (by default), unless in your model you have identified a display name field for that ECT. Set the title while designing your ECT on SPD o the operations design view, select the field and then click on the ‘Set as Title’ button.               &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/SurfacingbusinessdatainWord2010usingExt_F741/Fig3_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Fig3" border="0" alt="Fig3" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/SurfacingbusinessdatainWord2010usingExt_F741/Fig3_thumb.png" width="427" height="256" /&gt;&lt;/a&gt;&amp;#160; &lt;/li&gt;            &lt;li&gt;&lt;b&gt;Resolve the customer&lt;/b&gt;: This option is useful if you know the identifier of the item of interest. For example you know in advance that customer Contoso’s ID is ‘123’ you can type it on the content control and hit resolve (or type ‘Ctrl + K’), if it exists it will show the field marked as ‘display name’. The other two options are that the item does not exist or that there are several items with that name, for example, ‘Contoso Inc’ and ‘Contoso Northwest’, if that’s the case a disambiguation dialog will be popped so that you can select the right item, this is when it’s important to have good fields to be ‘shown in picker’ so that you can decide which is the correct item to be selected. Whatever is used in the specific finder will serve as the key to match what you are looking for. &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;That’s the basic functionality. You’ll probably have the following questions:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Can I use Word to change the item values and update the external system? No, you cannot change the item on word. This is read only functionality. The columns on the list will be updated with the values picked in the document. &lt;/li&gt;    &lt;li&gt;How can I write back to the external systems on these scenarios then? What you can do is to create a workflow when the document is uploaded to the document library that will be capable of writing back to the LOB systems as JD describes on his &lt;a href="http://blogs.msdn.com/bcs/archive/2010/01/20/using-sharepoint-workflows-with-business-connectivity-services-bcs.aspx"&gt;workflow post&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;What happens if I forward the document to a colleague? The correct and recommended way to share a document is to provide the link to the document in the document library. That way, users will have full access to the functionality.If you copy the document in a share or send it as an e-mail the following scenarios may happen: &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="319"&gt;           &lt;p&gt;&lt;b&gt;Scenario&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="319"&gt;           &lt;p&gt;&lt;b&gt;Behavior&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="319"&gt;           &lt;p&gt;&lt;b&gt;Recipient has Word 2010, BCS installed and data on the cache &lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="319"&gt;           &lt;p&gt;Users will be able to read the data in the document and pick and resolve from the cache, they can upload the document manually to the library. Document will replace existing copies.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="319"&gt;           &lt;p&gt;&lt;b&gt;Recipient has Word 2010, BCS installed and an empty cache &lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="319"&gt;           &lt;p&gt;User will be able to read the data but will not be able to pick or resolve new data.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="319"&gt;           &lt;p&gt;&lt;b&gt;Recipient has word but not BCS installed&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="319"&gt;           &lt;p&gt;May receive prompts to install .NET framework 3.5. User will be able to read the data but will not be able to pick or resolve new data. &lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="319"&gt;           &lt;p&gt;&lt;b&gt;User has Word 2007&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="319"&gt;           &lt;p&gt;User will be able to read the data but will not be able to pick or resolve new data, the external item picker control will not be shown.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="319"&gt;           &lt;p&gt;&lt;b&gt;User has a previous version of Word.&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="319"&gt;           &lt;p&gt;Data is read only as text.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;-Juan Balmori Labra, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9963972" width="1" height="1"&gt;</description></item><item><title>Working with Complex Data Types in Business Connectivity Services</title><link>http://blogs.msdn.com/b/bcs/archive/2010/02/11/working-with-complex-data-types-in-business-connectivity-services.aspx</link><pubDate>Thu, 11 Feb 2010 06:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9961760</guid><dc:creator>lionelro</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9961760</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/02/11/working-with-complex-data-types-in-business-connectivity-services.aspx#comments</comments><description>&lt;p&gt;Business Connectivity Services is an enabling technology for integrating data from external systems (e.g. line-of-business like an ERP or CRM system) with SharePoint 2010 and Office. Data in external systems is frequently exposed through granular web services with complex message structures. While parameter structures of almost any complexity are supported by the schema for external content types, they can create incompatibilities with presentation technologies in SharePoint and Office.&lt;/p&gt;
&lt;p&gt;Before I begin talking about solution approaches, let me define what makes a type too complex to handle with out-of-the box capabilities. External content types define stereotyped operations, many of which require a parameter structure that is technically complex. A specific finder (also called Read Item in SharePoint Designer) must return a single complex type which contains the set of fields for an external content type, e.g. a type &amp;ldquo;Customer&amp;rdquo; with fields &amp;ldquo;CustomerID&amp;rdquo;, &amp;ldquo;Name&amp;rdquo;, and &amp;ldquo;PhoneNumber&amp;rdquo;. The child elements of this structure map to the columns of an external list. Most external content types contain a finder method which returns a collection of the same type as the specific finder. Issues arise when any of the fields has child elements of its own or if a field is of a type that is not supported by the presentation technologies, e.g. if a &amp;ldquo;CustomerAddress&amp;rdquo; field were added to the customer structure which has in turn child elements defining &amp;ldquo;Street&amp;rdquo;, &amp;ldquo;City&amp;rdquo;, &amp;ldquo;State&amp;rdquo; and &amp;ldquo;PostalCode&amp;rdquo;. &lt;/p&gt;
&lt;p&gt;One of the primary user interface components for external data SharePoint is the external list. It is by design a flat, row-based representation of data. Without additional work by a developer, complex types and simple types that are not supported in the SharePoint List type system will be omitted from the list view. &lt;/p&gt;
&lt;p&gt;The BCS external content type schema supports the notion of complex formatting for read-only scenarios if the complex type can be converted to a simple string using a .NET format string (example below). If read-only support is not enough or the complex type cannot be converted with this method SharePoint 2010 provides the capability to create custom field types which provides control over rendering and editing behavior in external lists and list item forms. &lt;/p&gt;
&lt;p&gt;Forms represent the primary user interface for external list items. Complex types pose a challenge to form generation because they are very difficult to layout automatically while maintaining a minimum level of visual appeal. External lists may be associated with SharePoint list forms (based on ASP.NET) or InfoPath forms. &lt;/p&gt;
&lt;p&gt;Each approach warrants its own post. In the remainder of this post I&amp;rsquo;ll provide an overview of each technique and links to walkthroughs and articles that can take you the rest of the way. Please send us your comments about what was helpful or where there are gaps so we can add more content where needed.&lt;/p&gt;
&lt;p&gt;So, let&amp;rsquo;s talk about solutions. &lt;/p&gt;
&lt;h4&gt;Complex Formatting in BCS External Content Type&lt;/h4&gt;
&lt;p&gt;If the complex type is read-only on the external list and can be rendered as a string, scenarios in which a complex type can be converted to a string, BCS supports the notion of a format string on the type descriptor for a complex type to render it in an external list or item form. Here&amp;rsquo;s an example based on the Customer type mentioned above:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 8pt"&gt;TypeName&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;"&lt;span style="color: blue"&gt;CustomerAddress&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;IsCollection&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;false&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;CustomerAddresses&lt;/span&gt;"&lt;span style="color: blue"&gt; &amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Properties&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;Property&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt; &lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; color: red; font-size: 8pt"&gt;Name&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;"&lt;span style="color: blue"&gt;ComplexFormatting&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;System.String&lt;/span&gt;"&lt;span style="color: blue"&gt; /&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Properties&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptors&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 8pt"&gt;TypeName&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;"&lt;span style="color: blue"&gt; CustomerAddress&lt;/span&gt; "&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;CustomerAddress&lt;/span&gt;"&lt;span style="color: blue"&gt; &amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Properties&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;Property&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt; &lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; color: red; font-size: 8pt"&gt;Name&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;"&lt;span style="color: blue"&gt;FormatString&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;System.String&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;{0}, {1}, {2} {3}&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Properties&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptors&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 8pt"&gt;TypeName&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;"&lt;span style="color: blue"&gt;System.String&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Street&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 8pt"&gt;TypeName&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;"&lt;span style="color: blue"&gt;System.String&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;City&lt;/span&gt;"&lt;span style="color: blue"&gt; /&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 8pt"&gt;TypeName&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;"&lt;span style="color: blue"&gt;System.String&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;StateProvince&lt;/span&gt;"&lt;span style="color: blue"&gt; /&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 8pt"&gt;TypeName&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;"&lt;span style="color: blue"&gt;System.String&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;PostalCode&lt;/span&gt;"&lt;span style="color: blue"&gt; /&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptors&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptors&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;SharePoint Compatible Service Layer&lt;/h4&gt;
&lt;p&gt;The cleanest approach, architecturally, is to create a service layer with a flat parameter structure that exists within the limitations of the presentation layers. To continue with the example from above, if the web service were to return all fields representing the customers at the same level, SharePoint could render and edit customer items without any further modification.&lt;/p&gt;
&lt;p&gt;This approach comes with the cost of writing, hosting, and maintaining custom code that has to be traded off against the cost of handling complex types in the presentation layers for each application using a complex service. In many enterprise deployments a service layer already exists. Especially for business entities that have broad use in many applications, e.g. Customer or Product, the cost of adding methods for use with SharePoint may be far lower than the cost of handling the type complexity in each application.&lt;/p&gt;
&lt;h4&gt;.NET Connectivity Assemblies&lt;/h4&gt;
&lt;p&gt;If adding or extending a service layer is not an option, SharePoint 2010 provides a way to package the external content type definition with a class that encapsulates the business logic behind an external content type operation. You can define the flattened interface of the external content type using the Business Data Connectivity Designer in Visual Studio 2010 and implement any aggregation and type conversion logic needed in the code stubs generated by the tool. Once the implementation is complete, Visual Studio can generate a WSP package containing the external content type definition and the assembly which can be imported to SharePoint. In order to import this type of package, farm administrator privileges are required because the code behind the external content type runs in full trust mode. For more details on the creation of .NET connector assemblies see Boris Scholl&amp;rsquo;s &lt;a href="http://channel9.msdn.com/posts/funkyonex/Using-the-SharePoint-Business-Data-Connectivity-Designer-in-VS-2010/"&gt;overview of the Business Data Connectivity Designer in Visual Studio 2010&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since modifying the behavior of backend services is not always an option, SharePoint 2010 also provides several ways to extend the presentation layer to handle with complex types.&lt;/p&gt;
&lt;h4&gt;Extending the External List Type System&lt;/h4&gt;
&lt;p&gt;The list infrastructure supports a set of generic data types out of the box. Those are sufficient to address the most common data entry scenarios. In order to represent complex business data items like addresses or consistently for data viewing and editing, SharePoint provides a way to define custom field types which can be made available across all sites on a SharePoint farm. The custom field type definition file is at the center of a custom field type. It defines how a field is to be rendered on the list and item views. It also defines any variable properties and a reference to the assembly implementing the field type. The field class inherits from &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield(office.14).aspx"&gt;SPField&lt;/a&gt; and represents particular fields based on the custom field type. It defines the capabilities of a column based on the custom field type, e.g. sorting, as well as the behavior of a cell within a list and the content database. It may also implement custom validation logic.&lt;/p&gt;
&lt;p&gt;Most complex custom field types also require a rendering control class, a rendering template or a custom value class. More details about custom field types and all the concepts mentioned see the &lt;a href="http://msdn.microsoft.com/en-us/library/ms446361(office.14).aspx"&gt;MSDN article about custom field types&lt;/a&gt; and the &lt;a href="http://msdn.microsoft.com/en-us/library/bb861799(office.14).aspx"&gt;walkthrough for creating a custom field type&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once the custom type is defined it can be referenced by type descriptors in the external content type definition like in this example:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 8pt"&gt;TypeName&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;"&lt;span style="color: blue"&gt;Customer.Address&amp;rdquo; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;CustomerAddress&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;DefaultDisplayName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Customer Address&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;Properties&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;Property&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: red; font-size: 8pt"&gt;Name&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;=&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt"&gt;"&lt;span style="color: blue"&gt;SPCustomFieldType&lt;/span&gt;"&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;System.String&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Customer Address&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;Properties&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt"&gt;TypeDescriptor&lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt"&gt;&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;With that addition, an external list based on the external content type understands that type descriptor &amp;ldquo;CustomerAddress&amp;rdquo; refers to a custom field type and renders it appropriately.&lt;/p&gt;
&lt;h4&gt;Customizing SharePoint List Forms&lt;/h4&gt;
&lt;p&gt;When you create a new external list, SharePoint will automatically generate forms to enable the creation, editing and viewing of list items. SharePoint forms are based on .NET Framework controls and share their extensibility capabilities which can be used to render complex types appropriately. Custom field types described above is the extensibility mechanism most often used for complex types. For simpler cases it may be possible to extend a native SharePoint Foundation field. For more details see the &lt;a href="http://msdn.microsoft.com/en-us/library/aa543232(office.14).aspx"&gt;MSDN article on list form customization&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Customizing InfoPath Forms&lt;/h4&gt;
&lt;p&gt;SharePoint 2010 also supports the use of InfoPath forms for viewing and editing list items. InfoPath provides a number of features that make it easy for non-developers to create attractive forms with powerful validation and conditional formatting. Another advantage InfoPath forms have over standard list forms is their ability to function inside the browser as well as standalone or in rich clients. E.g. InfoPath forms are the forms technology used to work with external list data offline in SharePoint Workspaces. In SharePoint 2010 InfoPath forms for external lists cannot be created from scratch in the InfoPath Designer. They can be generated in SharePoint Designer either from the external list or external content type designers. Once generated, they can be customized in InfoPath Designer.&lt;/p&gt;
&lt;p&gt;For external content types containing complex types, the forms generator will generate a blank form due to the difficulties in automatically generating a visually appealing layout. However InfoPath does support complex types in the designer. After the form is generated it can be opened in InfoPath Designer from the external list designer in SharePoint Designer. The custom types are available in the field list and can be laid out manually. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/WorkingwithComplexDataTypesinBusinessCon_13B46/clip_image001_2.png"&gt;&lt;img height="232" width="208" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/WorkingwithComplexDataTypesinBusinessCon_13B46/clip_image001_thumb.png" alt="clip_image001" border="0" title="clip_image001" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;Figure 1 - Field List in InfoPath Designer&lt;/h5&gt;
&lt;p&gt;Once the customizations are complete the updated form has to be published back to the external list using the Quick Publish available in the File menu.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/WorkingwithComplexDataTypesinBusinessCon_13B46/clip_image002_2.png"&gt;&lt;img height="145" width="544" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/WorkingwithComplexDataTypesinBusinessCon_13B46/clip_image002_thumb.png" alt="clip_image002" border="0" title="clip_image002" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;Figure 2 - Quick Publish Button in InfoPath Designer&lt;/h5&gt;
&lt;p&gt;I hope this post provided guidance on how to overcome the incompatibility issues between the complex world of external systems and the presentation layers in SharePoint and Office.&lt;/p&gt;
&lt;p&gt;-Thomas Mechelke, Program Manager on the SharePoint Business Connectivity Services team&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Updated 06/14/2010&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9961760" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/bcs/archive/tags/InfoPath/">InfoPath</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/formatting/">formatting</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/complex/">complex</category></item><item><title>Test Drive BCS</title><link>http://blogs.msdn.com/b/bcs/archive/2010/02/09/test-drive-bcs.aspx</link><pubDate>Wed, 10 Feb 2010 01:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9960909</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9960909</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/02/09/test-drive-bcs.aspx#comments</comments><description>&lt;P&gt;Now that we have shown you the basics on how to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Create a &lt;A href="http://blogs.msdn.com/bcs/archive/2010/01/28/bcs-team-channel-creating-an-external-content-type-in-sharepoint-designer-2010.aspx" mce_href="http://blogs.msdn.com/bcs/archive/2010/01/28/bcs-team-channel-creating-an-external-content-type-in-sharepoint-designer-2010.aspx"&gt;model using SharePoint Designer&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Create an external list using &lt;A href="http://blogs.msdn.com/bcs/archive/2010/01/28/bcs-team-channel-creating-an-external-content-type-in-sharepoint-designer-2010.aspx" mce_href="http://blogs.msdn.com/bcs/archive/2010/01/28/bcs-team-channel-creating-an-external-content-type-in-sharepoint-designer-2010.aspx"&gt;SharePoint Designer&lt;/A&gt; or the &lt;A href="http://blogs.msdn.com/bcs/archive/2009/11/13/bcs-team-channel-is-now-live.aspx" mce_href="http://blogs.msdn.com/bcs/archive/2009/11/13/bcs-team-channel-is-now-live.aspx"&gt;Browser&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Take the external list &lt;A href="http://blogs.msdn.com/bcs/archive/2009/12/04/bcs-team-channel-external-lists-in-outlook.aspx" mce_href="http://blogs.msdn.com/bcs/archive/2009/12/04/bcs-team-channel-external-lists-in-outlook.aspx"&gt;into Outlook&lt;/A&gt; and/or &lt;A href="http://blogs.msdn.com/bcs/archive/2009/12/14/bcs-team-channel-external-data-in-sharepoint-workspace.aspx" mce_href="http://blogs.msdn.com/bcs/archive/2009/12/14/bcs-team-channel-external-data-in-sharepoint-workspace.aspx"&gt;into SharePoint Workspace&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Create &lt;A href="http://blogs.msdn.com/bcs/archive/2010/01/15/tooling-associations-in-sharepoint-designer-2010.aspx" mce_href="http://blogs.msdn.com/bcs/archive/2010/01/15/tooling-associations-in-sharepoint-designer-2010.aspx"&gt;associations&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Go ahead and take BCS out for a test drive! To do this you can download a preloaded &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0c51819b-3d40-435c-a103-a5481fe0a0d2&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0c51819b-3d40-435c-a103-a5481fe0a0d2&amp;amp;displaylang=en"&gt;2010 Information Worker Demonstration Virtual Machine (Beta)&lt;/A&gt; from MSDN. By downloading machine “A” of the two will get you access to a preconfigured environment with:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Customer from CRM External Content Type mapped to Contact Office native type&lt;/LI&gt;
&lt;LI&gt;Customer from CRM External List&lt;/LI&gt;
&lt;LI&gt;Windows Server 2008 SP2 Standard Edition x64, running as an Active Directory Domain Controller for the “CONTOSO.COM” domain with DNS and WINS &lt;/LI&gt;
&lt;LI&gt;Microsoft SQL Server 2008 SP1 + CU2 Enterprise Edition with Analysis, Notification, and Reporting Services &lt;/LI&gt;
&lt;LI&gt;Microsoft Office Communication Server 2007 R2 &lt;/LI&gt;
&lt;LI&gt;Visual Studio 2010 Beta 2 Ultimate Edition&lt;/LI&gt;
&lt;LI&gt;Microsoft SharePoint Server 2010 Enterprise Edition Beta 2&lt;/LI&gt;
&lt;LI&gt;Microsoft Office Web Applications Beta 2 &lt;/LI&gt;
&lt;LI&gt;FAST Search for SharePoint 2010 Beta 2 &lt;/LI&gt;
&lt;LI&gt;Microsoft Project Server 2010 Beta 2 &lt;/LI&gt;
&lt;LI&gt;Microsoft Office 2010 Beta 2 &lt;/LI&gt;
&lt;LI&gt;Microsoft Office Communicator 2007 R2&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Once you have it up and running go to the &lt;B&gt;http://intranet.contoso.com/sites/SP2010AllUp&lt;/B&gt; to try out the &lt;B&gt;Customers from CRM external list&lt;/B&gt;, take it offline into Outlook or SharePoint Workspace, or even create an external content type of your own off of the Customers or AdventureWorksDW database using SharePoint Designer. Be sure to take a look at the performance indications on the MSDN download page for an optimal experience.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;- Lionel Robinson &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9960909" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/bcs/archive/tags/External+Content+Type/">External Content Type</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/Workspace/">Workspace</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/Outlook/">Outlook</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/External+List/">External List</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/SharePoint+Designer/">SharePoint Designer</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/SharePoint+Workspace/">SharePoint Workspace</category><category domain="http://blogs.msdn.com/b/bcs/archive/tags/VM/">VM</category></item><item><title>Using SharePoint workflows with Business Connectivity Services (BCS) – Sandboxed Workflow Actions</title><link>http://blogs.msdn.com/b/bcs/archive/2010/01/29/using-sharepoint-workflows-with-business-connectivity-services-bcs-sandboxed-workflow-actions.aspx</link><pubDate>Sat, 30 Jan 2010 01:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9955595</guid><dc:creator>lionelro</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9955595</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/01/29/using-sharepoint-workflows-with-business-connectivity-services-bcs-sandboxed-workflow-actions.aspx#comments</comments><description>&lt;p&gt;In the &lt;a href="http://blogs.msdn.com/bcs/archive/2010/01/20/using-sharepoint-workflows-with-business-connectivity-services-bcs.aspx"&gt;last post&lt;/a&gt;, we covered how to use the out of box SharePoint Workflow activities to work with an External List. In that post, I mentioned that every time you read a column, it will execute both the Read List method (Finder) and the Read Item method (Specific Finder), and that could cause unnecessary calls to your external system. One of the ways to decrease that load on the external system is to get the item once, and store it in a way that you can reuse that data. In this post, we will show how you can implement such a solution using the SPList Object Model to read from the external lists in a Sandboxed Workflow Action. Sandboxed Workflow Actions are code functions that can be used in a declarative workflow designer and called from a declarative workflow. They are written in Visual Studio and uploaded to SharePoint’s Solution Gallery. These actions run in isolation to ensure that the core system process is protected and boundaries respected.&lt;/p&gt;  &lt;h4&gt;Tips on Action Usage and Common Mistakes&lt;/h4&gt;  &lt;h5&gt;Use sandboxed workflow actions for External Lists if:&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;You do not have permission to deploy full trust activities and want any of the following:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Read many values from an external list&lt;/li&gt;      &lt;li&gt;Write a simple function that will work on regular lists as well as external lists&lt;b&gt;&lt;/b&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;h5&gt;Things to keep in mind:&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Sandboxed actions can cause your workflow to fail if it fails to obtain a sandbox worker process application domain. There are an administrator configured fixed number of these application domains, and they are shared with all sandboxed code (actions, web parts, event receivers, etc.). Because of this, be cautious of using sandboxed actions in the following situations:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Complex sandboxed code actions that take time to complete&lt;/li&gt;      &lt;li&gt;Slow external lists&lt;/li&gt;      &lt;li&gt;Environment where many workflows will run at roughly the same time&lt;/li&gt;      &lt;li&gt;Scenarios that cannot handle workflow failures&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Sandbox code service can run these calls with a different account than the application pool account, so you will need to ensure that this account has been set up in the Secure Store Service (SSS).&lt;/li&gt;    &lt;li&gt;If you are storing a local copy of the data you have read from an external list item, like I do in the sample below, you will need to ensure that your data is fresh. &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Building the Scenario- Sandboxed Workflow Action&lt;/h4&gt;  &lt;p&gt;To expand upon the previous scenario where we only have one safe limit for all expense submissions, in this scenario we will add Safe Limits for certain budget categories. For instance, I may have different safe limits for travel expenses than I do for equipment expenses. When an employee submits the expense report, the workflow will validate the category and its expense limit to determine what action needs to be taken.&lt;/p&gt;  &lt;h5&gt;Create the Sandboxed Workflow Action&lt;/h5&gt;  &lt;p&gt;I’ve attached a &lt;a href="http://blogs.msdn.com/bcs/attachment/9955595.ashx"&gt;Visual Studio project&lt;/a&gt; to this post that implements the actions we will be talking about. At a high level, we want to be able to read an item once and then read other properties out of that one transaction to the external system. We also want this action to show up in SharePoint Designer (SPD) so that more users will be able to write workflows against our list. Because SPD does not support looping, the action can’t return an array of items. So instead, we will create an action to read an item and store all of its properties in an xml string. Then we’ll create another action to read a specific field value out of this xml into an SPD variable. There are optimizations you can do to this, like only store the values you know you are going to read, but this example is implemented to be the most generic and reusable way to return properties for an item with any set of properties. Let’s dive into the details!&lt;/p&gt;  &lt;p&gt;To read values from the external list we have the function with the following signature:&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;public&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Hashtable&lt;/span&gt; GetExternalListItemByField(&lt;span style="color: #2b91af"&gt;SPUserCodeWorkflowContext&lt;/span&gt; context, &lt;span style="color: #2b91af"&gt;String&lt;/span&gt; externalListId, &lt;span style="color: blue"&gt;string&lt;/span&gt; fieldName, &lt;span style="color: blue"&gt;string&lt;/span&gt; fieldValue)&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;This function takes an external list id and then finds an item in that list by finding the first item that has “fieldValue” for a field named “fieldName.” Once the item is found, it puts each field into a Data Table and saves it as XML so that we can parse it later. This function is pretty generic and could even work on regular list items as well. This will help us improve our performance because it will only call the finder and the specific finder once and get all of the properties; however, we will still call the finder. This can be optimized so that you only call the finder twice, but that is an exercise we can explore later. &lt;/p&gt;  &lt;p&gt;Once we have read the item, we have the function with the following signature:&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;public&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Hashtable&lt;/span&gt; GetItemDataFromString(&lt;span style="color: #2b91af"&gt;SPUserCodeWorkflowContext&lt;/span&gt; context, &lt;span style="color: blue"&gt;string&lt;/span&gt; itemData, &lt;span style="color: blue"&gt;string&lt;/span&gt; value)      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;This function takes the XML string with all the item properties in “itemData”, reconstructs the Data Table, and looks up the field specified by the “value” parameter. This does involve reloading the Data Table on every call of the function, but can be much faster than going to the external system for every call. It also allows the SPD user to pick which columns they want to look at instead of hardcoding it into the function itself.&lt;/p&gt;  &lt;p&gt;The other file of interest in the project is the elements.xml file in the BCSWorkflowActivities directory. This elements file is what tells SPD how the sandboxed action should be presented in SPD as well as how the user can map the properties. The details of this file are out of scope for this post, but it’s has the same basic structure as the ACTIONS xml SPD used in 2007.&lt;/p&gt;  &lt;p&gt;And now, to play with the sample!&lt;/p&gt;  &lt;h5&gt;Setup Instructions&lt;/h5&gt;  &lt;p&gt;To use the attached sample, you will need to do the following&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Unzip the &lt;a href="http://blogs.msdn.com/bcs/attachment/9955595.ashx"&gt;attached file&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Open in Visual Studio 2010&lt;/li&gt;    &lt;li&gt;Rebuild the solution&lt;/li&gt;    &lt;li&gt;Deploy the solution&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;If you are deploying to a separate machine, you can use the WSP created from step 3 and do the following:&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;Go to Site Settings&lt;/li&gt;        &lt;li&gt;Under Galleries, go to Solutions&lt;/li&gt;        &lt;li&gt;Upload the WSP and activate it&lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt; &lt;/ol&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h5&gt;Building the Workflow&lt;/h5&gt;  &lt;ol&gt;   &lt;li&gt;In SPD, create an External Content Type called SafeLimit&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;It should have seven fields: EmployeeID, EquipmentLimit, EquipmentApprover, MoraleLimit, MoralApprover, TravelLimit, TravelApprover&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Create an external list which the SafeLimit External Content Type called SafeLimits&lt;/li&gt;    &lt;li&gt;Create a Document Library for expense reports called ExpenseReports&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Add two additional columns for EmployeeID and ExpenseType&lt;/li&gt;      &lt;li&gt;ExpenseType should be a choice field with the following choices: Morale, Equipment, Travel&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;In SPD, go to the ExpenseReports document library.&lt;/li&gt;    &lt;li&gt;Click on New List Workflow&lt;/li&gt;    &lt;li&gt;Give the workflow a name and description and continue&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Note: At this point, you are in the workflow designer, and you start to add your actions&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Insert the “Get External List Item by Field (Sandboxed Function)”&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Pick your SafeLimits external list for the first parameter&lt;/li&gt;      &lt;li&gt;Pick the EmployeeID column using the CurrentItem by using the &lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/UsingSharePointworkflowswithBusinessConn_F55B/clip_image002_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/UsingSharePointworkflowswithBusinessConn_F55B/clip_image002_thumb.jpg" width="24" height="23" /&gt;&lt;/a&gt; button for the second parameter&lt;/li&gt;      &lt;li&gt;Type in “EmployeeID” for the third parameter&lt;/li&gt;      &lt;li&gt;You can leave the output parameter the same(Defaults to ItemString)&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Now to read a column of data from that item you stored in ItemString, insert the “Read External List Item Data (Sandboxed Function)”&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;For the first parameter, Type in a field you want to see. For this case, we will use the value stored in the choice field ExpenseType and append “Limit” to it&lt;/li&gt;      &lt;li&gt;For the second parameter, choose the ItemString variable&lt;/li&gt;      &lt;li&gt;The last parameter will be the value that is found, call it “limit”&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Repeat step 8, expect append “Approver” to the ExpenseType Value and change the output to “approver”&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;You should end up with something that looks like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/UsingSharePointworkflowswithBusinessConn_F55B/clip_image004_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/UsingSharePointworkflowswithBusinessConn_F55B/clip_image004_thumb.jpg" width="544" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That’s it on Sandboxed Workflow actions and external lists from me. In the next blog post, I will explain how you can build the same scenario using full trust activities that call the BDC APIs. By calling the BDC APIs directly, we will have more control over exactly what calls are made to the external system as well being able to operate on that data without needed an external list.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- JD Klaka &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9955595" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-95-55-95/BCSSandboxedActivities.zip" length="16194" type="application/x-zip-compressed" /></item><item><title>BCS Team Channel: Creating an External Content Type in SharePoint Designer 2010</title><link>http://blogs.msdn.com/b/bcs/archive/2010/01/28/bcs-team-channel-creating-an-external-content-type-in-sharepoint-designer-2010.aspx</link><pubDate>Fri, 29 Jan 2010 00:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9955064</guid><dc:creator>lionelro</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9955064</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/01/28/bcs-team-channel-creating-an-external-content-type-in-sharepoint-designer-2010.aspx#comments</comments><description>&lt;p&gt;The &lt;a href="http://www.youtube.com/user/MOSSBCSTeam" mce_href="http://www.youtube.com/user/MOSSBCSTeam"&gt;BCS Team Channel&lt;/a&gt; has a new video in which we show you how in just a few minutes you can create an External Content Type using SharePoint Designer. In this video we use the database connector so be sure to &lt;a href="http://www.youtube.com/user/MOSSBCSTeam" mce_href="http://www.youtube.com/user/MOSSBCSTeam"&gt;subscribe to the channel&lt;/a&gt; to be the first to view the follow up videos which demonstrate how to work with other connectors such as Web Services and .Net Assemblies. &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:a3b62f82-1fd5-4c6d-88b1-5b4688888426" class="wlWriterEditableSmartContent"&gt;&lt;div id="e217b5e6-a818-4b64-8e91-59e0cc05a8f6" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=5OzAqzM2RkQ&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/BCSTeamChannelCreatinganExternalContentT_ECCE/video4916d5081cf5.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('e217b5e6-a818-4b64-8e91-59e0cc05a8f6'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/5OzAqzM2RkQ&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/5OzAqzM2RkQ&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;If you are new to the channel you can watch other videos such as:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=lK0V-IBDg6w" mce_href="http://www.youtube.com/watch?v=lK0V-IBDg6w"&gt;Introduction to Business Connectivity Services (BCS) and External Lists&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=D4iL5NwX-qI" mce_href="http://www.youtube.com/watch?v=D4iL5NwX-qI"&gt;BCS - Synchronizing an External List into Outlook &lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=RWiDjIqlqiU" mce_href="http://www.youtube.com/watch?v=RWiDjIqlqiU"&gt;BCS - External Data In SharePoint Workspace 2010 &lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=YibQVIgJQG4" mce_href="http://www.youtube.com/watch?v=YibQVIgJQG4"&gt;BCS - Associations and Web Parts (Part 1)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=WWvTLXW3lw0" mce_href="http://www.youtube.com/watch?v=WWvTLXW3lw0"&gt;BCS - Associations and Web Parts (Part 2)&lt;/a&gt;&lt;u&gt;&lt;/u&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- Lionel Robinson, Program Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9955064" width="1" height="1"&gt;</description></item><item><title>How can I get rid of the “Publisher cannot be verified” message when taking external lists offline?</title><link>http://blogs.msdn.com/b/bcs/archive/2010/01/22/how-can-i-get-rid-of-the-publisher-cannot-be-verified-message-when-taking-external-lists-offline.aspx</link><pubDate>Fri, 22 Jan 2010 19:29:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9952143</guid><dc:creator>lionelro</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/bcs/rsscomments.aspx?WeblogPostID=9952143</wfw:commentRss><comments>http://blogs.msdn.com/b/bcs/archive/2010/01/22/how-can-i-get-rid-of-the-publisher-cannot-be-verified-message-when-taking-external-lists-offline.aspx#comments</comments><description>&lt;p&gt;When a user takes an external list offline to either SharePoint Workspace or Outlook, by default the user gets a dialog box like this one. To take the external list offline successfully, the user has to click on the &lt;b&gt;Install&lt;/b&gt; button, which means that he or she trusts the package, even if the publisher of the package cannot be verified.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/HowcanIgetridofthePublishercannotbeverif_A196/clip_image002_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/HowcanIgetridofthePublishercannotbeverif_A196/clip_image002_thumb.jpg" width="499" height="267" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Essentially, when a user takes an External List offline, SharePoint generates a VSTO ClickOnce package for a client side solution. Every VSTO package should be signed by an Authenticode certificate to specify who published this package. The user installs the package on his or her client through the VSTO Installer and goes through the trusting process to verify if the package was published by a trusted publisher. For more information please see &lt;a href="http://msdn.microsoft.com/en-us/library/bb608591.aspx"&gt;Publish Office Solution&lt;/a&gt; for VSTO ClickOnce packages, &lt;a href="http://msdn.microsoft.com/en-us/library/bb772086(VS.100).aspx"&gt;Granting Trust to Office Solutions&lt;/a&gt; for granting trust to general office solutions, and &lt;a href="http://msdn.microsoft.com/en-us/library/01daf08f.aspx"&gt;Trusted Application Deployment&lt;/a&gt; for granting trust to general ClickOnce Applications. By default, SharePoint does not have a certificate that can be used to sign the package. So, SharePoint generates a self-signed certificate and signs the package with it. Since this is a new self-signed certificate, the client has trusted neither this certificate nor its issuer before and hence it cannot verify the publisher of the package. That is why VSTO installer prompts the user with the message that the publisher cannot be verified. To get rid of the unfriendly prompt, an Authenticode certificate that was issued by a trusted Certification Authority must be provided to SharePoint for signing the VSTO ClickOnce package. In this post, I will show you how to provide such certificate to SharePoint. We are going to need administration privileges on each of the Web Front Ends (WFEs) of the farm. &lt;/p&gt;  &lt;p&gt;First, we need an Authenticode certificate that is issued by a trusted Certification Authority, e.g. VeriSign. For details on how to obtain a certificate for signing, see &lt;a href="http://msdn.microsoft.com/en-us/library/ms172240.aspx"&gt;ClickOnce and Authenticode&lt;/a&gt;. The certificate MUST contain a private cryptographic key so that it can be used for signing. For this demonstration, we generated two certificates and saved them as ContosoRoot.cer and ContosoBCS.pfx by using &lt;a href="http://msdn.microsoft.com/en-us/library/bfsktky3.aspx"&gt;MakeCert.exe&lt;/a&gt;. The certificate contained in ContosoBCS.pfx has a private key and will be used to sign the VSTO ClickOnce package. The certificate in ContosoRoot.cer serves as the certificate of a Certification Authority and was used to sign the certificate contained in ContosoBCS.pfx. Note that the certificate in ContosoRoot.cer does not have a private key. &lt;/p&gt;  &lt;p&gt;In the following steps, we are going to import those two certificates to the certificate stores on both WFEs and clients. Please note that you should &lt;b&gt;never&lt;/b&gt; import a certificate to a production machine unless you trust the certificate.&lt;/p&gt;  &lt;p&gt;Second, we need to create a certificate store named &lt;i&gt;BusinessConnectivityServices&lt;/i&gt; for &lt;i&gt;Local Computer&lt;/i&gt; on each of the WFEs of the farm. The &lt;i&gt;BusinessConnectivityServices&lt;/i&gt; certificate store for &lt;i&gt;Local Computer&lt;/i&gt; is where SharePoint looks for the certificate used to sign a VSTO ClickOnce package. You can create the certificate store by adding the key “BusinessConnectivityServices” under &lt;i&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates&lt;/i&gt;. Alternatively, you can copy and paste the following text to a notepad, save it as a .reg file, and then double click the file to create the registry key.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1"&gt;Windows Registry Editor Version 5.00&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1"&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates\BusinessConnectivityServices]&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Third, we need to import the Authenticode certificate, e.g. ContosoBCS.pfx, to the certificate stores for Local Computer on all the WFEs, which can be done through Microsoft Management Console (MMC). On a WFE open the &lt;b&gt;Start&lt;/b&gt; menu, click on &lt;b&gt;Run…&lt;/b&gt;, and type &lt;b&gt;mmc&lt;/b&gt;. This will launch MMC. Add a certificate snap-in for the &lt;i&gt;Local Computer&lt;/i&gt; to the MMC. The details on how to add a certificate snap-in can be found in the MSDN article &lt;a href="http://msdn.microsoft.com/en-us/library/ms788967.aspx"&gt;How to: View Certificates with the MMC Snap-in&lt;/a&gt;. Make sure that the certificate snap-in is for Local Computer, not for Current User. This can be verified by checking if the entry under &lt;i&gt;Console Root&lt;/i&gt; in MMC is &lt;i&gt;Certificates (Local Computer)&lt;/i&gt;. If the certificate snap-in is for &lt;i&gt;Current User&lt;/i&gt;, the entry is &lt;i&gt;Certificates – Current User&lt;/i&gt;. In MMC, under &lt;i&gt;Console Root\Certificates (Local Computer)&lt;/i&gt;, there is an entry &lt;i&gt;BusinessConnectivityServices&lt;/i&gt;, which was created when we added the registry key in last step. Right click the entry, then from the pop-up menu, point to &lt;b&gt;All tasks &lt;/b&gt;and then click on &lt;b&gt;Import&lt;/b&gt;. This will launch the wizard to import certificate. Follow the wizard and import the ContosoBCS.pfx to the store &lt;i&gt;BusinessConnectivityServices&lt;/i&gt;. If the certificate of the Certification Authority is not trusted by a WFE, import the certificate of the Certification Authority, e.g. ContosoRoot.cer, to the store &lt;i&gt;Trusted Root Certification Authorities&lt;/i&gt; in the same way. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/HowcanIgetridofthePublishercannotbeverif_A196/clip_image004_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/HowcanIgetridofthePublishercannotbeverif_A196/clip_image004_thumb.jpg" width="544" height="382" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Fourth, on a client machine where a user will take an external list offline to, if the Certification Authority that issues the certificate for signing is not in the &lt;i&gt;Trusted Root Certification Authorities&lt;/i&gt; certificate store for current user yet, the user needs to import the certificate for the Certification Authority, e.g. ContosoRoot.cer, to the certificate store &lt;i&gt;Trusted Root Certification Authorities&lt;/i&gt; for current user on the client machine. Note that the certificate only needs to contain a public key. Actually, you should not import the certificate for the Certification Authority with a private key to a client machine. Also note that in an organization that has PKI infrastructure in place, the Certification Authority’s certificate may have already been deployed to the &lt;i&gt;Trusted Root Certification Authorities&lt;/i&gt; certificate store of the client machines. If this is the case, the fourth step can be skipped. Since in this example we generated the ContosoRoot.cer, our client does not have the certificate in the store and we should import the certificate. Again, we can import this certificate through MMC, as shown in the following figure. Note that at this time, the MMC has a certificate snap-in for &lt;i&gt;Current User&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/HowcanIgetridofthePublishercannotbeverif_A196/clip_image006_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/HowcanIgetridofthePublishercannotbeverif_A196/clip_image006_thumb.jpg" width="544" height="306" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, if the Authenticode certificate used to sign the VSTO ClickOnce package has been imported to the &lt;i&gt;Trusted Publishers &lt;/i&gt;certificate store for current user on the client machine, the package will be installed without prompting. Otherwise, when a user takes an external list offline, he or she will see the following friendly prompt with the publisher name. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/HowcanIgetridofthePublishercannotbeverif_A196/clip_image008_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/bcs/WindowsLiveWriter/HowcanIgetridofthePublishercannotbeverif_A196/clip_image008_thumb.jpg" width="499" height="267" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;If the external list has been taken offline before you imported the Authenticode certificate to the WFEs, you may have to remove the old package from the server so that a package signed with the new certificate will be generated. You can do this through SharePoint Designer. For example, if you want to remove the old package for external list “Product List” on site http://contoso, you can open http://contoso in SharePoint Designer, click on &lt;b&gt;All Files&lt;/b&gt; under &lt;b&gt;Site Objects&lt;/b&gt; in the Navigation pane, and an &lt;b&gt;All Files&lt;/b&gt;&lt;i&gt; &lt;/i&gt;tab will show up. Click on &lt;b&gt;Lists&lt;/b&gt; in the &lt;b&gt;All Files&lt;/b&gt; tab then &lt;b&gt;Product List&lt;/b&gt;, you should see a folder named &lt;i&gt;ClientSolution&lt;/i&gt;. Remove this folder by selecting the folder name and then clicking on the &lt;b&gt;Delete&lt;/b&gt; button in the ribbon. From this point on, if a user takes this list offline, he or she will not see the unfriendly prompt shown at the beginning of this post.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Note that, if any of the following is true, taking an external list offline may fail.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The certificate imported into the certificate store &lt;i&gt;BusinessConnectivityServices&lt;/i&gt; for Local Machine on a WFE does not conta&lt;a name="_GoBack"&gt;&lt;/a&gt;in a private key; &lt;/li&gt;    &lt;li&gt;There is more than one certificate in the store &lt;i&gt;BusinessConnectivityServices&lt;/i&gt;.&lt;b&gt;&lt;/b&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;To fix those issues, you have to clean up the certificate store and import a certificate with a private key. &lt;/p&gt;  &lt;p&gt;After the certificate is imported, if you get the error “Failed to publish Solution &amp;lt;external list name&amp;gt; because keyset does not exist”, please make sure that the certificate imported to the certificate store LOCAL_MACHINE\BusinessConnectivityServices contains a private key. If the certificate contains a private key, but you still get the error, the security account for the application pool used for the hosting Web application for the SharePoint site may not have access to the private key of the certificate imported from ContosoBCS.pfx. You can examine who has access to the private key by running the following command on WFEs, where ContosoBCS is the subject of certificate:&lt;/p&gt;  &lt;p class="Default"&gt;&lt;span style="font-family: &amp;quot;Cordia New&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: windowtext; mso-bidi-font-family: cambria"&gt;&lt;font size="3"&gt;winhttpcertcfg.exe -l -c LOCAL_MACHINE\BusinessConnectivityServices –s ContosoBCS&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Cordia New&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #0070c0; mso-bidi-font-family: cambria"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;This command will show a list of accounts and groups with access to the private key. If neither the local group WSS_WPG nor the security account for the application pool is in the list, the security account for the application pool does not have access to the private key. &lt;/p&gt;  &lt;p&gt;To fix this issue, run the following command:&lt;/p&gt;  &lt;p class="Default"&gt;&lt;span style="font-family: &amp;quot;Cordia New&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: windowtext; mso-bidi-font-family: cambria"&gt;&lt;font size="3"&gt;winhttpcertcfg.exe -g -c LOCAL_MACHINE\BusinessConnectivityServices –s ContosoBCS –a &amp;lt;application pool account&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Cordia New&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #0070c0; mso-bidi-font-family: cambria"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="Default"&gt;&lt;span style="font-family: &amp;quot;Cordia New&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: #0070c0; mso-bidi-font-weight: bold"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;For more information about winhttpcertcfg.exe please see &lt;a href="http://msdn.microsoft.com/en-us/library/aa384088(VS.85).aspx"&gt;WinHttpCertCfg.exe, a Certificate Configuration Tool&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;- Bin Zhang&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Updated 02/10/2010&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9952143" width="1" height="1"&gt;</description></item></channel></rss>
