<?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>SharePoint Dev Blog</title><link>http://blogs.msdn.com/b/sharepointdev/</link><description>Brought to you by Microsoft teams working on SharePoint developer content</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>We want your ideas on migrating SharePoint solutions to apps for SharePoint</title><link>http://blogs.msdn.com/b/sharepointdev/archive/2013/05/23/we-would-like-your-ideas-on-migrating-sharepoint-solutions-to-apps-for-sharepoint.aspx</link><pubDate>Thu, 23 May 2013 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10420664</guid><dc:creator>Keenan Newton</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/rsscomments.aspx?WeblogPostID=10420664</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/commentapi.aspx?WeblogPostID=10420664</wfw:comment><comments>http://blogs.msdn.com/b/sharepointdev/archive/2013/05/23/we-would-like-your-ideas-on-migrating-sharepoint-solutions-to-apps-for-sharepoint.aspx#comments</comments><description>&lt;p&gt;Have you heard? The new &lt;a href="http://www.reimaginespdev.com/"&gt;Reimagine SharePoint Development&lt;/a&gt; site is now live. This site contains articles, videos, and blog posts that focus on migrating SharePoint solutions to apps. We will be adding content to the site in the months ahead, so if there is something you would like to know more about, just let us know in the comments below or in this &lt;a href="http://social.technet.microsoft.com/Forums/en-US/sharepointdevelopment/thread/ad76aa9a-84ee-482c-8232-aca839c20362"&gt;MSDN forum thread&lt;/a&gt;. For more information, see the &lt;a href="http://blogs.msdn.com/b/sharepointdev/archive/2013/05/08/reimagine-sharepoint-development.aspx"&gt;Reimagine SharePoint Development&lt;/a&gt; announcement post.&lt;/p&gt;  &lt;p&gt;Several questions came up during the launch webcast. We are planning a series of blog posts that should get everybody on the same page. Stay tuned!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10420664" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/Announcement/">Announcement</category><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/SharePoint+2013/">SharePoint 2013</category><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/apps+for+SharePoint/">apps for SharePoint</category><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/reimaginespdev/">reimaginespdev</category></item><item><title>Reimagine SharePoint Development</title><link>http://blogs.msdn.com/b/sharepointdev/archive/2013/05/08/reimagine-sharepoint-development.aspx</link><pubDate>Wed, 08 May 2013 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10416825</guid><dc:creator>Keenan Newton</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/rsscomments.aspx?WeblogPostID=10416825</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/commentapi.aspx?WeblogPostID=10416825</wfw:comment><comments>http://blogs.msdn.com/b/sharepointdev/archive/2013/05/08/reimagine-sharepoint-development.aspx#comments</comments><description>&lt;p&gt;Join us May 20, 2013, for a webcast as we kick off a new site centered on migrating SharePoint solutions to apps. We will discuss the history of SharePoint customizations and where the SharePoint development platform is going. We will also highlight the benefits of the Cloud App Model and answer any questions on migrating SharePoint solutions to apps that you may have. I will be the host, and we are welcoming &lt;b&gt;Robert Lefferts&lt;/b&gt;, Partner Director of Apps Program Management, as a special guest speaker. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://bit.ly/15VyQ20"&gt;Register for the webcast now&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The &lt;b&gt;Reimagine SharePoint Development&lt;/b&gt; site (http://reimaginespdev.com) officially launches on May 20. We created it specifically for current SharePoint developers who are interested in understanding more about apps, and who want to learn about the proven practices of architecting and developing apps and migrating SharePoint solutions to apps. &lt;/p&gt;  &lt;p&gt;Our goal with this site is to help you understand when it’s best to develop an app, and when it’s not; what the proven practices are for creating apps for SharePoint; and when an existing SharePoint solution is a candidate for migration to an app, as well as how to do it. We plan to include MSDN articles and white papers, video content, blog posts from some of our MVPs about developing apps, migrating solutions to apps, and more. &lt;/p&gt;  &lt;p&gt;As a SharePoint developer, you should make &lt;a href="http://www.reimaginespdev.com"&gt;http://www.reimaginespdev.com&lt;/a&gt; your first stop when planning and developing your next app or migrating your existing SharePoint solution.&lt;/p&gt;  &lt;p&gt;We want to know what you think! Please leave us comments and share your thoughts and ideas.&lt;/p&gt;  &lt;p&gt;Related resources:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-US/office/apps"&gt;Apps for Office and SharePoint Dev Center&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/library/office/apps/fp179924(v=office.15)"&gt;Sign up for an Office 365 Developer Site&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;i&gt;Keenan Newton is a senior product marketing manager on the SharePoint team at Microsoft.&lt;/i&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10416825" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/Training/">Training</category><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/Announcement/">Announcement</category><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/SharePoint+2013/">SharePoint 2013</category><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/reimaginespdev/">reimaginespdev</category></item><item><title>Optimizing SharePoint 2013 websites for mobile devices</title><link>http://blogs.msdn.com/b/sharepointdev/archive/2013/05/07/optimizing-sharepoint-2013-websites-for-mobile-devices.aspx</link><pubDate>Tue, 07 May 2013 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10415752</guid><dc:creator>SharePoint Developer Team</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/rsscomments.aspx?WeblogPostID=10415752</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/commentapi.aspx?WeblogPostID=10415752</wfw:comment><comments>http://blogs.msdn.com/b/sharepointdev/archive/2013/05/07/optimizing-sharepoint-2013-websites-for-mobile-devices.aspx#comments</comments><description>&lt;p&gt;&lt;i&gt;The mobile market is growing continuously, and in the near future, more mobile devices than desktop computers will be used to surf the web. To ensure a user-friendly experience, we must optimize Internet websites for presenting content across the different devices. SharePoint 2013 offers a number of options for optimizing public-facing websites for mobile devices. Depending on your requirements, you can choose one or a combination of several options.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;In the last few years, the use of mobile devices to surf the web has increased significantly. According to some researchers, by 2015, more mobile devices than desktop computers will be used to access the web. Mobile devices come in different sizes and capabilities. And since the desktop experience just isn’t good for mobile users, what are the options for improving the experience of mobile users on your website?&lt;/p&gt;  &lt;h1&gt;Improving the user experience across devices&lt;/h1&gt;  &lt;p&gt;Optimizing the user experience of a website across different devices is a complex process. Not only do you have to take into account the screen resolution of each device, but you also need to consider its capabilities (such as touch or pointer-based) and device size (1024x768 might be clearly readable for everyone on a 20-inch monitor but might result in a very bad experience on a 5-inch screen).&lt;/p&gt;  &lt;p&gt;When you are planning improvements to the user experience of your website on mobile devices, there is no silver bullet approach. You have to research who your users are, which devices they use, and what they are trying to achieve on your website. You also have to have clear goals for what purpose your website serves and how it should guide your visitors in the process of becoming your customers.&lt;/p&gt;  &lt;p&gt;You have several options for improving the user experience of a public-facing website. Which one you choose depends on the different factors that apply to your scenario.&lt;/p&gt;  &lt;h1&gt;Mobile websites&lt;/h1&gt;  &lt;p&gt;In the past, when the web technology wasn’t as sophisticated as it is nowadays, it was a common practice to provide mobile users with a separate mobile website to optimize their experience. Being hosted on a separated URL, such as http://m.contoso.com, the mobile site would have a user experience optimized for mobile devices. In some scenarios, organizations would even go a step further and optimize the copy on the mobile website. When a user navigated to the website using a mobile device, the main website would detect the use of a mobile device and automatically redirect the visitor to the mobile version.&lt;/p&gt;  &lt;p&gt;It’s not that hard to imagine that building and maintaining two different sites is not only costly but also time consuming. Every update has to be done separately. Even then, with the diversity of today’s mobile devices, the questions remain whether a single mobile website would suffice and whether you wouldn’t need more websites to reach the whole spectrum of your customers.&lt;/p&gt;  &lt;p&gt;Being able to reuse the content across the main and mobile websites simplifies the content management process. But the need to separately maintain the functionality of both websites makes it hard to justify this approach in most scenarios.&lt;/p&gt;  &lt;h1&gt;Mobile apps&lt;/h1&gt;  &lt;p&gt;One of the recent developments of the mobile market is the increased popularity of companion apps. By using the native capabilities of specific devices, you can build rich mobile apps to support different use cases. There is no better user experience on a mobile device than the native one offered by the device itself. For more information, see &lt;a href="http://msdn.microsoft.com/library/jj163228.aspx"&gt;Build mobile apps for SharePoint 2013&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;But is it realistic to build separate apps for all the different scenarios and for all the different mobile devices used to navigate the website? Although mobile apps are of great value for supporting specific use cases, there is still the need to access the information on the website from a mobile device in a user-friendly way.&lt;/p&gt;  &lt;h1&gt;Responsive web design&lt;/h1&gt;  &lt;p&gt;Instead of building separate mobile sites for mobile devices, what if we could have one website that automatically adapts itself to the particular device?&lt;/p&gt;  &lt;p&gt;Responsive web design is a concept based on the ability to separate the design from the content on a website. Using the CSS media queries capability implemented in all modern browsers, and based on the screen dimensions of the specific device, you can load different style sheets to ensure that the website is presented in a user-friendly manner. And because CSS has its limitations, you can use JavaScript to further optimize the interface and interaction of a website on mobile devices. For more information, see &lt;a href="http://blogs.msdn.com/b/sharepointdev/archive/2013/04/01/implementing-your-responsive-designs-on-sharepoint-2013.aspx"&gt;Implementing your responsive designs on SharePoint 2013&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;From the search engine optimization (SEO) perspective, responsive web design is the recommended way to optimize public-facing websites for mobile devices. After all, since the same HTML is sent to every device, it’s sufficient for an Internet search engine to index the content once, and it can be sure that the search results will apply the search query on every device.&lt;/p&gt;  &lt;p&gt;Implementing responsive web design on a public-facing website is relatively easy assuming you start planning for it from the beginning. The great advantage of responsive web design above other approaches is that you maintain your website once to support a variety of audiences, and the different experiences are future-proof as they depend on the devices’ dimensions rather than their identity.&lt;/p&gt;  &lt;p&gt;The following figures show how the sample Contoso Electronics website is displayed on different devices using responsive web design. Figure 1 shows the screen shot taken on a desktop device.&lt;/p&gt;  &lt;div style="text-align: center; font-size: 80%;"&gt;&lt;img title="Figure 1. The Contoso Electronics website displayed on a desktop device" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Figure 1. The Contoso Electronics website displayed on a desktop device" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2772.clip_5F00_image002_5F00_102F4012.jpg" width="323" height="321" /&gt;Figure 1. The Contoso Electronics website displayed on a desktop device&lt;/div&gt;  &lt;p&gt;Figure 2 shows how the Contoso Electronics website looks like on different mobile devices.&lt;/p&gt;  &lt;div style="text-align: center; font-size: 80%;"&gt;&lt;img title="Figure 2. The Contoso Electronics website displayed on mobile devices" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Figure 2. The Contoso Electronics website displayed on mobile devices" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2705.clip_5F00_image004_5F00_16E24995.jpg" width="317" height="136" /&gt;Figure 2. The Contoso Electronics website displayed on mobile devices&lt;/div&gt;  &lt;h1&gt;SharePoint 2013 device channels&lt;/h1&gt;  &lt;p&gt;One of the new capabilities of SharePoint 2013 is &lt;i&gt;device channels&lt;/i&gt;. You can use device channels to optimize how a website is displayed on different devices. By defining different channels and associating different devices with them, you can use different master pages to optimize how the website is presented to the user. For more information, see &lt;a href="http://msdn.microsoft.com/library/jj733517.aspx"&gt;How to: Create device channels in SharePoint 2013&lt;/a&gt;. Figure 5 shows a sample configuration of device channels for a public-facing website built with SharePoint 2013.&lt;/p&gt;  &lt;div style="text-align: center; font-size: 80%;"&gt;&lt;img title="Figure 3. Device channels configured for a public-facing website built on SharePoint 2013" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Figure 3. Device channels configured for a public-facing website built on SharePoint 2013" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/3365.clip_5F00_image006_5F00_61D5BA64.png" width="628" height="379" /&gt;Figure 3. Device channels configured for a public-facing website built on SharePoint 2013&lt;/div&gt;  &lt;p&gt;Whereas responsive web design uses a device’s screen size to determine the presentation layer, device channels in SharePoint 2013 use the identity of the browser on the particular device to decide which presentation style to use. Depending on how many different devices your site visitors use, managing the different devices and experiences can become complex. By using device channels, you get more flexibility in controlling the markup of your website for the different devices. Another benefit of using device channels is that you can serve different content to different devices, whereas the same content is served when using responsive web design. With device channels, you can apply additional optimizations to your website, such as resizing images and videos server-side using the renditions capability, which further improves the performance and user experience of your website. For more information, see &lt;a href="http://msdn.microsoft.com/library/jj720398.aspx"&gt;How to: Manage image renditions in SharePoint 2013&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;With all the different options at our disposal, which one should we use to get the best results?&lt;/p&gt;  &lt;h1&gt;Improving the user experience of a public-facing website in SharePoint 2013&lt;/h1&gt;  &lt;p&gt;First and foremost, it’s important to note that SharePoint 2013 supports all the methods mentioned above for improving user experience on mobile devices. Whether you’re looking at building a separate website for mobile users, supporting certain use cases with a mobile app, implementing responsive web design, or using device channels, it can all be implemented in your website on top of SharePoint 2013.&lt;/p&gt;  &lt;p&gt;Not only does SharePoint 2013 not stand in your way, but it also supports you in implementing some of those improvements. For example, using the cross-site publishing capability, you can easily publish the centrally managed content on both the main and the mobile websites. With the Search REST API, you can have your content published in your mobile app, and if you’re looking at optimizing the presentation of your website across different devices, SharePoint 2013 offers plenty of features to help you.&lt;/p&gt;  &lt;p&gt;With all these techniques at your disposal, it is up to you to decide which method, or combination of methods, is the best choice for what you’re trying to achieve. While you might be interested in supporting a particular complex process with a dedicated mobile app, it might still be of added value to ensure that everyone, regardless of their device, can access all the information on your website.&lt;/p&gt;  &lt;p&gt;In most scenarios, it’s easy to choose whether or not the particular optimization technique offers added value. A slightly more difficult choice, partly due to the similarity of both methods, is whether you should use responsive web design or device channels to optimize the presentation of your website for mobile devices.&lt;/p&gt;  &lt;h1&gt;Responsive web design and device channels comparison&lt;/h1&gt;  &lt;p&gt;Responsive web design and the SharePoint 2013 device channels capability are similar in how they let you optimize a single website to be displayed in a user-friendly way on different devices. Despite this similarity, there are a few important differences between both approaches. Table 1 presents a comparison of the different properties of both approaches.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="312"&gt;         &lt;p&gt;&lt;b&gt;Device channels&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="312"&gt;         &lt;p&gt;&lt;b&gt;Responsive web design&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="312"&gt;         &lt;p&gt;Device management&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="312"&gt;         &lt;p&gt;Property management&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="312"&gt;         &lt;p&gt;Different HTML for every channel&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="312"&gt;         &lt;p&gt;Same HTML for every device&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="312"&gt;         &lt;p&gt;More management (support for new devices)&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="312"&gt;         &lt;p&gt;Future proof (device size)&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="312"&gt;         &lt;p&gt;More flexibility&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="312"&gt;         &lt;p&gt;Limited by CSS support and capabilities&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="312"&gt;         &lt;p&gt;Custom Vary-By User Agent response header required&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="312"&gt;         &lt;p&gt;Preferred by Internet search engines&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="text-align: center; font-size: 80%;"&gt;Table 1. Comparison of device channels and responsive web design&lt;/div&gt;  &lt;h1&gt;Applying user experience&lt;/h1&gt;  &lt;p&gt;First of all, there is a difference in how both approaches determine which user experience should be applied for the particular user. Responsive web design uses the size of the screen to determine how the content should be laid out in the browser’s window. Device channels, on the other hand, use the identity of the browser to load the suitable channel.&lt;/p&gt;  &lt;p&gt;While responsive web design can cause different experiences to be loaded depending on the size of the browser window, device channels will always load the same experience for the same device regardless of the browser window size. Using device channels can have great advantages, for example, from the troubleshooting point of view where the user and the helpdesk employee would see the same interface despite the possible differences in their screen resolutions or browser window sizes.&lt;/p&gt;  &lt;h1&gt;Page markup&lt;/h1&gt;  &lt;p&gt;Another difference between device channels and responsive web design is how the page contents are served. Responsive web design changes only the presentation layer of the website. Although you can hide some pieces of the page in the browser using CSS, they are still present in the website’s code and therefore loaded. When using device channels, you can use different master pages to ensure that only the relevant markup is served to users. Additionally, you can use the device channel panels to further control the content elements loaded on specific pages.&lt;/p&gt;  &lt;p&gt;Although device channels allow for better control of the rendered HTML and therefore optimized performance of the website, more effort is required to ensure that Internet search engines will properly deal with all the different versions of the website presented to different devices. You can achieve this by using the Vary-By User Agent response header, but it has to be done manually.&lt;/p&gt;  &lt;h1&gt;Future-proofness&lt;/h1&gt;  &lt;p&gt;Responsive web design uses the size of the browser window to distinguish between the different experiences. This is a robust approach, and the chances are low that a new device will appear on the market that has a poor user experience despite the configured breakpoints. One reason for that might be related to some specific capabilities of such devices, but again, chances of this are very rare.&lt;/p&gt;  &lt;p&gt;SharePoint 2013 device channels are based on the identity of the browser used to open the website. There are two challenges with this approach. First of all, in some situations it might be impossible to distinguish between the same browser installed on the same operating system but on two devices with distinct capabilities. Second, if a new device appears on the market, you would have to verify that this device is assigned to the right device channel on your website.&lt;/p&gt;  &lt;h1&gt;Choosing the right approach for optimizing the user experience&lt;/h1&gt;  &lt;p&gt;Although responsive web design and device channels are very similar, their capabilities differ and they have different impact when used for optimizing a website for mobile devices. Due to their similarities and their own strength, choosing between the two approaches is often difficult. Why not combine both approaches to get the best of what they offer?&lt;/p&gt;  &lt;h1&gt;Combining responsive web design and device channels&lt;/h1&gt;  &lt;p&gt;An interesting scenario worth considering is to combine responsive web design and SharePoint 2013 device channels to benefit from the strengths of both approaches.&lt;/p&gt;  &lt;p&gt;When combining responsive web design and device channels, you could use responsive web design to create the baseline cross-device experience. Depending on your design for the different breakpoints, using responsive web design could be good for the 80%, or maybe even 90%, of the optimizations. The remainder—whether they’re caused by how the web design changes between the breakpoints or by the capabilities of the different devices that should be supported—could be covered by device channels and device channel panels.&lt;/p&gt;  &lt;p&gt;By using responsive web design to build the baseline for the cross-browser experience, we benefit from its future-proofness and robustness. For the specific exceptions, we can benefit from the granular control that SharePoint device channels offer us.&lt;/p&gt;  &lt;h1&gt;About the author&lt;/h1&gt;  &lt;p&gt;&lt;i&gt;Waldek Mastykarz is a Microsoft SharePoint Server MVP and works as a SharePoint consultant at Mavention. Waldek shares his enthusiasm about the SharePoint platform through his blog, articles published in online and off-line magazines and on MSDN SharePoint Forums. He is also a speaker at community events such as the SharePoint conference in London, SharePoint Connections Amsterdam, and SharePoint Saturday. In addition to his job at Mavention, Waldek is a Virtual Technology Solutions Sales Professional for Microsoft Netherlands. In this role he helps answer customer questions around SharePoint Web Content Management (WCM).&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Blog: &lt;a href="http://blog.mastykarz.nl"&gt;http://blog.mastykarz.nl&lt;/a&gt;     &lt;br /&gt;Twitter: &lt;a href="http://twitter.com/waldekm"&gt;http://twitter.com/waldekm&lt;/a&gt;     &lt;br /&gt;Mavention: &lt;a href="http://www.mavention.com"&gt;http://www.mavention.com&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10415752" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/UX/">UX</category><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/SharePoint+2013/">SharePoint 2013</category></item><item><title>Implementing your responsive designs on SharePoint 2013</title><link>http://blogs.msdn.com/b/sharepointdev/archive/2013/04/01/implementing-your-responsive-designs-on-sharepoint-2013.aspx</link><pubDate>Mon, 01 Apr 2013 20:17:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10406779</guid><dc:creator>Ricardo Loo</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/rsscomments.aspx?WeblogPostID=10406779</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/commentapi.aspx?WeblogPostID=10406779</wfw:comment><comments>http://blogs.msdn.com/b/sharepointdev/archive/2013/04/01/implementing-your-responsive-designs-on-sharepoint-2013.aspx#comments</comments><description>&lt;p&gt;&lt;i&gt;Learn how a SharePoint publishing site looks and reacts to different display resolutions when you implement a responsive web design.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Web designers are crucial for a successful SharePoint implementation. We all know that. With this in mind, I wanted to write an article for our SharePoint web designers out there. Not being an authority on the subject, I decided to ask someone who has been working in web design for some time. By asking my contacts, I got the email address of an expert in SharePoint branding and UX customization. Eric Overfield was the name on the contact card. I set up a conference call, and very soon we were chatting and discussing UX, branding, artists, engineers, and SharePoint.&lt;/p&gt;  &lt;p&gt;The conversation quickly turned to devices and how to make SharePoint work as well as possible in this new and changing set of displays. Eric’s answer was: &lt;a href="http://alistapart.com/article/responsive-web-design"&gt;responsive web design&lt;/a&gt;. Responsive web design allows us to look at a site like a fluid grid. The fluid, dynamic grid adapts itself to fit the information in display resolutions as different as those in a phone, a tablet, and a full desktop monitor. Keep in mind that the mix of display resolutions doubles if you consider landscape and portrait orientations available in all these devices.&lt;/p&gt;  &lt;p&gt;The author of the &lt;a href="http://alistapart.com/article/responsive-web-design"&gt;original post&lt;/a&gt; about responsive web design, Ethan Marcotte, provided a &lt;a href="http://d.alistapart.com/responsive-web-design/ex/ex-site-FINAL.html"&gt;reference site&lt;/a&gt; to demo the concepts explained in his post. In this demo, you can observe how the elements in the page rearrange themselves to fit the current resolution as you resize your browser window. The demo left me wondering how a SharePoint website would react to different resolutions by using the fluid grid characteristic of responsive frameworks. Fortunately, Eric, along with some other people, developed &lt;a href="http://responsivesharepoint.codeplex.com/"&gt;Responsive SharePoint&lt;/a&gt;. Responsive SharePoint is a CodePlex project that you can use to try responsive frameworks on your SharePoint website.&lt;/p&gt;  &lt;p&gt;I followed the provided instructions to install the resources by using Design Manager on an out-of-the-box publishing site. In no time, I was looking at how the site dynamically reacted to different resolutions as I resized my browser window. I decided to test the project by using the following display resolutions:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;1200x1900 (desktop, portrait orientation)&lt;/li&gt;    &lt;li&gt;768x1366 (tablet, portrait orientation)&lt;/li&gt;    &lt;li&gt;480x800 (smartphone, portrait orientation)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The results were amazing. Within 10 minutes, I had a SharePoint website that automatically adapts to display resolutions commonly used in devices. The following figure compares the website in commonly used display resolutions:&lt;/p&gt;    &lt;div style="text-align: center; font-size: 80%;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88/6813.Responsive-comparison.png"&gt;&lt;img title="Figure 1. Comparison of resolutions of the SharePoint website using a responsive framework" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="Figure 1. Comparison of resolutions of the SharePoint website using a responsive framework" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/0268.clip_5F00_image002_5F00_thumb_5F00_0C1AC5B3.png" width="640" height="345" /&gt;&lt;/a&gt;Figure 1. Comparison of resolutions of the SharePoint website using a responsive framework&lt;/div&gt;    &lt;p&gt;How is this achieved?&lt;/p&gt;  &lt;p&gt;In this post, I can only explain that Responsive SharePoint uses media queries to match the width of the display in the device and then applies a set of styles to present the content in the available space. For this to work, you need a browser that supports media queries. The latest version of the major browsers support such functionality. The following code example shows how to declare media queries:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="background: white; color: blue;"&gt;@media (&lt;/span&gt;&lt;span style="background: white; color: red;"&gt;min-width&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;: &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;769px) and (&lt;/span&gt;&lt;span style="background: white; color: red;"&gt;max-width&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;: &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;979px) &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;{
    &lt;/span&gt;&lt;span style="background: white; color: rgb(0, 100, 0);"&gt;/*
        Styles for display width 
        between 769 and 979 pixels
    */
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;}

&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;@media (&lt;/span&gt;&lt;span style="background: white; color: red;"&gt;max-width&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;: &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;768px) &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;{
    &lt;/span&gt;&lt;span style="background: white; color: rgb(0, 100, 0);"&gt;/*
        Styles for display width 
        equal to 768 pixels and thinner
    */
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;}

&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;@media (&lt;/span&gt;&lt;span style="background: white; color: red;"&gt;min-width&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;: &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;1200px) &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;{
    &lt;/span&gt;&lt;span style="background: white; color: rgb(0, 100, 0);"&gt;/*
        Styles for display width 
        equal to 1200 pixels and wider
    */
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;}
&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Of course there is much more to it. You can learn more by browsing the &lt;a href="http://responsivesharepoint.codeplex.com/"&gt;Responsive SharePoint&lt;/a&gt; CodePlex project.&lt;/p&gt;

&lt;p&gt;The new design and branding features in SharePoint 2013 make it easy to create and edit your web design, including responsive designs. You can even use the tools you are familiar with by &lt;a href="http://msdn.microsoft.com/library/jj733519.aspx"&gt;mapping a network drive to the SharePoint 2013 Master Page Gallery&lt;/a&gt;. In my case, I used Microsoft Expression Web 4 to browse and edit the master pages and CSS files. &lt;/p&gt;

&lt;p&gt;I am excited about the new design and branding features and how we can use them in responsive web designs. For more information, see &lt;a href="http://msdn.microsoft.com/library/jj163942.aspx"&gt;What's new with SharePoint 2013 site development&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;- Ricardo&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Eric Overfield is the co-founder of &lt;/i&gt;&lt;a href="http://pixelmill.com/Default.aspx"&gt;&lt;i&gt;PixelMill&lt;/i&gt;&lt;/a&gt;&lt;i&gt;. PixelMill is a company that offers products and services for branding SharePoint starting with SharePoint 2007, and they have been in the web design business since 1998. Eric is very passionate about the community for whom he developed the CodePlex project &lt;/i&gt;&lt;a href="http://responsivesharepoint.codeplex.com/"&gt;&lt;i&gt;Responsive SharePoint&lt;/i&gt;&lt;/a&gt;&lt;i&gt;. He is also a speaker at SharePoint events, such as SharePoint Saturdays, and is in the process of writing a book about responsive design and SharePoint 2013. You can read more about Eric’s work at &lt;/i&gt;&lt;a href="http://blog.pixelmill.com/"&gt;&lt;i&gt;PixelMill’s blog&lt;/i&gt;&lt;/a&gt;&lt;i&gt; and follow him on Twitter &lt;/i&gt;&lt;a href="https://twitter.com/ericoverfield"&gt;&lt;i&gt;@ericoverfield&lt;/i&gt;&lt;/a&gt;&lt;i&gt;.&lt;/i&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10406779" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/UX/">UX</category><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/SharePoint+2013/">SharePoint 2013</category></item><item><title>Cross-post from the SharePoint blog: Options to create forms in SharePoint 2013</title><link>http://blogs.msdn.com/b/sharepointdev/archive/2013/03/13/cross-post-from-the-sharepoint-blog-options-to-create-forms-in-sharepoint-2013.aspx</link><pubDate>Wed, 13 Mar 2013 11:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10401779</guid><dc:creator>SharePoint Developer Team</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/rsscomments.aspx?WeblogPostID=10401779</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/commentapi.aspx?WeblogPostID=10401779</wfw:comment><comments>http://blogs.msdn.com/b/sharepointdev/archive/2013/03/13/cross-post-from-the-sharepoint-blog-options-to-create-forms-in-sharepoint-2013.aspx#comments</comments><description>&lt;p&gt;Last week, Keenan Newton published a blog post on the &lt;a href="http://blogs.office.com/b/sharepoint/"&gt;SharePoint blog&lt;/a&gt;. In his post, Keenan explains the different &lt;a href="http://blogs.office.com/b/sharepoint/archive/2013/03/04/options-to-create-forms-in-sharepoint-2013.aspx"&gt;options for creating forms in SharePoint 2013&lt;/a&gt;. To summarize, you can choose from several different tools for building forms in SharePoint. Depending on what your specific needs are, you will find a wide range of tools that provide flexibility for both business users and developers.&lt;/p&gt;
&lt;p&gt;The following options are available for you to create forms in SharePoint 2013:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;InfoPath&lt;/li&gt;
&lt;li&gt;Access&lt;/li&gt;
&lt;li&gt;Excel&lt;/li&gt;
&lt;li&gt;Visual Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, visit the original blog post, &lt;a href="http://blogs.office.com/b/sharepoint/archive/2013/03/04/options-to-create-forms-in-sharepoint-2013.aspx"&gt;Options to Create Forms in SharePoint 2013&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10401779" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/SharePoint+2013/">SharePoint 2013</category></item><item><title>Rounding up Office 365 developer content</title><link>http://blogs.msdn.com/b/sharepointdev/archive/2013/03/12/rounding-up-office-365-developer-content.aspx</link><pubDate>Tue, 12 Mar 2013 11:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10401378</guid><dc:creator>SharePoint Developer Team</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/rsscomments.aspx?WeblogPostID=10401378</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/commentapi.aspx?WeblogPostID=10401378</wfw:comment><comments>http://blogs.msdn.com/b/sharepointdev/archive/2013/03/12/rounding-up-office-365-developer-content.aspx#comments</comments><description>&lt;p&gt;&lt;a title="Office 365 Developer Center main page" href="http://msdn.microsoft.com/office365" target="_blank"&gt;&lt;img style="margin: 0px 12px; float: left; display: inline; background-image: none;" title="Office 365 Developer Center main page" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/5280.clip_5F00_image00242_5F00_39B894CE.jpg" alt="Office 365 Developer Center main page" width="329" height="181" align="left" border="0" hspace="12" /&gt;&lt;/a&gt;This week, we completed the facelift of our entry point for Office 365 developer content on MSDN.&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://msdn.microsoft.com/office365"&gt;Office 365 Developer Center&lt;/a&gt; pulls together the resources that partners and developers need to build solutions for Office 365.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The new articles and code samples on the &lt;a href="http://msdn.microsoft.com/office365"&gt;Office 365 Developer Center&lt;/a&gt; complement the developer content that we&amp;rsquo;ve been publishing since last July on our &lt;a href="http://dev.office.com/"&gt;Dev.Office.com&lt;/a&gt; site.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Getting started articles&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/jj984338.aspx"&gt;Developing solutions with Office 365&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/jj984351.aspx"&gt;Comparing the Office 365 online and on-premises development environments&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/jj984321.aspx"&gt;Learning about the Office 365 Reporting web service&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Code samples&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Don&amp;rsquo;t miss the newest &lt;a href="http://code.msdn.microsoft.com/site/search?f%5B0%5D.Type=Technology&amp;amp;f%5B0%5D.Value=Office%20365&amp;amp;f%5B0%5D.Text=Office%20365&amp;amp;sortBy=Date"&gt;Office 365 code samples&lt;/a&gt;, designed to help you learn how to do the following common tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the Office 365 Reporting web service&lt;/li&gt;
&lt;li&gt;Integrate Windows Azure&lt;/li&gt;
&lt;li&gt;Use Windows PowerShell in Office 365&lt;/li&gt;
&lt;li&gt;Use best practices for authentication and authorization for on-premises and Office 365 services&lt;/li&gt;
&lt;li&gt;Use best practices for enabling applications to use Office 365 services&lt;/li&gt;
&lt;li&gt;Use best practices for error handling in Office 365 solutions&lt;/li&gt;
&lt;li&gt;Integrate social media into Office 365&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #000000;"&gt;&lt;em&gt;&lt;span style="font-family: 'Calibri','sans-serif'; font-size: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;"&gt;Written by Lola Jacobsen, Senior Content Project Manager of the Office 365 Developer Center&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10401378" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/Office+365/">Office 365</category></item><item><title>Adding a custom data source to Aggregated Business Calendar</title><link>http://blogs.msdn.com/b/sharepointdev/archive/2013/02/19/adding-a-custom-data-source-to-aggregated-business-calendar.aspx</link><pubDate>Wed, 20 Feb 2013 00:14:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10395290</guid><dc:creator>bhkumar</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/rsscomments.aspx?WeblogPostID=10395290</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/commentapi.aspx?WeblogPostID=10395290</wfw:comment><comments>http://blogs.msdn.com/b/sharepointdev/archive/2013/02/19/adding-a-custom-data-source-to-aggregated-business-calendar.aspx#comments</comments><description>&lt;p&gt;&lt;a&gt;&lt;i&gt;&lt;font color="#000000"&gt;With Feature Pack 1 for Duet Enterprise 1.0 and Duet Enterprise 2.0, you can add a custom data source to your Aggregated Business Calendar Web Part along with the other types of data sources. In this post, we walk you through the steps to create a &lt;/font&gt;&lt;/i&gt;&lt;/a&gt;&lt;a&gt;&lt;i&gt;&lt;font color="#000000"&gt;SQL Server-based &lt;/font&gt;&lt;/i&gt;&lt;/a&gt;&lt;font color="#000000"&gt;&lt;i&gt;data source and configure the Aggregated Business Calendar Web Part to display the data from this data source.&lt;/i&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;I&lt;/font&gt;f Feature Pack 1 for Duet Enterprise 1.0 or Duet Enterprise 2.0 is installed on your server, you will have the OBA.Server.Extensions.dll assembly in the global assembly cache (GAC). You will need this assembly for the development of the SQL Server data source.&lt;/p&gt;  &lt;h1&gt;Create a data source&lt;/h1&gt;  &lt;p&gt;First, we need to create a data source accessor, which will work as a back end and provide the data in the correct format when the aggregate calendar requests it.&lt;/p&gt;  &lt;p&gt;Here’s how you do this:&lt;/p&gt;  &lt;p&gt;1. Open Visual Studio, and create a new class library project—for example, &lt;b&gt;Project1&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;2. Now add a reference to &lt;b&gt;OBA.Server.Extensions.dll&lt;/b&gt; in your project, and use the &lt;b&gt;OBA.Server.Extensions&lt;/b&gt; namespace.&lt;/p&gt;  &lt;p&gt;3. Now your &lt;b&gt;DataSourceAccessor&lt;/b&gt; class must implement the &lt;b&gt;ICalendarAccessor&lt;/b&gt; interface. So create a class in your project—for example, &lt;b&gt;SQLDataSource : ICalendarAccessor&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;4. This class needs to have the following override methods and properties:&lt;/p&gt;  &lt;ul&gt;   &lt;ol&gt;     &lt;ul&gt;       &lt;li&gt;Initialize()&lt;/li&gt;        &lt;li&gt;RetrieveItems()&lt;/li&gt;        &lt;li&gt;Bool CanDelete&lt;/li&gt;        &lt;li&gt;String ViewFormURL&lt;/li&gt;        &lt;li&gt;String CreateFormURL&lt;/li&gt;        &lt;li&gt;Delete()&lt;/li&gt;        &lt;li&gt;String UpdateFormURL &lt;/li&gt;     &lt;/ul&gt;   &lt;/ol&gt; &lt;/ul&gt;  &lt;p&gt;5. Here, the most important method is &lt;b&gt;RetrieveItems&lt;/b&gt;. This method should return a list of &lt;b&gt;calendarItems&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;6. In the &lt;b&gt;Initialize()&lt;/b&gt; method, you can perform various tasks specific to the data source, like setting some data source properties—for example, the OWA URL for an Exchange data source, or the SQL Server address for a SQL Server data source.&lt;/p&gt;  &lt;p&gt;7. &lt;b&gt;CanDelete&lt;/b&gt; represents whether the item can be deleted in the current context or not.&lt;/p&gt;  &lt;p&gt;8. &lt;b&gt;ViewFormUrl&lt;/b&gt;, &lt;b&gt;CreateFormURL&lt;/b&gt;, and &lt;b&gt;EditFormURL&lt;/b&gt; will be the URLs for different forms that will be used for &lt;a&gt;&lt;font color="#000000"&gt;create, read, and update&lt;/font&gt;&lt;/a&gt; operations. You can create your custom forms also. These forms are invoked with two parameters—ID (item ID) and source (URL from where we are invoking the operation).    &lt;br /&gt;For reference, see the &lt;a&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88/4331.Custom-Data-Source.zip"&gt;Custom Data Source project&lt;/a&gt;. This project shows how to create a SQL Server data source accessor.&lt;/p&gt;  &lt;h2&gt;SQL table&lt;/h2&gt;  &lt;p&gt;For this project, the following table schema is used to store the time entries:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="51%"&gt;         &lt;p&gt;&lt;b&gt;Title&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="48%"&gt;         &lt;p&gt;&lt;b&gt;varchar(50)&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="51%"&gt;         &lt;p&gt;&lt;b&gt;Location&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="48%"&gt;         &lt;p&gt;varchar(50)&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="51%"&gt;         &lt;p&gt;&lt;b&gt;[Start Time]&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="48%"&gt;         &lt;p&gt;datetime&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="51%"&gt;         &lt;p&gt;&lt;b&gt;[End Time]&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="48%"&gt;         &lt;p&gt;datetime&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="51%"&gt;         &lt;p&gt;&lt;b&gt;ItemID&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="48%"&gt;         &lt;p&gt;int&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Table 1: Schema for the Time table&lt;/p&gt;  &lt;h2&gt;Code&lt;/h2&gt;  &lt;p&gt;Here is the &lt;b&gt;SQLDataAccessor&lt;/b&gt; code:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="background: white; color: blue;"&gt;using &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;System;
&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;using &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;System.Collections.Generic;
&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;using &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;System.IO;
&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;using &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;System.Linq;
&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;using &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;System.Text;
&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;using &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;System.Web;
&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;using &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;System.Xml;
&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;using &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;System.Data.Sql;
&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;using &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;System.Data.SqlClient;
&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;using &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;System.Runtime.Serialization;
&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;using &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;OBA.Server.Extensions;

&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;namespace &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;MS.Internal.Motif.Office.DataSource
{
    &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;public class &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;SQLDataSource : ICalendarAccessor
    {
        &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// This is the method that will pick the time entries from SQL and 
        //return them as a list of calendar items.

        &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;public &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;IEnumerable&amp;lt;ICalendarItem&amp;gt; RetrieveItems(
            DateTime startTime, 
            DateTime endTime)
        {
            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;string &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;connectionString = @&amp;quot;Data Source=&amp;lt;data-source&amp;gt;;&amp;quot; + 
                @&amp;quot;Initial Catalog=master;user id=&amp;lt;user&amp;gt;;password=&amp;lt;password&amp;gt;&amp;quot;;
            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;var &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;list = &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;new &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;List&amp;lt;ICalendarItem&amp;gt;();

            &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// This is the data structure that we will be returning.
            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;string &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;query = 
                @&amp;quot;SELECT * from Time where (Time.[Start Time] &amp;gt;= '&amp;quot; 
                + startTime + @&amp;quot;' AND Time.[Start Time] &amp;lt;='&amp;quot; + endTime + 
                @&amp;quot;') OR (Time.[End Time] &amp;gt;= '&amp;quot; + startTime + 
                @&amp;quot;' AND Time.[End Time] &amp;lt;='&amp;quot; + endTime + @&amp;quot;')&amp;quot;;

            SqlConnection connection = &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;new &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;SqlConnection();
            connection.ConnectionString = connectionString;
            connection.Open();

            &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// Construct a new SqlCommand object 
            // (links the connection with the query).
            &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;SqlCommand command = &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;new &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;SqlCommand(query, connection);
            &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// Execute the query and get a data reader.
            &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;SqlDataReader data = command.ExecuteReader();

            &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// Check if no results come back.
            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;if &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;(data.HasRows == &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;false&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;)
            {
                data.Close();
                connection.Close();
                &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;return &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;list;
            }

            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;while &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;(data.Read()) &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;//the .Read method automatically moves
            // The data cursor to the next 'row'.
            &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;{
                &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;var &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;item = &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;new &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;CalendarItem();
                item.Title = HttpUtility.HtmlDecode(data.GetString(0));
                item.Location = HttpUtility.HtmlDecode(data.GetString(1));
                item.StartDate = data.GetDateTime(2);
                item.EndDate = data.GetDateTime(3);
                item.ItemID = data.GetInt32(4).ToString();
                list.Add(item);
            }

            &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// Close the data reader.
            &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;data.Close();

            &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// Close the connection.
            &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;connection.Close();

            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;return &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;list;
        }

        &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// Method to implement delete functionality.
        &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;public bool &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;Delete(&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;string &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;itemId, &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;out string &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;failureMessage)
        {
            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;int &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;id;
            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;if &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;(CanDelete)
            {
                &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;if &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;(Int32.TryParse(itemId, &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;out &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;id))
                {
                    &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;try
                    &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;{
                        failureMessage = @&amp;quot;&amp;quot;;
                        &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;string &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;connectionString = @&amp;quot;&amp;lt;connection string&amp;gt;&amp;quot;;
                        &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;string &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;query = 
                            @&amp;quot;DELETE from Time WHERE Time.ItemID=&amp;quot; + id;
                        SqlConnection connection = &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;new &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;SqlConnection();
                        connection.ConnectionString = connectionString;
                        connection.Open();

                        &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// Construct a new SqlCommand object 
                        // (links the connection with the query).
                        &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;SqlCommand command = &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;new &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;SqlCommand(
                                                query, 
                                                connection
                                                );

                        &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;if &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;(command.ExecuteNonQuery() != 1)
                        {
                            failureMessage = 
                                @&amp;quot;Fatal Error while deleting the item&amp;quot;;
                            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;throw new &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;Exception(&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;&amp;quot;Could not delete the item&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;);
                        }
                        &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;return true&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;;
                    }

                    &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;catch &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;(Exception ex)
                    {
                        failureMessage = ex.Message;
                        &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;return false&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;;
                    }
                }
            }

            failureMessage = @&amp;quot;Item can't be deleted&amp;quot;;
            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;return false&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;;
        }

        &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// Represents whether or not delete is allowed 
        // in the current context.
        &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;public bool &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;CanDelete
        {
            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;get &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;{ &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;return true&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;; }
        }

        &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// URL of Edit Form. The property returns the 
        // relative URL to the edit page.
        &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;public string &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;EditFormUrl
        {
            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;get &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;{ &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;return &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;@&amp;quot;/_layouts/SQLEditForm.aspx&amp;quot;; }
        }

        &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;public string &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;CreateFormUrl
        {
            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;get &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;{ &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;return &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;@&amp;quot;/_layouts/SQLCreateForm.aspx&amp;quot;; }
        }

        &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;public string &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;ViewFormUrl
        {
            &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;get &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;{ &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;return &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;@&amp;quot;/_layouts/SQLViewForm.aspx&amp;quot;; }
        }

        &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// This method can be used to set the additional calendar 
        // data source properties--for example, user credentials
        // to access the SQL data source.
        &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;public void &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;Initialize(IEnumerable&amp;lt;CalendarProperty&amp;gt; l)
        {
            &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;// Nothing to do.
        &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;}
    }
}
&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;9. After building the project, deploy the solution on Web App. Or, you can manually add the DLL into the GAC on the server and add the layouts pages in the Layout folder.
  &lt;br /&gt;For the demo project, you can just add the built WSPs into the Solutions Gallery and then deploy the solution globally.&lt;/p&gt;

&lt;h1&gt;Add the data source&lt;b&gt; &lt;/b&gt;&lt;/h1&gt;

&lt;p&gt;The next step is to add this data source into the Aggregate Calendar: &lt;/p&gt;

&lt;p&gt;1. Open the Aggregate Calendar page, and click &lt;b&gt;Edit Web Part&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;2. In the editor, choose to add a new custom data source.&lt;/p&gt;

&lt;p&gt;3. Complete all the required fields. For the configuration XML, enter the following XML code:
  &lt;br /&gt;

  &lt;pre class="code"&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;xml &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;version&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;1.0&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;encoding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;utf-8&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;?&amp;gt;
&amp;lt;!-- &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;Please note that all the fields are mandatory here. 
     For a few fields, you might leave the value as blank,
     but the node must be present  &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;--&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;CalendarDataSource 
    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;xmlns:i&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;xmlns&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://schemas/oba/2010/extensions&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;!-- &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;Here namespace name needs to be same as above. &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;--&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;AssemblyName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;MS.Internal.Motif.Office.DataSource, 
    Version=1.0.0.0, 
    Culture=neutral, 
    PublicKeyToken=38ed9c5bc913d77a
&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;AssemblyName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;!-- &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;Name of the assembly file that we created for the data source. 
     Assembly name should be fully qualified name. &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;--&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;CalendarProperties&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;CalendarProperties&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;!-- &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;You can have additional calendar properties here, 
     which you can use in the Initialize() method 
     of the data source accessor &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;--&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;Color&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;2&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;Color&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;!-- &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;Color for the data source items. &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;--&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;DataSourceType&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;Custom&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;DataSourceType&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;!-- &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;Please keep the value the same as above (case-sensitive) &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;--&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;Description&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;custom calendar&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;Description&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;Id&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;94b8-4031-8e17-65933ce6ffbd&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;Id&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;ShowDefault&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;true&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;ShowDefault&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;Title&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;SQL DataSource&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;Title&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;TypeName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;MS.Internal.Motif.Office.DataSource.SQLDataSource&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;TypeName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;!-- &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;Typename is the className of the data source which contains the 
     RetreiveItems and other methods. 
     Name is in format &amp;lt;assembly name&amp;gt;.&amp;lt;class name&amp;gt; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;--&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;Url&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;http://www.microsoft.com&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;Url&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;!-- &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;URL to which user will navigate when clicking the data source name. &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;--&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;CalendarDataSource&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/p&gt;

&lt;p&gt;4. After providing these values, save the configuration.
  &lt;br /&gt;Now if all goes well, you should be able to see the items in the &lt;a&gt;&lt;font color="#000000"&gt;mash-up view,&lt;/font&gt;&lt;/a&gt; and you should be able to perform create, read, update, and delete (CRUD) operations on these items.&lt;/p&gt;

&lt;h1&gt;Troubleshooting&lt;/h1&gt;

&lt;p&gt;If you get an error message, you can try these troubleshooting steps:&lt;/p&gt;

&lt;p&gt;1. If, while adding the data source, you get an error message stating that it could not access the DataSourceAccessor from the assembly '……', make sure that the fully qualified name of the assembly in the GAC matches the assembly specified in the XML schema.&lt;/p&gt;

&lt;p&gt;2. If, while adding the data source, you get an error message that states it could not recognize 'Color', expected 'ID', or some similar message, make sure that the XML schema has the same sequence of the nodes.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10395290" width="1" height="1"&gt;</description></item><item><title>Customize the Duet Workflow Task form in InfoPath 2013</title><link>http://blogs.msdn.com/b/sharepointdev/archive/2013/01/10/customize-the-duet-workflow-task-form-in-infopath-2013.aspx</link><pubDate>Thu, 10 Jan 2013 09:21:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10383689</guid><dc:creator>GauravArora_blogger</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/rsscomments.aspx?WeblogPostID=10383689</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/commentapi.aspx?WeblogPostID=10383689</wfw:comment><comments>http://blogs.msdn.com/b/sharepointdev/archive/2013/01/10/customize-the-duet-workflow-task-form-in-infopath-2013.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;Summary: &lt;/b&gt;Learn how to customize the Duet Workflow Task form using InfoPath Designer.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Applies To:&lt;/b&gt; SharePoint Server 2013, Duet Enterprise 2.0, SharePoint Designer 2013, InfoPath Designer 2013, InfoPath Filler 2013&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Published:&lt;/b&gt; January 2013&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Contents&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="#intro"&gt;Introduction&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="#display"&gt;Displaying the SAP business properties&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="#addcontrols"&gt;Adding and deleting controls on the form&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="#addimages"&gt;Adding heading images to the form and applying a theme&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;a name="intro"&gt;   &lt;h1&gt;Introduction&lt;/h1&gt; &lt;/a&gt;  &lt;p&gt;After a task site is published through SharePoint Designer, the task form &lt;b&gt;ApprovalProcess.xsn&lt;/b&gt; is generated. The form has a default layout. But we may also want to display the SAP business properties, add some more controls relevant to the use of the form, or delete some irrelevant controls. We may also want to give a nice look and feel to the form. We can do these customizations easily with the help of InfoPath 2013. &lt;/p&gt;  &lt;h2&gt;Scenario&lt;/h2&gt;  &lt;p&gt;We have published a task site of the task type &lt;b&gt;TestTask&lt;/b&gt; using SharePoint Designer 2013. The task form has the default layout shown below. We want to customize the form to include a SAP business property, add a control, remove a control, add a heading image, and apply a theme.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2620.image_5F00_6E5C5276.png"&gt;&lt;img title="Figure 1. TestTask task form with default layout" style="display: inline; background-image: none;" border="0" alt="Figure 1. TestTask task form with default layout" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/0576.image_5F00_thumb_5F00_22FCAEB2.png" width="244" height="224" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 1. TestTask task form with default layout&lt;/p&gt; &lt;a name="display"&gt;   &lt;h1&gt;Displaying the SAP business properties&lt;/h1&gt; &lt;/a&gt;  &lt;p&gt;&lt;b&gt;Prerequisite:&lt;/b&gt; We can display the SAP business properties in the workflow task form provided that we have included the properties in the &lt;b&gt;Extended Business Properties &lt;/b&gt;text box while creating the task site.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Steps: &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;1. In SharePoint Designer, click &lt;b&gt;ApprovalProcess.xsn&lt;/b&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-41-88-metablogapi/5126.clip_5F00_image008_5F00_7C951387.jpg"&gt;&lt;img title="Figure 2. ApprovalProcess.xsn in SharePoint Designer" style="display: inline; background-image: none;" border="0" alt="Figure 2. ApprovalProcess.xsn in SharePoint Designer" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2063.clip_5F00_image008_5F00_thumb_5F00_5C7A06CA.jpg" width="244" height="165" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 2. ApprovalProcess.xsn in SharePoint Designer&lt;/p&gt;  &lt;p&gt;InfoPath Designer opens with an auto-generated layout of the form. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2577.clip_5F00_image010_5F00_51507C80.jpg"&gt;&lt;img title="Figure 3. InfoPath Designer with auto-generated layout of the TestTask form" style="display: inline; background-image: none;" border="0" alt="Figure 3. InfoPath Designer with auto-generated layout of the TestTask form" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/7357.clip_5F00_image010_5F00_thumb_5F00_03481D0B.jpg" width="244" height="119" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 3. InfoPath Designer with auto-generated layout of the TestTask form&lt;/p&gt;  &lt;p&gt;2. Insert a new row, wherever you want, for the business property &lt;b&gt;LeaveDaysUsedTillToday&lt;/b&gt; that you want to display in the form. &lt;/p&gt;  &lt;p&gt;a. In the first column, enter the field name as you want to see it displayed in the form, for example, &lt;b&gt;Leaves Used Till Today&lt;/b&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-41-88-metablogapi/1581.clip_5F00_image012_5F00_781E92C0.png"&gt;&lt;img title="Figure 4. Entering field name in the first column" style="display: inline; background-image: none;" border="0" alt="Figure 4. Entering field name in the first column" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/6371.clip_5F00_image012_5F00_thumb_5F00_2A16334B.png" width="244" height="127" /&gt;&lt;/a&gt;     &lt;br /&gt;Figure 4. Entering field name in the first column&lt;/p&gt;  &lt;p&gt;b. In the second column, we need to get the value for the business property &lt;b&gt;LeavesUsedTillToday &lt;/b&gt;from the Workflow Business Document Library. Thus, we need to create a secondary data connection with the Workflow Business Document Library.&lt;/p&gt;  &lt;p&gt;3. Create a secondary data connection with the Workflow Business Document Library as follows:&amp;#160; &lt;/p&gt;  &lt;p&gt;a. Under &lt;b&gt;Actions&lt;/b&gt;, click &lt;b&gt;Manage Data Connections&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4237.clip_5F00_image014_5F00_70FF5648.png"&gt;&lt;img title="Figure 5. Clicking Manage Data Connections in InfoPath" style="display: inline; background-image: none;" border="0" alt="Figure 5. Clicking Manage Data Connections in InfoPath" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/3632.clip_5F00_image014_5F00_thumb_5F00_50E4498B.png" width="244" height="136" /&gt;&lt;/a&gt;&lt;/b&gt;     &lt;br /&gt;Figure 5. Clicking Manage Data Connections in InfoPath&lt;/p&gt;  &lt;p&gt;The&lt;b&gt; Data Connections &lt;/b&gt;dialog box appears. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/6864.clip_5F00_image016_5F00_17CD6C89.jpg"&gt;&lt;img title="Figure 6. Data Connections dialog box" style="display: inline; background-image: none;" border="0" alt="Figure 6. Data Connections dialog box" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2654.clip_5F00_image016_5F00_thumb_5F00_49C50D13.jpg" width="244" height="223" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 6. Data Connections dialog box&lt;/p&gt;  &lt;p&gt;b. In the &lt;b&gt;Data Connections&lt;/b&gt; dialog box, select &lt;b&gt;Context&lt;/b&gt;&amp;#160; from the list of Data Connections for the form template, and click &lt;b&gt;Add&lt;/b&gt;. The &lt;b&gt;Data Connection Wizard &lt;/b&gt;starts.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2158.clip_5F00_image018_5F00_3E9B82C9.jpg"&gt;&lt;img title="Figure 7. Data Connection Wizard" style="display: inline; background-image: none;" border="0" alt="Figure 7. Data Connection Wizard" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/7848.clip_5F00_image018_5F00_thumb_5F00_70932353.jpg" width="244" height="167" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; Figure 7. Data Connection Wizard&lt;/p&gt;  &lt;p&gt;c. Click &lt;b&gt;Next &lt;/b&gt;without changing any settings. The wizard now asks for the source of data. Select &lt;b&gt;SharePoint library or list&lt;/b&gt; as the source of data.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4705.clip_5F00_image020_5F00_377C4651.jpg"&gt;&lt;img title="Figure 8. Selecting SharePoint library or list in the Data Connection Wizard" style="display: inline; background-image: none;" border="0" alt="Figure 8. Selecting SharePoint library or list in the Data Connection Wizard" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/0676.clip_5F00_image020_5F00_thumb_5F00_17613994.jpg" width="244" height="167" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 8. Selecting SharePoint library or list in the Data Connection Wizard&lt;/p&gt;  &lt;p&gt;d. Click &lt;b&gt;Next&lt;/b&gt;. The wizard now prompts you to enter the location of the SharePoint site.&lt;/p&gt;  &lt;p&gt;e. Enter the URL of the task site, and click &lt;b&gt;Next&lt;/b&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-41-88-metablogapi/7532.clip_5F00_image022_5F00_0C37AF4A.jpg"&gt;&lt;img title="Figure 9. Entering task site location in the Data Connection Wizard" style="display: inline; background-image: none;" border="0" alt="Figure 9. Entering task site location in the Data Connection Wizard" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/3323.clip_5F00_image022_5F00_thumb_5F00_3E2F4FD4.jpg" width="244" height="166" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 9. Entering task site location in the Data Connection Wizard&lt;/p&gt;  &lt;p&gt;f. Select the &lt;b&gt;Workflow Business Data Document Library &lt;/b&gt;for the data connection, and click &lt;b&gt;Next&lt;/b&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-41-88-metablogapi/7455.clip_5F00_image024_5F00_051872D2.jpg"&gt;&lt;img title="Figure 10. Selecting Workflow Business Data Document Library for the data connection" style="display: inline; background-image: none;" border="0" alt="Figure 10. Selecting Workflow Business Data Document Library for the data connection" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/1007.clip_5F00_image024_5F00_thumb_5F00_79EEE887.jpg" width="244" height="165" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; Figure 10. Selecting Workflow Business Data Document Library for the data connection&lt;/p&gt;  &lt;p&gt;g. Select the &lt;b&gt;Title&lt;/b&gt; and &lt;b&gt;LeavesUsedTillToday&lt;/b&gt; fields, and click&lt;b&gt; Next&lt;/b&gt;. The &lt;b&gt;Title &lt;/b&gt;field will help us filter the data corresponding to a task from the Workflow Business Data Document Library. The &lt;b&gt;Title &lt;/b&gt;field is the concatenation of the &lt;b&gt;Related Content &lt;/b&gt;field in the main data connection and the string &amp;quot;&lt;b&gt;.xml&lt;/b&gt;&amp;quot;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/6787.clip_5F00_image026_5F00_2BE68912.jpg"&gt;&lt;img title="Figure 11. Selecting the Title field and LeaveDaysUsedTillToday field" style="display: inline; background-image: none;" border="0" alt="Figure 11. Selecting the Title field and LeaveDaysUsedTillToday field" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2577.clip_5F00_image026_5F00_thumb_5F00_72CFAC0F.jpg" width="244" height="166" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 11. Selecting the Title field and LeaveDaysUsedTillToday field&lt;/p&gt;  &lt;p&gt;h. Click &lt;b&gt;Next&lt;/b&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-41-88-metablogapi/1072.clip_5F00_image028_5F00_67A621C5.jpg"&gt;&lt;img title="Figure 12. Data Connection Wizard" style="display: inline; background-image: none;" border="0" alt="Figure 12. Data Connection Wizard" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4214.clip_5F00_image028_5F00_thumb_5F00_199DC250.jpg" width="244" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 12. Data Connection Wizard&lt;/p&gt;  &lt;p&gt;i. Click &lt;b&gt;Finish&lt;/b&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-41-88-metablogapi/3618.clip_5F00_image030_5F00_0E743806.jpg"&gt;&lt;img title="Figure 13. Finishing the Data Connection Wizard" style="display: inline; background-image: none;" border="0" alt="Figure 13. Finishing the Data Connection Wizard" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/1565.clip_5F00_image030_5F00_thumb_5F00_406BD890.jpg" width="244" height="166" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 13. Finishing the Data Connection Wizard&lt;/p&gt;  &lt;p&gt;j. Close&lt;b&gt; &lt;/b&gt;the &lt;b&gt;Data Connections&lt;/b&gt; dialog box that now has the data connection to the Workflow Business Data Document Library.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/6355.clip_5F00_image032_5F00_35424E46.jpg"&gt;&lt;img title="Figure 14. Data Connections dialog box with the new data connection" style="display: inline; background-image: none;" border="0" alt="Figure 14. Data Connections dialog box with the new data connection" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2146.clip_5F00_image032_5F00_thumb_5F00_6739EED0.jpg" width="244" height="224" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 14. Data Connections dialog box with the new data connection&lt;/p&gt;  &lt;p&gt;4. Click in the second column of the new row that we inserted in step 3. On the &lt;b&gt;Home&lt;/b&gt; tab in the ribbon, click &lt;b&gt;Calculated Value&lt;/b&gt; (&lt;i&gt;fx&lt;/i&gt;) button in the &lt;b&gt;Controls&lt;/b&gt; pane.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/0083.clip_5F00_image034_5F00_2E2311CE.jpg"&gt;&lt;img title="Figure 15. Choosing Calculated Value in InfoPath" style="display: inline; background-image: none;" border="0" alt="Figure 15. Choosing Calculated Value in InfoPath" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/3225.clip_5F00_image034_5F00_thumb_5F00_22F98784.jpg" width="244" height="136" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 15. Choosing Calculated Value in InfoPath&lt;/p&gt;  &lt;p&gt; The &lt;b&gt;Insert Calculated Value&lt;/b&gt; dialog box appears.&lt;/p&gt;  &lt;p&gt; 5. Click the &lt;b&gt;&lt;i&gt;fx&lt;/i&gt;&lt;/b&gt; button next to the &lt;b&gt;XPath&lt;/b&gt; text box. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/1663.clip_5F00_image035_5F00_54F1280E.png"&gt;&lt;img title="Figure 16. Insert Calculated Value dialog box" style="display: inline; background-image: none;" border="0" alt="Figure 16. Insert Calculated Value dialog box" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/1172.clip_5F00_image035_5F00_thumb_5F00_1BDA4B0C.png" width="244" height="77" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 16. Insert Calculated Value dialog box&lt;/p&gt;  &lt;p&gt;The &lt;b&gt;Insert Formula &lt;/b&gt;dialog box appears as shown in the following figure.&lt;/p&gt;  &lt;p&gt;6. Click &lt;b&gt;Insert Field or Group&lt;/b&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-41-88-metablogapi/0676.clip_5F00_image037_5F00_62C36E09.jpg"&gt;&lt;img title="Figure 17. Insert Field or Group button" style="display: inline; background-image: none;" border="0" alt="Figure 17. Insert Field or Group button" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/5466.clip_5F00_image037_5F00_thumb_5F00_14BB0E94.jpg" width="244" height="105" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 17. Insert Field or Group button&lt;/p&gt;  &lt;p&gt;The &lt;b&gt;Select a Field or Group &lt;/b&gt;dialog box appears, as shown in the following figure.&lt;/p&gt;  &lt;p&gt;7. Click &lt;b&gt;Show advanced view&lt;/b&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-41-88-metablogapi/1256.clip_5F00_image039_5F00_7095B404.jpg"&gt;&lt;img title="Figure 18. Show advanced view link" style="display: inline; background-image: none;" border="0" alt="Figure 18. Show advanced view link" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/5488.clip_5F00_image039_5F00_thumb_5F00_228D548F.jpg" width="214" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; Figure 18. Show advanced view link&lt;/p&gt;  &lt;p&gt;Now, we have the option to select the data connection also.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/6765.clip_5F00_image040_5F00_6976778C.png"&gt;&lt;img title="Figure 19. Select a Field or Group dialog box" style="display: inline; background-image: none;" border="0" alt="Figure 19. Select a Field or Group dialog box" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2555.clip_5F00_image040_5F00_thumb_5F00_305F9A8A.png" width="215" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 19. Select a Field or Group dialog box&lt;/p&gt;  &lt;p&gt;8. Select the secondary data connection to the Workflow Business Document Library from the drop-down 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-41-88-metablogapi/1050.clip_5F00_image042_5F00_62573B14.jpg"&gt;&lt;img title="Figure 20. Choosing a secondary data connection" style="display: inline; background-image: none;" border="0" alt="Figure 20. Choosing a secondary data connection" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/5282.clip_5F00_image042_5F00_thumb_5F00_572DB0CA.jpg" width="214" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 20. Choosing a secondary data connection&lt;/p&gt;  &lt;p&gt;9. Expand the &lt;b&gt;dataFields &lt;/b&gt;tree structure until you see &lt;b&gt;LeaveDaysUsedTillToday&lt;/b&gt;. Select &lt;b&gt;LeaveDaysUsedTillToday&lt;/b&gt;. Since we want to get only the business property for the corresponding task, we need to filter the data received from the data connection. Click &lt;b&gt;Filter Data&lt;/b&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-41-88-metablogapi/4606.clip_5F00_image044_5F00_09255155.jpg"&gt;&lt;img title="Figure 21. Filter Data button" style="display: inline; background-image: none;" border="0" alt="Figure 21. Filter Data button" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/7838.clip_5F00_image044_5F00_thumb_5F00_500E7452.jpg" width="214" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 21. Filter Data button&lt;/p&gt;  &lt;p&gt;10. The &lt;b&gt;Filter Data&lt;/b&gt; dialog box appears. Click &lt;b&gt;Add&lt;/b&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-41-88-metablogapi/7433.clip_5F00_image046_5F00_2FF36795.jpg"&gt;&lt;img title="Figure 22. Add button in the Filter Data dialog box" style="display: inline; background-image: none;" border="0" alt="Figure 22. Add button in the Filter Data dialog box" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/1565.clip_5F00_image046_5F00_thumb_5F00_24C9DD4B.jpg" width="244" height="131" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 22. Add button in the Filter Data dialog box&lt;/p&gt;  &lt;p&gt;The &lt;b&gt;Specify Filter Conditions&lt;/b&gt; dialog box appears. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/6355.clip_5F00_image048_5F00_6BB30048.jpg"&gt;&lt;img title="Figure 23. Specify Filter Conditions dialog box " style="display: inline; background-image: none;" border="0" alt="Figure 23. Specify Filter Conditions dialog box " src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2146.clip_5F00_image048_5F00_thumb_5F00_329C2346.jpg" width="244" height="57" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 23. Specify Filter Conditions dialog box &lt;/p&gt;  &lt;p&gt;11. Specify the filter conditions as follows:&lt;/p&gt;  &lt;p&gt;a. In the first drop-down list, choose &lt;b&gt;Select a field or group&lt;/b&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-41-88-metablogapi/0083.clip_5F00_image049_5F00_6493C3D0.png"&gt;&lt;img title="Figure 24. Choosing Select a field or group " style="display: inline; background-image: none;" border="0" alt="Figure 24. Choosing Select a field or group " src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/5873.clip_5F00_image049_5F00_thumb_5F00_4478B713.png" width="244" height="60" /&gt;&lt;/a&gt;     &lt;br /&gt;Figure 24. Choosing Select a field or group &lt;/p&gt;  &lt;p&gt;b. Choose &lt;b&gt;Workflow Business Data Document Library &lt;/b&gt;as the data source. &lt;/p&gt;  &lt;p&gt;c. Expand the &lt;b&gt;dataFields &lt;/b&gt;tree structure until you see &lt;b&gt;Title&lt;/b&gt;. Select &lt;b&gt;Title&lt;/b&gt;, and then click &lt;b&gt;OK&lt;/b&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-41-88-metablogapi/3730.clip_5F00_image051_5F00_0B61DA11.jpg"&gt;&lt;img title="Figure 25. Title in the Select a Field or Group dialog box" style="display: inline; background-image: none;" border="0" alt="Figure 25. Title in the Select a Field or Group dialog box" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4300.clip_5F00_image051_5F00_thumb_5F00_1934200C.jpg" width="214" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 25. Title in the Select a Field or Group dialog box&lt;/p&gt;  &lt;p&gt;d. In the second drop-down list in the &lt;b&gt;Specify Filter Conditions&lt;/b&gt; dialog box, select &lt;b&gt;is equal to&lt;/b&gt;. &lt;/p&gt;  &lt;p&gt;e. In the third drop-down list in the &lt;b&gt;Specify Filter Conditions&lt;/b&gt; dialog box, select &lt;b&gt;Use a formula&lt;/b&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-41-88-metablogapi/1256.clip_5F00_image053_5F00_7919134E.jpg"&gt;&lt;img title="Figure 26. Selecting Use a formula in the list" style="display: inline; background-image: none;" border="0" alt="Figure 26. Selecting Use a formula in the list" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/1651.clip_5F00_image053_5F00_thumb_5F00_06EB594A.jpg" width="244" height="69" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 26. Selecting Use a formula in the list&lt;/p&gt;  &lt;p&gt;f. The &lt;b&gt;Insert Formula&lt;/b&gt; dialog box opens. Click &lt;b&gt;Insert Function&lt;/b&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-41-88-metablogapi/3113.clip_5F00_image055_5F00_38E2F9D4.png"&gt;&lt;img title="Figure 27. Insert Function button" style="display: inline; background-image: none;" border="0" alt="Figure 27. Insert Function button" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/1050.clip_5F00_image055_5F00_thumb_5F00_2DB96F8A.png" width="244" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 27. Insert Function button&lt;/p&gt;  &lt;p&gt;The &lt;b&gt;Insert Function&lt;/b&gt; dialog box opens.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/8816.clip_5F00_image057_5F00_0D9E62CD.jpg"&gt;&lt;img title="Figure 28. Insert Function dialog box" style="display: inline; background-image: none;" border="0" alt="Figure 28. Insert Function dialog box" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/6763.clip_5F00_image057_5F00_thumb_5F00_6D83560F.jpg" width="244" height="151" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 28. Insert Function dialog box&lt;/p&gt;  &lt;p&gt;g. Select &lt;b&gt;Text&lt;/b&gt; in the &lt;b&gt;Categories&lt;/b&gt; list, and then select &lt;b&gt;concat&lt;/b&gt; in the &lt;b&gt;Functions &lt;/b&gt;list. Click &lt;b&gt;OK&lt;/b&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-41-88-metablogapi/5367.clip_5F00_image059_5F00_4D684952.jpg"&gt;&lt;img title="Figure 29. Choosing category and function" style="display: inline; background-image: none;" border="0" alt="Figure 29. Choosing category and function" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/3223.clip_5F00_image059_5F00_thumb_5F00_423EBF08.jpg" width="244" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 29. Choosing category and function&lt;/p&gt;  &lt;p&gt;The formula corresponding to the selection appears in the &lt;b&gt;Insert Formula &lt;/b&gt;dialog box.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4380.clip_5F00_image061_5F00_74365F92.jpg"&gt;&lt;img title="Figure 30. Concat Formula prototype (skeleton) in the Insert Formula dialog box" style="display: inline; background-image: none;" border="0" alt="Figure 30. Concat Formula prototype (skeleton) in the Insert Formula dialog box" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/0160.clip_5F00_image061_5F00_thumb_5F00_3B1F8290.jpg" width="244" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 30. Concat Formula prototype (skeleton) in the Insert Formula dialog box&lt;/p&gt;  &lt;p&gt;h. Double-click the first argument in the &lt;b&gt;concat&lt;/b&gt; function. The &lt;b&gt;Select a Field or Group &lt;/b&gt;dialog box opens. Under the &lt;b&gt;Main &lt;/b&gt;data connection, expand the &lt;b&gt;dataFields &lt;/b&gt;tree structure till you see &lt;b&gt;Related Content&lt;/b&gt;. Select the subfield &lt;b&gt;:Description&lt;/b&gt; under &lt;b&gt;Related Content&lt;/b&gt;. Click OK.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4212.clip_5F00_image063_5F00_0208A58E.jpg"&gt;&lt;img title="Figure 31. :Description subfield under Related Content" style="display: inline; background-image: none;" border="0" alt="Figure 31. :Description subfield under Related Content" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/3716.clip_5F00_image063_5F00_thumb_5F00_34004618.jpg" width="213" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 31. :Description subfield under Related Content&lt;/p&gt;  &lt;p&gt;i. Write the string &amp;quot;&lt;b&gt;.xml&lt;/b&gt;&amp;quot; as the second argument in the &lt;b&gt;concat&lt;/b&gt; function. Delete the comma following the second argument and the third argument.&lt;/p&gt;  &lt;p&gt;The updated formula is as shown in the following figure. Click OK.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/8507.clip_5F00_image065_5F00_7AE96915.jpg"&gt;&lt;img title="Figure 32. Updated concat formula (with provided arguments) in Insert Formula dialog box" style="display: inline; background-image: none;" border="0" alt="Figure 32. Updated concat formula (with provided arguments) in Insert Formula dialog box" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/0167.clip_5F00_image065_5F00_thumb_5F00_6FBFDECB.jpg" width="244" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 32. Updated concat formula (with provided arguments) in Insert Formula dialog box&lt;/p&gt;  &lt;p&gt;j. Click&lt;b&gt; OK &lt;/b&gt;in the dialog boxes in the order: &lt;b&gt;Specify Filter Conditions, Filter Data, Select a Field or Group.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The final overall formula appears in the &lt;b&gt;Insert Formula &lt;/b&gt;dialog box. (This dialog box was opened in step 5 and is still open)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4300.clip_5F00_image067_5F00_4FA4D20E.jpg"&gt;&lt;img title="Figure 33. Final formula in the Insert Formula dialog box" style="display: inline; background-image: none;" border="0" alt="Figure 33. Final formula in the Insert Formula dialog box" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/3704.clip_5F00_image067_5F00_thumb_5F00_5D771809.jpg" width="244" height="105" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 33. Final formula in the Insert Formula dialog box&lt;/p&gt;  &lt;p&gt;12. Click &lt;b&gt;OK &lt;/b&gt;in the &lt;b&gt;Insert Formula &lt;/b&gt;dialog box (shown above) to return to the &lt;b&gt;Insert Calculated Value &lt;/b&gt;dialog box where the XPath corresponding to our selections has been updated.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/6036.clip_5F00_image069_5F00_618165DB.jpg"&gt;&lt;img title="Figure 34. Updated XPath in the Insert Calculated Value dialog box" style="display: inline; background-image: none;" border="0" alt="Figure 34. Updated XPath in the Insert Calculated Value dialog box" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2046.clip_5F00_image069_5F00_thumb_5F00_5657DB91.jpg" width="244" height="78" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 34. Updated XPath in the Insert Calculated Value dialog box&lt;/p&gt;  &lt;p&gt;Click &lt;b&gt;OK&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;13. Click the &lt;b&gt;File&lt;/b&gt; tab on the ribbon. Click &lt;b&gt;Quick Publish&lt;/b&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-41-88-metablogapi/7827.clip_5F00_image071_5F00_1D40FE8F.jpg"&gt;&lt;img title="Figure 35. Publish your form" style="display: inline; background-image: none;" border="0" alt="Figure 35. Publish your form" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/7345.clip_5F00_image071_5F00_thumb_5F00_4F389F19.jpg" width="244" height="60" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 35. Publish your form&lt;/p&gt;  &lt;p&gt;14. The &lt;b&gt;Save As&lt;/b&gt; dialog box opens. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/0564.clip_5F00_image073_5F00_1621C217.jpg"&gt;&lt;img title="Figure 36. Saving the form template" style="display: inline; background-image: none;" border="0" alt="Figure 36. Saving the form template" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4606.clip_5F00_image073_5F00_thumb_5F00_7606B559.jpg" width="244" height="195" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 36. Saving the form template&lt;/p&gt;  &lt;p&gt;15. Click &lt;b&gt;Save&lt;/b&gt;. The &lt;b&gt;Microsoft InfoPath &lt;/b&gt;dialog box stating the successful publishing of the form template appears. Click &lt;b&gt;OK&lt;/b&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-41-88-metablogapi/0576.clip_5F00_image075_5F00_3CEFD857.jpg"&gt;&lt;img title="Figure 37. Form template published successfully" style="display: inline; background-image: none;" border="0" alt="Figure 37. Form template published successfully" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/5367.clip_5F00_image075_5F00_thumb_5F00_31C64E0D.jpg" width="244" height="83" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 37. Form template published successfully&lt;/p&gt;  &lt;p&gt;16. Open the task site and look up any of the tasks. The task appears as shown in the following figure. The SAP business property &lt;b&gt;LeavesUsedTillToday&lt;/b&gt; has the value 10 in this task.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/6433.image_5F00_54F44F3C.png"&gt;&lt;img title="Figure 38. Task on the task site with LeavesUsedTillToday business property" style="display: inline; background-image: none;" border="0" alt="Figure 38. Task on the task site with LeavesUsedTillToday business property" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/7103.image_5F00_thumb_5F00_34D9427F.png" width="244" height="234" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 38. Task on the task site with LeavesUsedTillToday business property&lt;/p&gt; &lt;a name="addcontrols"&gt;   &lt;h1&gt;Adding and deleting controls on a form&lt;/h1&gt; &lt;/a&gt;  &lt;p&gt;Suppose we want to add a control—for example, &lt;b&gt;ID&lt;/b&gt;—from the main data connection to the workflow task form, and delete the control &lt;b&gt;Consolidated Comments &lt;/b&gt;from the form.&lt;/p&gt;  &lt;p&gt;1. Insert a new row for the &lt;b&gt;ID&lt;/b&gt; field.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/5861.clip_5F00_image083_5F00_7EF64798.jpg"&gt;&lt;img title="Figure 39. Inserting a new row for the ID field" style="display: inline; background-image: none;" border="0" alt="Figure 39. Inserting a new row for the ID field" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4375.clip_5F00_image083_5F00_thumb_5F00_73CCBD4E.jpg" width="244" height="136" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 39. Inserting a new row for the ID field&lt;/p&gt;  &lt;p&gt;2.&amp;#160; Drag the &lt;b&gt;ID &lt;/b&gt;field from the &lt;b&gt;Fields task pane &lt;/b&gt;onto the canvas. The label for the control appears automatically in the left column when you drag the field into the right column of the table. However, this is true only if you highlight both columns when you release the mouse.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/3113.clip_5F00_image085_5F00_25C45DD9.jpg"&gt;&lt;img title="Figure 40. ID field in right column" style="display: inline; background-image: none;" border="0" alt="Figure 40. ID field in right column" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/3617.clip_5F00_image085_5F00_thumb_5F00_1A9AD38F.jpg" width="244" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 40. ID field in right column&lt;/p&gt;  &lt;p&gt;3. Delete the row containing the control for &lt;b&gt;Consolidated Comments&lt;/b&gt;.&lt;b&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/0564.clip_5F00_image087_5F00_4C927419.jpg"&gt;&lt;img title="Figure 41. Consolidated Comments row deleted" style="display: inline; background-image: none;" border="0" alt="Figure 41. Consolidated Comments row deleted" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4606.clip_5F00_image087_5F00_thumb_5F00_4168E9CF.jpg" width="244" height="129" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Figure 41. Consolidated Comments row deleted&lt;/p&gt;  &lt;p&gt;3. Click the &lt;b&gt;File&lt;/b&gt; tab on the ribbon. Click &lt;b&gt;Quick Publish&lt;/b&gt;. The &lt;b&gt;Microsoft InfoPath &lt;/b&gt;dialog box stating the successful publishing of the form template appears.&lt;/p&gt;  &lt;p&gt;4. Click &lt;b&gt;OK&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;5. Open the task site and look up any of the tasks. The task appears as shown in the following figure. The task has the ID field with value 1 and no Consolidated Comments control.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/8664.image_5F00_7098DB32.png"&gt;&lt;img title="Figure 42. Task on the task site with ID control and without Consolidated Comments control" style="display: inline; background-image: none;" border="0" alt="Figure 42. Task on the task site with ID control and without Consolidated Comments control" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/3806.image_5F00_thumb_5F00_3B8C4C02.png" width="244" height="217" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;Figure 42. Task on the task site with ID control and without Consolidated Comments control&lt;/p&gt; &lt;a name="addimages"&gt;   &lt;h1&gt;Adding heading images to the form and applying a theme&lt;/h1&gt; &lt;/a&gt;  &lt;p&gt;1. Place your cursor in the title area of the page layout. Add a title—for example, &lt;b&gt;MyTask&lt;/b&gt;—in the required format and font. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4452.clip_5F00_image093_5F00_55820658.jpg"&gt;&lt;img title="Figure 43. Title area of the page layout" style="display: inline; background-image: none;" border="0" alt="Figure 43. Title area of the page layout" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/5861.clip_5F00_image093_5F00_thumb_5F00_3566F99B.jpg" width="244" height="134" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 43. Title area of the page layout&lt;/p&gt;  &lt;p&gt;2. Add the heading image to the form by inserting a picture from the &lt;b&gt;Insert &lt;/b&gt;tab on the ribbon.&lt;/p&gt;  &lt;p&gt;3. On the &lt;b&gt;Page Design&lt;/b&gt; tab, apply the &lt;b&gt;Professional – Standard&lt;/b&gt; theme. The easiest way to select the theme is to expand the &lt;b&gt;Themes&lt;/b&gt; gallery by clicking the arrow at the lower-right corner. &lt;b&gt;Professional – Standard&lt;/b&gt; is the first theme in the &lt;b&gt;Professional&lt;/b&gt; section.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4375.clip_5F00_image095_5F00_7C501C98.jpg"&gt;&lt;img title="Figure 44. Page Design tab" style="display: inline; background-image: none;" border="0" alt="Figure 44. Page Design tab" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/3113.clip_5F00_image095_5F00_thumb_5F00_7126924E.jpg" width="244" height="88" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; Figure 44. Page Design tab&lt;/p&gt;  &lt;p&gt;The title, heading image, and page design should now resemble the following figure.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/3617.clip_5F00_image097_5F00_231E32D9.jpg"&gt;&lt;img title="Figure 45. New title, heading image, and page design" style="display: inline; background-image: none;" border="0" alt="Figure 45. New title, heading image, and page design" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/6740.clip_5F00_image097_5F00_thumb_5F00_17F4A88F.jpg" width="244" height="174" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 45. New title, heading image, and page design&lt;/p&gt;  &lt;p&gt;4. Click the &lt;b&gt;File&lt;/b&gt; tab on the ribbon. Click &lt;b&gt;Quick Publish&lt;/b&gt;. The &lt;b&gt;Microsoft InfoPath &lt;/b&gt;dialog box stating the successful publishing of the form template appears.&lt;/p&gt;  &lt;p&gt;5. Click &lt;b&gt;OK&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;6. Open the task site and look up any of the tasks. The task appears as shown in the following figure. The task has the desired heading image and theme.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/5736.image_5F00_581E0F26.png"&gt;&lt;img title="Figure 46. Task on the task site with desired heading image and theme" style="display: inline; background-image: none;" border="0" alt="Figure 46. Task on the task site with desired heading image and theme" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/0068.image_5F00_thumb_5F00_38030269.png" width="233" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 46. Task on the task site with desired heading image and theme&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10383689" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/Workflow/">Workflow</category><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/InfoPath/">InfoPath</category><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/Duet/">Duet</category></item><item><title>BCS OData Custom Authentication using Extension Provider</title><link>http://blogs.msdn.com/b/sharepointdev/archive/2012/11/30/bcs-odata-custom-authentication-using-extension-provider.aspx</link><pubDate>Fri, 30 Nov 2012 13:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10373346</guid><dc:creator>Venkatesh Narayanan</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/rsscomments.aspx?WeblogPostID=10373346</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/commentapi.aspx?WeblogPostID=10373346</wfw:comment><comments>http://blogs.msdn.com/b/sharepointdev/archive/2012/11/30/bcs-odata-custom-authentication-using-extension-provider.aspx#comments</comments><description>&lt;p&gt;Business Connectivity Services (BCS) in SharePoint 2013 supports connecting to OData-based LOB systems. BCS supports the following authentication modes for authenticating against the OData service:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PassThrough&lt;/li&gt;
&lt;li&gt;RevertToSelf&lt;/li&gt;
&lt;li&gt;Credentials&lt;/li&gt;
&lt;li&gt;Windows Credentials&lt;/li&gt;
&lt;li&gt;Digest Credentials&lt;/li&gt;
&lt;li&gt;Custom Authentication using OData Extension Provider&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this article, we cover in detail how to connect from SharePoint on-premises to any OData service with custom authentication using an OData extension provider.&lt;/p&gt;
&lt;p&gt;Some examples of custom authentication schemes that the OData service provider could support are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Authenticating using Windows Azure Access Control Service (ACS)&lt;/li&gt;
&lt;li&gt;Client certificate-based authentication&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To enable these custom authentication mechanisms, you need to implement an OData extension provider and configure the same in BCS. The OData extension provider is invoked by BCS for every call to the OData LOB Service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; BCS supports custom authentication using an OData extension provider only for apps hosted in on-premises SharePoint or for those apps that connect using hybrid (SharePoint Online to on-premisea-based LOB through hybrid). This restriction is because it is not possible to install custom assemblies in SharePoint Online.&lt;/p&gt;
&lt;h1&gt;Implementing an OData extension provider&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Create a new project in Visual Studio 2010. Select &lt;strong&gt;Class Library&lt;/strong&gt; as the project type: &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/4454.ODataExtensionFigure12_5F00_62EE2D4E.png"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="ODataExtensionFigure1[2]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2476.ODataExtensionFigure12_5F00_thumb_5F00_4BC2B2D0.png" alt="ODataExtensionFigure1[2]" width="522" height="274" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Change the file name and class name to &lt;strong&gt;ODataOAuthExtensionProvider&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Add a reference to the &lt;strong&gt;Microsoft.BusinessData.dll&lt;/strong&gt; assembly to the project. Add the namespace &lt;strong&gt;Microsoft.BusinessData.SystemSpecific.OData&lt;/strong&gt; to the class.&lt;/li&gt;
&lt;li&gt;The empty custom OData extension provider implementation should be as follows: &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/7178.ODataExtensionFigure22_5F00_195EDF51.png"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="ODataExtensionFigure2[2]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/2376.ODataExtensionFigure22_5F00_thumb_5F00_1B2F3518.png" alt="ODataExtensionFigure2[2]" width="718" height="406" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sign the assembly by selecting the &amp;ldquo;Signing&amp;rdquo; options under the project settings. Build the SampleODataExtensionProvider.dll assembly.&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;Installing the OData extension provider assembly&lt;/h1&gt;
&lt;p&gt;&lt;a&gt;&lt;span style="color: #333333;"&gt;Install the SampleODataExtensionProvider.dll in the global assembly cache (GAC) on the SharePoint web front-end (WFE) machines&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #333333;"&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;If BCS is configured to connect from SharePoint Online to an on-premises LOB system through a hybrid, then the SampleODataExtensionProvider.dll has to be installed in the GAC in the SharePoint on-premises WFE.&lt;/p&gt;
&lt;h1&gt;Configuring a connection to the OData service from SharePoint on-premises&lt;/h1&gt;
&lt;p&gt;In order to connect to the OData service from BCS, a connection setting has to be created in SharePoint using a BCS Windows PowerShell commandlet.&lt;/p&gt;
&lt;p&gt;The connection setting contains information required by SharePoint BCS to connect to the OData LOB system (OData Service URI, OData Service Metadata URI, Authentication Mode, and Extension Provider).&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New;"&gt;New-SPODataConnectionSetting -Name "ContosoServiceApp" -ServiceContext "http://contoso" -ServiceAddressURL "http://tv.telerik.com/services/OData.svc" -AuthenticationMode "Anonymous" -ExtensionProvider "SampleODataExtensionProvider. ODataOAuthExtensionProvider, SampleODataExtensionProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=34c4d4fa89a6bb3b&lt;/span&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="208"&gt;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Parameter Name&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="368"&gt;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Description&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="208"&gt;
&lt;p&gt;Name&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="368"&gt;
&lt;p&gt;Connection setting Id should be mentioned in the BCS model and should be unique.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="208"&gt;
&lt;p&gt;ServiceContext&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="368"&gt;
&lt;p&gt;SharePoint Site Collection URI&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="208"&gt;
&lt;p&gt;ServiceAddressUrl&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="368"&gt;
&lt;p&gt;OData Service Address URI. The OData metadata URI is the service URI+ $metadata. If the OData Metadata URI is different, specify through the parameter &lt;em&gt;MetadataAddressUrl&lt;/em&gt;.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="208"&gt;
&lt;p&gt;AuthenticationMode&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="368"&gt;
&lt;p&gt;The authentication mode to be used while authenticating against the OData Service URI. &amp;ldquo;Anonymous&amp;rdquo; here indicates that BCS does not do any authentication.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="208"&gt;
&lt;p&gt;ExtensionProvider&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="368"&gt;
&lt;p&gt;Fully qualified assembly name of the OData extension provider. This assembly should have been installed in the GAC on the SharePoint WFEs.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1&gt;Configuring the connection in the BCS model&lt;/h1&gt;
&lt;p&gt;The connection information has to be specified in the BCS model. The BCS runtime uses the connection information for invoking the OData LOB service.&lt;/p&gt;
&lt;p&gt;To specify the connection information, add the following property in the BCS model by adding it to the LOB System and LOB System Instance.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New;"&gt;&amp;lt;Property Name="ODataConnectionSettingsId" Type="System.String"&amp;gt; ContosoServiceApp &amp;lt;/Property&amp;gt;&lt;/span&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-41-88-metablogapi/7853.ODataExtensionFigure32_5F00_15E9380C.png"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="ODataExtensionFigure3[2]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-88-metablogapi/6445.ODataExtensionFigure32_5F00_thumb_5F00_14A9C08F.png" alt="ODataExtensionFigure3[2]" width="651" height="201" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Summary&lt;/h1&gt;
&lt;p&gt;This article describes in detail how to support custom authentication with a BCS OData connector using an OData extension provider.&lt;/p&gt;
&lt;p&gt;By following the steps mentioned here, you should be able to import a BCS model that connects to an OData service with an extension provider that does custom authentication. In the next article, we will change the OData extension provider to authenticate against Windows Azure ACS.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10373346" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/BCS/">BCS</category></item><item><title>Content enrichment service scaling and aggregation</title><link>http://blogs.msdn.com/b/sharepointdev/archive/2012/11/21/content-enrichment-service-scaling-and-aggregation.aspx</link><pubDate>Wed, 21 Nov 2012 13:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10370843</guid><dc:creator>Niels Petter R-O</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/rsscomments.aspx?WeblogPostID=10370843</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sharepointdev/commentapi.aspx?WeblogPostID=10370843</wfw:comment><comments>http://blogs.msdn.com/b/sharepointdev/archive/2012/11/21/content-enrichment-service-scaling-and-aggregation.aspx#comments</comments><description>&lt;h1&gt;WCF Routing Service with content based routing&lt;/h1&gt;  &lt;p&gt;The configuration of the content enrichment feature only supports a single web service endpoint. This can be limiting for a number of common scenarios:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You want to integrate more than one content enrichment web service into content processing.&lt;/li&gt;    &lt;li&gt;Your web service is time-consuming and you want to load balance between different instances of the web service.&lt;/li&gt;    &lt;li&gt;You have a scaled out search topology with multiple content processing components, and you want to scale up the web service to match the load.&lt;/li&gt;    &lt;li&gt;You want fault tolerance for the web service.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There are several possible technologies one could consider to solve these scenarios. This blog post focuses on using the Windows Communication Foundation (WCF) Routing Service technology included in .NET Framework 4.0. You can also check out our upcoming blog post on how to deploy a network load balancing cluster for high performance and availability.&lt;/p&gt;  &lt;p&gt;WCF Routing enables development of complex routing logic, load-balancing, and fault tolerance. All of these mechanisms support our underlying requirement for scaling out, but not all of them need to be implemented for all scenarios. We’ll look closer at routing logic in particular in this blog post.&lt;/p&gt;  &lt;p&gt;In short, the benefits of WCF Routing are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Simple and quick technology to implement and deploy.&lt;/li&gt;    &lt;li&gt;Allows for a varying degree of routing logic complexity.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;A set of pre-defined filters that can be customized.&lt;/li&gt;      &lt;li&gt;Completely custom filter implementations.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Service aggregation through routing rules that inspect managed properties.&lt;/li&gt;    &lt;li&gt;Fault tolerance through backup endpoints.&lt;/li&gt;    &lt;li&gt;Load balancing through custom filter implementations.&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Search topology and WCF Routing&lt;/h2&gt;  &lt;p&gt;We’ll start by recapping some basics, and then move on to a concrete example.&lt;/p&gt;  &lt;p&gt;A search topology can consist of anywhere from 1 to &lt;em&gt;n&lt;/em&gt; content processing components. The role of a content processing component is to parse and transform the data coming into the system before delivering it to the indexing component. This processing takes place in discrete processing flows that can range from 0 to &lt;em&gt;n&lt;/em&gt; instances within a specific content processing component. The number of active flow instances will depend on available resources and the amount of data being crawled. A ballpark figure can be calculated as the number of physical cores on the host multiplied by three. There’s no guarantee that this calculation will be true in the future.&lt;/p&gt;  &lt;p&gt;When content enrichment is enabled for the Search service application, all active flow instances will potentially call out to the configured web service endpoint for every document. Assuming a web service that has no temporal cost, the web service will receive roughly the same number of calls per second as the crawl rate (documents per second) of the farm. How much of a bottleneck the web service becomes, if at all, depends on the following factors:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The amount of resources consumed by the web service implementation.&lt;/li&gt;    &lt;li&gt;The hardware specification of the web service host.&lt;/li&gt;    &lt;li&gt;The number of calls per second.&lt;/li&gt;    &lt;li&gt;The size of the configured payload to send and receive between the content processing component and the web service.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Including network topology.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;The number of concurrent calls per second.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Depends on the number of content processing components and active flow instances.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;The following is a simple visual representation of how a search topology with two content processing components can be configured to communicate with a single WCF Routing Service. The WCF Routing Service in turn distributes incoming requests to the appropriately registered service endpoints based on a set of defined filters and the content of the received SOAP envelope. Each service implementation has a backup endpoint that will ensure high availability in case of a failure situation. Typically a &lt;strong&gt;CommunicationException&lt;/strong&gt; or &lt;strong&gt;TimeoutException&lt;/strong&gt; will cause the router to try the backup endpoint.&lt;/p&gt;  &lt;p&gt;&lt;img title="Search topology" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="Search topology" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-53-99/7450.SearchTopology.png" /&gt;&lt;/p&gt;  &lt;p&gt;Even though a single connector appears between nodes in the drawing, there will most likely be multiple HTTP connections at run time. The number of allowed active connections can be throttled through the service throttling subsection of the service behavior section in the web configuration file (for IIS hosting). By default the underlying connections will be persistent, which creates less overhead than re-creating an http-connection for every call.&lt;/p&gt;  &lt;h2&gt;Example implementation of content based routing&lt;/h2&gt;  &lt;p&gt;There may be situations where you have different web service implementations aimed at different types of content. You can pack all of them into a single service and handle requests differently depending on content, but in other cases you may know a priori that some content will be tougher to process and that it’s desirable to dedicate a particularly beefy host to those documents. Also important, maintainability of your service implementations may decrease if you have no separation of business logic. To show you how to achieve this, we’ll walk through an implementation of a WCF Routing Service where we do content-based routing predicated on the content source of an item.&lt;/p&gt;  &lt;h3&gt;Creating the WCF Routing Service&lt;/h3&gt;  &lt;p&gt;The following fictitious values are used in the example.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="312"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Role&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="312"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="312"&gt;         &lt;p&gt;Web Service 1&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="312"&gt;         &lt;p&gt;servicehost1.contoso.com&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="312"&gt;         &lt;p&gt;Web Service 1 backup&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="312"&gt;         &lt;p&gt;servicehost2.contoso.com&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="312"&gt;         &lt;p&gt;Web Service 2&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="312"&gt;         &lt;p&gt;servicehost3.contoso.com&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="312"&gt;         &lt;p&gt;Web Service 2 backup&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="312"&gt;         &lt;p&gt;servicehost4.contoso.com&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="312"&gt;         &lt;p&gt;WCF Routing Host&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="312"&gt;         &lt;p&gt;routinghost.contoso.com&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;While there are different ways of implementing a WCF Routing Service, and different levels of complexity, we’ll focus on a very simple router that we can express mostly declaratively through the web configuration file. Initially you’ll need to have Internet Information Services (IIS) set up on a server and create a new site (including a new directory on your local drive for the site).&lt;/p&gt;  &lt;p&gt;Let’s start with the web.config file and look the different sections in it separately before tying it all together in a full example. Every section described below will be a descendant of the &amp;lt;system.serviceModel&amp;gt; node. We’ll start with the binding used by both the router’s exposed service, and the clients it talks to.&lt;/p&gt;  &lt;h4&gt;Bindings&lt;/h4&gt;  &lt;p&gt;We’ve created a single &lt;strong&gt;basicHttpBinding&lt;/strong&gt; where we’ve configured large values for the &lt;strong&gt;readerQuotas&lt;/strong&gt; and the &lt;strong&gt;maxReceivedMessageSize&lt;/strong&gt;. These values can be reduced later on once you know the limits you want to have in place. They are used to limit the allowed size and complexity of the received SOAP envelope.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;binding 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding_IContentProcessingEnrichmentService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;maxReceivedMessageSize &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;8388608&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;readerQuotas 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;maxDepth&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;32&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;maxStringContentLength&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;2147483647&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;maxArrayLength&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;2147483647&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;maxBytesPerRead&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;2147483647&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;maxNameTableCharCount&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;2147483647&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;security &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;mode&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;None&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;binding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


&lt;h4&gt;Services&lt;/h4&gt;

&lt;p&gt;This is where we define the endpoint that the router uses to expose itself. We will configure the content enrichment feature in SharePoint to use this endpoint through the cmdlets later. Take note that the baseAddress attribute is not required when hosting in IIS, it’s simply here to make it clear what host this service is for.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;service 
    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;RoutingServiceBehavior&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;System.ServiceModel.Routing.RoutingService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;host&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;baseAddresses&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;add &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;baseAddress&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://routinghost.contoso.com:800&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;baseAddresses&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;host&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;endpoint 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;RoutingServiceEndpoint&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;address&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;binding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
        &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding_IContentProcessingEnrichmentService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;contract&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;System.ServiceModel.Routing.IRequestReplyRouter&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;service&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


&lt;h4&gt;Clients&lt;/h4&gt;

&lt;p&gt;Here we define the endpoints to the content enrichment web service implementations that the router will route to. These are not different from a normal implementation that you host in a single-service scenario. As can be seen in the following example, we’re configuring a total of four client endpoints. These cover our two different service implementations, with an additional backup for each in case of a failure.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;client&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;endpoint 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service1&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;address&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://servicehost1.contoso.com:800/ContentEnrichmentService.svc&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;binding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding_IContentProcessingEnrichmentService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;contract&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;*&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;endpoint 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service1Backup&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;address&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://servicehost2.contoso.com:800/ContentEnrichmentService.svc&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;binding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding_IContentProcessingEnrichmentService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;contract&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;*&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;endpoint 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service2&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;address&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://servicehost3.contoso.com:800/ContentEnrichmentService.svc&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;binding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding_IContentProcessingEnrichmentService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;contract&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;*&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;endpoint 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service2Backup&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;address&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://servicehost4.contoso.com:800/ContentEnrichmentService.svc&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;binding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding_IContentProcessingEnrichmentService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;contract&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;*&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;client&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


&lt;h4&gt;Service behavior&lt;/h4&gt;

&lt;p&gt;We need to create a service behavior where we reference the name of the filter table that will be defined in the next step. In addition, to enable full inspection of the SOAP envelopes in our XPath filters, we set the attribute &lt;strong&gt;routeOnHeadersOnly&lt;/strong&gt; to false.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;behavior &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;RoutingServiceBehavior&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;routing 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterTableName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;ContentSourceFilters&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;routeOnHeadersOnly&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;False&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;behavior&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


&lt;h4&gt;Routing&lt;/h4&gt;

&lt;p&gt;Here we define the filters and the filter table where we map the filters to normal endpoints and backup endpoints. The XPath expressions look for all Property nodes in the SOAP envelope by using a predicate that specifies the name of the property and the value. This predicate is used to match against specific content sources. There are various types of filters that we can use, but the XPath type is sufficient in speed and functionality for this example. To develop more complex scenarios, take a look at custom filters in the online WCF documentation.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;routing&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;namespaceTable&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;!-- &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;Define prefix for Content Enrichment namespace, 
        used in XPath filters &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;--&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;add 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;prefix&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;cc&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;namespace&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://schemas.microsoft.com/office/server/search/
contentprocessing/2012/01/ContentProcessingEnrichment&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;namespaceTable&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;!-- &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;Filter definitions &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;--&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filters&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filter 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Sharepoint&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterType &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;XPath&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterData&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= 
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;//cc:Property[cc:Name[. = 'ContentSource'] and 
cc:Value[. = 'Local Sharepoint Sites']]&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filter 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Fileshare&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterType &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;XPath&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterData&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= 
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;//cc:Property[cc:Name[. = 'ContentSource'] and 
cc:Value[. = 'Large Fileshare']]&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filters&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;!-- &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;Filter mappings &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;--&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filterTables&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filterTable &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;ContentSourceFilters&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;add 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Sharepoint&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;endpointName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service1&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;backupList&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;BackupSharepoint&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;add 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Fileshare&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;endpointName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service2&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;backupList&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;BackupFileshare&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filterTable&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filterTables&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;!-- &lt;/span&gt;&lt;span style="background: white; color: green;"&gt;Backup lists &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;--&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;backupLists&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;backupList &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;BackupSharepoint&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;add &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;endpointName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service1Backup&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;backupList&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;backupList &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;BackupFileshare&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;add &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;endpointName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service2Backup&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;backupList&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;backupLists&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;routing&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


&lt;h4&gt;Web.config&lt;/h4&gt;

&lt;p&gt;It’s time to tie it all together in a single configuration. The following example uses all the previous pieces to build a complete configuration file.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;xml &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;version&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;1.0&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;configuration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;system.serviceModel&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;bindings&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;binding 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding_IContentProcessingEnrichmentService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;maxReceivedMessageSize &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;8388608&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;readerQuotas 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;maxDepth&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;32&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;maxStringContentLength&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;2147483647&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;maxArrayLength&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;2147483647&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;maxBytesPerRead&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;2147483647&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;maxNameTableCharCount&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;2147483647&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;security &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;mode&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;None&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;binding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;bindings&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;services&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;service 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;RoutingServiceBehavior&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;System.ServiceModel.Routing.RoutingService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;host&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;baseAddresses&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;add 
                            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;baseAddress&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
                            &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://routinghost.contoso.com:800&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;baseAddresses&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;host&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;endpoint 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;RoutingServiceEndpoint&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;address&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&amp;quot; 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;binding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding_IContentProcessingEnrichmentService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;contract&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;System.ServiceModel.Routing.IRequestReplyRouter&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;service&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;services&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;client&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;endpoint 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service1&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;address&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= 
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://servicehost1.contoso.com:800/ContentEnrichmentService.svc&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
            &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;binding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= 
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding_IContentProcessingEnrichmentService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;contract&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;*&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;endpoint 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service1Backup&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;address&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= 
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://servicehost2.contoso.com:800/ContentEnrichmentService.svc&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;binding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= 
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding_IContentProcessingEnrichmentService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;contract&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;*&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;endpoint 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service2&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;address&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://servicehost3.contoso.com:800/ContentEnrichmentService.svc&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;binding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= 
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding_IContentProcessingEnrichmentService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;contract&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;*&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;endpoint 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service2Backup&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;address&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= 
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://servicehost4.contoso.com:800/ContentEnrichmentService.svc&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;binding&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= 
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;basicHttpBinding_IContentProcessingEnrichmentService&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;contract&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;*&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;client&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;behaviors&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;behavior 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;RoutingServiceBehavior&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;routing 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterTableName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;ContentSourceFilters&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;routeOnHeadersOnly&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;False&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;behavior&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;serviceBehaviors&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;behaviors&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;routing&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;namespaceTable&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;add 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;prefix&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;cc&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;namespace&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= 
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;http://schemas.microsoft.com/office/server/search/
contentprocessing/2012/01/ContentProcessingEnrichment&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;namespaceTable&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filters&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filter 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Sharepoint&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterType &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;XPath&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterData &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= 
 &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;//cc:Property[cc:Name = 'ContentSource' and 
 cc:Value = 'Local Sharepoint Sites']&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filter 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Fileshare&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterType &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;= &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;XPath&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterData &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=  
&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;//cc:Property[cc:Name = 'ContentSource' and 
 cc:Value = 'Large Fileshare']&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filters&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filterTables&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filterTable &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;ContentSourceFilters&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;add 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Sharepoint&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;endpointName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service1&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;backupList&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;BackupSharepoint&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;add 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;filterName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Fileshare&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;endpointName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service2&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
                        &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;backupList&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;BackupFileshare&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filterTable&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;filterTables&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;backupLists&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;backupList &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;BackupSharepoint&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;add &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;endpointName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service1Backup&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;backupList&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;backupList &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;name&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;BackupFileshare&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;add &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;endpointName&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;Service2Backup&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;/&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;backupList&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;backupLists&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;routing&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;system.serviceModel&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;configuration&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


&lt;h4&gt;The service file&lt;/h4&gt;

&lt;p&gt;The markup code of the service file needs to reference the &lt;strong&gt;RoutingService&lt;/strong&gt; class and Routing assembly, rather than your own implementation/assembly, which would be the normal procedure. The code part can be just an empty implementation since it won’t be used.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="background: white; color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;%&lt;/span&gt;&lt;span style="background: white; color: rgb(163, 21, 21);"&gt;@ 
    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;ServiceHost&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&amp;quot; 
    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;Language&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;C#&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;Debug&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;true&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
    &lt;/span&gt;&lt;span style="background: white; color: red;"&gt;Service&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;=
    &lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;System.ServiceModel.Routing.RoutingService, 
    System.ServiceModel.Routing, 
    version=4.0.0.0, 
    Culture=neutral, 
    PublicKeyToken=31bf3856ad364e35&lt;/span&gt;&lt;span style="background: white; color: black;"&gt;&amp;quot; 
%&lt;/span&gt;&lt;span style="background: white; color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


&lt;h1&gt;Final remarks&lt;/h1&gt;

&lt;p&gt;To summarize, we’ve shown how it is possible to overcome some of the limitations with a single web service endpoint through the use of WCF Routing. The fact that the router itself is still a single point of failure can be overcome through other load balancing mechanics like NLB.&lt;/p&gt;

&lt;p&gt;If you want to learn more about how to customize search with content enrichment, check out the official documentation on &lt;a href="http://msdn.microsoft.com/en-us/library/jj163968(v=office.15)"&gt;MSDN&lt;/a&gt;, and the other blog posts on content enrichment.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10370843" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/Search/">Search</category><category domain="http://blogs.msdn.com/b/sharepointdev/archive/tags/SharePoint+2013/">SharePoint 2013</category></item></channel></rss>