<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Sridhar's blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/sridhara/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/sridhara/feed.xml</link>
    <description>SharePoint programming and customization.</description>
    <lastBuildDate>Thu, 30 Jul 2015 19:04:34 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>SharePoint Server 2016 – Installation and Deployment</title>
      <link>https://docs.microsoft.com/archive/blogs/sridhara/sharepoint-server-2016-installation-and-deployment</link>
      <pubDate>Thu, 14 May 2015 04:36:13 GMT</pubDate>
      <dc:creator><![CDATA[SridharRaghunathan-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sridhara/2015/05/14/sharepoint-server-2016-installation-and-deployment/</guid>
      <description><![CDATA[Bill Baer introduces the new SharePoint Server 2016 describing the initial investments made in...]]></description>
      <content:encoded><![CDATA[<p><a href="https://social.technet.microsoft.com/profile/Bill%20Baer%20(Microsoft)" target="_blank">Bill Baer</a> introduces the new SharePoint Server 2016 describing the initial investments made in installing and deployment.</p>  <p>There’s guidance on system requirements, deployment scenarios &amp; prerequisites.&#160; A new MinRole feature is also explained (with a short, to-the-point video).&#160; He also throws light on health rules &amp; compliance and Upgrade &amp; Migration options.</p>  <p>Read his blog <a href="https://blogs.technet.com/b/wbaer/archive/2015/05/12/what-s-new-in-sharepoint-server-2016-installation-and-deployment.aspx" target="_blank">here</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Remote debugging tip on Windows Server 2012 R2</title>
      <link>https://docs.microsoft.com/archive/blogs/sridhara/remote-debugging-tip-on-windows-server-2012-r2</link>
      <pubDate>Thu, 02 Apr 2015 06:47:02 GMT</pubDate>
      <dc:creator><![CDATA[SridharRaghunathan-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sridhara/2015/04/02/remote-debugging-tip-on-windows-server-2012-r2/</guid>
      <description><![CDATA[As most of you know, my role primarily involves debugging and debugging a lot!&#160; Most often I...]]></description>
      <content:encoded><![CDATA[<p>As most of you know, my role primarily involves debugging and debugging a lot!&#160; Most often I prefer Visual Studio debugger for debugging managed code.&#160; That of course, if the problem I am trying to find the root-cause of is reproducible.&#160; Well, if I don’t have that luxury, then there are other approaches (memory dumps etc.,).&#160; But usually I believe (a very conservative estimate) 70% of problem scenarios could be (preferably) scaled down and replicated.&#160; And with Visual Studio debugging, I often perform remote debugging as that enables me to setup my own AD, Exchange &amp; SharePoint servers connected to it instead of tying them up with a corporate domain environment where there could be limitations (for e.g., difficulties to test with multiple user account, scenarios such as UPA sync could be restricted, DirSync type of thing cannot be done etc.,), you get the picture right?</p>  <p>So today I wanted to debug a process that was running on Windows Server 2012 R2 server.&#160; I launched the remote debugger on the server from <em>C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Remote Debugger\x64</em> by double-clicking <em>msvsmon.exe</em>.</p>  <p>&#160;</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1884.image_5A2422E8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1884.image_5F00_5A2422E8.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8306.image_thumb_1BBE5F35.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8306.image_5F00_thumb_5F00_1BBE5F35.png" width="673" height="227" /></a></p>  <p>&#160;</p>  <p>Got back to my Windows 8.1 box where I have Visual Studio 2013 and tried to connect to the remote computer.&#160; Connection was successful.&#160; But when I tried attaching to a process on the remote server, I hit the below <strong>clear</strong> error.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8662.image_4D4C5D7B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8662.image_5F00_4D4C5D7B.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1106.image_thumb_31AA6236.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1106.image_5F00_thumb_5F00_31AA6236.png" width="847" height="426" /></a></p>    <p>This is despite the fact that I have set UAC to “Never notify” (Not recommended) setting.</p>  <p>To fix this problem, I simply launched <em>msvsmon.exe</em> as administrator and that fixed my problem.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8551.image_50EF99BA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8551.image_5F00_50EF99BA.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4380.image_thumb_39C41F3C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4380.image_5F00_thumb_5F00_39C41F3C.png" width="697" height="238" /></a></p>  <p>Just thought of sharing this out as this really was not something I expected with UAC turned OFF.&#160; And this never happens on my other boxes that are running Windows Server 2008 R2 (with UAC turned OFF).&#160; And to also propagate this message <strong><em>“Trust the error message displayed, no matter whatever our human minds tell us based on our logical derivations from facts.”</em></strong> (not always true I understand, but this time it certainly was!).</p>  <p>Happy debugging!!!</p>]]></content:encoded>
    </item>
    <item>
      <title>The new “Custom Script” (no-script) feature</title>
      <link>https://docs.microsoft.com/archive/blogs/sridhara/the-new-custom-script-no-script-feature</link>
      <pubDate>Thu, 02 Apr 2015 04:05:37 GMT</pubDate>
      <dc:creator><![CDATA[SridharRaghunathan-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sridhara/2015/04/02/the-new-custom-script-no-script-feature/</guid>
      <description><![CDATA[The purpose of this post is to increase awareness on Custom Script (a.k.a. no script) feature that’s...]]></description>
      <content:encoded><![CDATA[<p>The purpose of this post is to increase awareness on <strong><em>Custom Script</em></strong> (a.k.a. <strong><em>no script</em></strong>) feature that’s introduced in O365 SharePoint tenants.&#160; We’ll be able to see this option when we visit SharePoint Admin Center site &gt; Settings and scroll down to see the <strong><em>Custom Script</em></strong> section.</p>  <p>&#160;</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8867.image_08103F3B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8867.image_5F00_08103F3B.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1805.image_thumb_59B94A3E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1805.image_5F00_thumb_5F00_59B94A3E.png" width="1182" height="112" /></a></p>  <p>I “boxed” the <u>more information</u> link intentionally as I feel that’s not highly discoverable.&#160; It can be easily reached if we use keywords like “<em>custom script sharepoint online”</em> in our favorite search engines, but not when we search using keywords based on the symptoms we see as a result of this custom script feature.</p>  <p>Here’s the same link, you might want to bookmark it: <a href="https://support.office.com/en-us/article/Turn-scripting-capabilities-on-and-off-1F2C515F-5D7E-448A-9FD7-835DA935584F" target="_blank">Turn scripting capabilities on and off</a>.</p>  <p>From the above screen shot we can see that in my SharePoint online tenant, custom script feature is turned ON on personal sites (i.e., Prevent users from running custom script on personal sites) that will not allow users to write scripts using the <em>embed code </em>option for example.&#160; Also notice that custom script feature is turned OFF on self-service created sites (i.e., Allow users to run custom script on self-service created sites).&#160; This means if I create a private site collection, users with appropriate rights should be able to use <em>embed code </em>option and write client-side scripts.&#160; For most of us the options might be obvious, but just wanted to share this out.</p>  <p>The following are the symptoms we would encounter if custom script feature is turned ON (which is BTW the default).</p>  <p><u>NOTE</u>: Below sections are duplicated from the original link above for quick read.</p>  <p>The following site settings <em>will</em> no longer be available after scripting has been disabled (i.e., the prevent radio button is selected for both personal/self-service created sites).</p>  <table cellpadding="0" border="0"><tbody>     <tr>       <td>         <h2><strong>Site feature</strong></h2>       </td>        <td>         <h2><strong>Behavior</strong></h2>       </td>        <td>         <h2><strong>Notes</strong></h2>       </td>     </tr>      <tr>       <td>         <p>Save Site as Template</p>       </td>        <td>         <p>No longer available in Site Settings.</p>       </td>        <td>         <p>You can still build sites from templates created before scripting was disabled.</p>       </td>     </tr>      <tr>       <td>         <p>Save document library as template</p>       </td>        <td>         <p>No longer available in Library Settings.</p>       </td>        <td>         <p>You can still build document libraries from templates created before scripting was disabled.</p>       </td>     </tr>      <tr>       <td>         <p>Solution Gallery</p>       </td>        <td>         <p>No longer available in Site Settings.</p>       </td>        <td>         <p>You can still use solutions created before scripting was disabled.</p>       </td>     </tr>      <tr>       <td>         <p>Theme Gallery</p>       </td>        <td>         <p>No longer available in Site Settings.</p>       </td>        <td>         <p>You can still use themes created before scripting was disabled.</p>       </td>     </tr>      <tr>       <td>         <p>Help Settings</p>       </td>        <td>         <p>No longer available in Site Settings.</p>       </td>        <td>         <p>You can still access help file collections available before scripting was disabled.</p>       </td>     </tr>      <tr>       <td>         <p>Sandbox solutions</p>       </td>        <td>         <p>Solution Gallery will not appear in the Site Settings so you can’t add, manage, or upgrade sandbox solutions. </p>       </td>        <td>         <p>You can still run sandbox solutions that were deployed before scripting was disabled.</p>       </td>     </tr>      <tr>       <td>         <p>SharePoint Designer</p>       </td>        <td>         <p>Site Pages: No longer able to update web pages that are not HTML.</p>          <p>Handling List: <b>Create Form</b> and <b>Custom Action</b> will no longer work.</p>          <p>Subsites: <b>New Subsite</b> and <b>Delete Site</b> redirect to the <b>Site Settings</b> page in the browser.</p>          <p>Data Sources: <b>Properties</b> button is no longer available. </p>       </td>        <td>         <p>You can still open data sources.</p>       </td>     </tr>   </tbody></table>  <p>&#160;</p>  <p>The following web parts and features are unavailable to site collection owners and site owners after scripting has been disabled.</p>  <table cellpadding="0" width="520" border="0"><tbody>     <tr>       <td width="197">         <h2>Web part category</h2>       </td>        <td width="321">         <h2>Web part</h2>       </td>     </tr>      <tr>       <td width="197">         <p>Blog</p>       </td>        <td width="321">         <p>Blog Archives</p>          <p>Blog Notifications</p>          <p>Blog Tools</p>       </td>     </tr>      <tr>       <td width="197">         <p>Business Data</p>       </td>        <td width="321">         <p>Business Data Actions</p>          <p>Business Data Item</p>          <p>Business Data Item Builder</p>          <p>Business Data List</p>          <p>Business Data Related List</p>          <p>Excel Web Access</p>          <p>Indicator Details</p>          <p>Status List</p>          <p>Visio Web Access</p>       </td>     </tr>      <tr>       <td width="197">         <p>Community</p>       </td>        <td width="321">         <p>About This Community</p>          <p>Join</p>          <p>My Membership</p>          <p>Tools </p>          <p>What’s Happening</p>       </td>     </tr>      <tr>       <td width="197">         <p>Content Rollup</p>       </td>        <td width="321">         <p>Categories</p>          <p>Project Summary</p>          <p>Relevant Documents</p>          <p>RSS Viewer</p>          <p>Site Aggregator</p>          <p>Sites in Category</p>          <p>Term Property</p>          <p>Timeline</p>          <p>WSRP Viewer</p>          <p>XML Viewer</p>       </td>     </tr>      <tr>       <td width="197">         <p>Document Sets</p>       </td>        <td width="321">         <p>Document Set Contents</p>          <p>Document Set Properties</p>       </td>     </tr>      <tr>       <td width="197">         <p>Forms</p>       </td>        <td width="321">         <p>HTML Form Web Part</p>       </td>     </tr>      <tr>       <td width="197">         <p>Media and Content</p>       </td>        <td width="321">         <p>Content Editor</p>          <p>Script Editor</p>          <p>Silverlight Web Part</p>       </td>     </tr>      <tr>       <td width="197">         <p>Search</p>       </td>        <td width="321">         <p>Refinement</p>          <p>Search Box</p>          <p>Search Navigation</p>          <p>Search Results</p>       </td>     </tr>      <tr>       <td width="197">         <p>Search-Driven Content</p>       </td>        <td width="321">         <p>Catalog-Item Reuse</p>       </td>     </tr>      <tr>       <td width="197">         <p>Social Collaboration</p>       </td>        <td width="321">         <p>Contact Details</p>          <p>Note Board</p>          <p>Organization Browser</p>          <p>Site Feed</p>          <p>Tag Cloud</p>          <p>User Tasks</p>       </td>     </tr>      <tr>       <td width="197">         <p>Master Page Gallery</p>       </td>        <td width="321">         <p>Can't create or edit master pages</p>       </td>     </tr>      <tr>       <td width="197">         <p>Publishing Sites</p>       </td>        <td width="321">         <p>Can't create or edit master pages and page layouts</p>       </td>     </tr>   </tbody></table>  <p>&#160;</p>  <h3>Custom properties of app parts missing/does not display</h3>  <p>Other than the above list, we’ve also observed that custom properties in app parts would be missing when <strong><em>custom script</em></strong> feature is turned ON (i.e., prevent scripts from running).&#160; The resolution is to turn custom script feature OFF thus allowing scripts to run.&#160; This brings back the missing custom properties in app parts.</p>  <p>&#160;</p>  <h3>Unable to upload ASPX files</h3>  <p>When custom script feature is turned ON, we might also run into a problem where we are unable to upload ASPX files (JS/HTML files upload just fine).</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6138.image_529C9E77.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6138.image_5F00_529C9E77.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0724.image_thumb_1436DAC4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0724.image_5F00_thumb_5F00_1436DAC4.png" width="952" height="71" /></a></p>  <p>&#160;</p>  <h3>Enabling script</h3>  <p>To allow scripts, all that we have to do is to ensure we choose <strong><em>allow</em></strong> radio button on the appropriate site collection type we need (personal, self-service created sites).&#160; <font style="background-color: #ffff00">It takes 24 hours for the change to take effect</font> as pointed out in the above link.</p>  <p>If you run into some other problems that you think should normally work in SharePoint, I’d first give custom script feature a shot! <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3858.wlEmoticon-smile_540351FA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3858.wlEmoticon_2D00_smile_5F00_540351FA.png" /></p>  <p>Hoping the information in this post was helpful.</p>]]></content:encoded>
    </item>
    <item>
      <title>Unable to create 2013-platform workflows through SharePoint Designer 2013</title>
      <link>https://docs.microsoft.com/archive/blogs/sridhara/unable-to-create-2013-platform-workflows-through-sharepoint-designer-2013</link>
      <pubDate>Wed, 04 Mar 2015 05:19:19 GMT</pubDate>
      <dc:creator><![CDATA[SridharRaghunathan-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sridhara/2015/03/04/unable-to-create-2013-platform-workflows-through-sharepoint-designer-2013/</guid>
      <description><![CDATA[I recently hit another “flavor” of this problem when trying to create a 2013-platform workflow using...]]></description>
      <content:encoded><![CDATA[<p>I recently hit another “flavor” of <a href="https://blogs.msdn.com/b/sridhara/archive/2015/01/05/register-spworkflowservice-throws-invaliddata-directorynotfoundexception-on-15-template-workflowactivities-directory.aspx" target="_blank">this</a> problem when trying to create a 2013-platform workflow using SharePoint Designer 2013.&#160; Whenever I choose to create a workflow using 2013-platform, the dialog box will vanish just as though it’s about to create the workflow designer for me and then the “Downloading data” dialog shows up for a second, then the dialog stating that SharePoint Designer 2013 is creating a local cache of the items it needs (web information, DLL proxy etc.,) comes up and vanished without giving any clue as to what happened.&#160; Needless to mention, I did not see the workflow designer.</p>  <p>The create workflow dialog.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2335.image_34B8964A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2335.image_5F00_34B8964A.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8883.image_thumb_4148D417.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8883.image_5F00_thumb_5F00_4148D417.png" width="432" height="279" /></a></p>  <p>The downloading data dialog.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0820.image_1BE1715A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0820.image_5F00_1BE1715A.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2477.image_thumb_3237169F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2477.image_5F00_thumb_5F00_3237169F.png" width="580" height="160" /></a></p>  <p>Then the cache building dialog comes up.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6622.image_3ABD069A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6622.image_5F00_3ABD069A.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5875.image_thumb_3EC9E51D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5875.image_5F00_thumb_5F00_3EC9E51D.png" width="518" height="189" /></a></p>  <p>Then… nothing happens!</p>  <p>Now we know that SharePoint Designer 2013 issues web calls to the server it’s connecting to pull all the information it needs.&#160; With this knowledge, I pulled up our good friend <a href="https://www.telerik.com/fiddler" target="_blank">Fiddler</a> and looked at what’s happening behind the scenes.&#160; There was this following request:</p>  <p><font color="#666666" size="2" face="Lucida Console">&lt;Request AddExpandoFieldTypeSuffix=&quot;true&quot; SchemaVersion=&quot;15.0.0.0&quot; LibraryVersion=&quot;15.0.0.0&quot; ApplicationName=&quot;.NET Library&quot; xmlns=&quot;</font><a href="https://schemas.microsoft.com/sharepoint/clientquery/2009&quot;"><font color="#666666" size="2" face="Lucida Console">https://schemas.microsoft.com/sharepoint/clientquery/2009&quot;</font></a><font color="#666666" size="2" face="Lucida Console">&gt;&lt;Actions&gt;&lt;Method Name=&quot;GetActivitySignatures&quot; Id=&quot;934&quot; ObjectPathId=&quot;916&quot;&gt;&lt;Parameters&gt;&lt;Parameter Type=&quot;DateTime&quot;&gt;0001-01-01T00:00:00.0000000&lt;/Parameter&gt;&lt;/Parameters&gt;&lt;/Method&gt;&lt;/Actions&gt;&lt;ObjectPaths&gt;&lt;Method Id=&quot;916&quot; ParentId=&quot;912&quot; Name=&quot;GetWorkflowDeploymentService&quot; /&gt;&lt;Constructor Id=&quot;912&quot; TypeId=&quot;{4ccc7f0e-bf7e-4477-999c-6458a73d0039}&quot;&gt;&lt;Parameters&gt;&lt;Parameter ObjectPathId=&quot;3&quot; /&gt;&lt;/Parameters&gt;&lt;/Constructor&gt;&lt;Identity Id=&quot;3&quot; Name=&quot;740c6a0b-85e2-48a0-a494-e0f1759d4aa7:site:12ea7af2-a10f-4eb8-a0bd-b600a085a2b8:web:0feddf5a-d707-4811-b1b1-3e46ba3eb9cd&quot; /&gt;&lt;/ObjectPaths&gt;&lt;/Request&gt;</font></p>  <p>Which resulted in the following response:</p>  <p><font color="#666666" size="2" face="Lucida Console">[     <br />{      <br />&quot;SchemaVersion&quot;:&quot;15.0.0.0&quot;,&quot;LibraryVersion&quot;:&quot;15.0.4667.1000&quot;,&quot;ErrorInfo&quot;:{      <br />&quot;ErrorMessage&quot;:&quot;File Not Found.&quot;,&quot;ErrorValue&quot;:null,&quot;TraceCorrelationId&quot;:&quot;1871ef9c-f2ff-e017-728a-ae7eecfba3fc&quot;,&quot;ErrorCode&quot;:-2147024893,&quot;ErrorTypeName&quot;:&quot;System.IO.DirectoryNotFoundException&quot;      <br />},&quot;TraceCorrelationId&quot;:&quot;1871ef9c-f2ff-e017-728a-ae7eecfba3fc&quot;      <br />}      <br />]</font></p>  <p>Now the System.IO.DirectoryNotFoundException was familiar to me from the previous <a href="https://blogs.msdn.com/b/sridhara/archive/2015/01/05/register-spworkflowservice-throws-invaliddata-directorynotfoundexception-on-15-template-workflowactivities-directory.aspx" target="_blank">post</a>, so it was a quick guess.&#160; But the point is that when workflow deployment service is called (specifically the call GetActivitySignatures) ends up in Microsoft.SharePoint.WorkflowServices.Activities.dll.&#160; Now this was a new environment I provisioned and I was careful to first get workflow manager registered with SharePoint Server 2013 and then install Office Developer Tools for VS 2013.&#160; However, I did not recall to create the WorkflowActivities folder and drop Microsoft.SharePoint.WorkflowServices.Activities.dll into it as explained in my previous post linked.&#160; Apparently, SharePoint Designer 2013 wasn’t able to communicate with the workflow manager because of the above error.</p>  <p>After implementing the fix in my previous <a href="https://blogs.msdn.com/b/sridhara/archive/2015/01/05/register-spworkflowservice-throws-invaliddata-directorynotfoundexception-on-15-template-workflowactivities-directory.aspx" target="_blank">post</a>, SharePoint Designer 2013 was good and I was able to create workflows using 2013-platform.</p>  <p>As an aside, if we implement the fix and then delete the WorkflowActivities folder, we can still create 2013 workflows without problems.&#160; This is because once the activities are cached, SharePoint Designer 2013 picks it up from cached location.&#160; However, I think we should not do that (i.e., deleting WorkflowActivities folder) because when WFM/SharePoint is upgraded and if there’s a newer version of Microsoft.SharePoint.WorkflowServices.Activities.dll, we’ll run into the same problem.</p>  <p>Hope this post was informative and useful…!</p>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint Online: Client libraries not loaded in publishing pages</title>
      <link>https://docs.microsoft.com/archive/blogs/sridhara/sharepoint-online-client-libraries-not-loaded-in-publishing-pages</link>
      <pubDate>Tue, 17 Feb 2015 03:23:44 GMT</pubDate>
      <dc:creator><![CDATA[SridharRaghunathan-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sridhara/2015/02/17/sharepoint-online-client-libraries-not-loaded-in-publishing-pages/</guid>
      <description><![CDATA[Recently worked with a customer who had JSOM code in a content editor web part.&#160; They had this...]]></description>
      <content:encoded><![CDATA[<p>Recently worked with a customer who had JSOM code in a content editor web part.&#160; They had this web part deployed to a page on their SharePoint Online publishing site.&#160; For simplicity, let’s say they had the below code in a JS file referenced in their content editor web part.</p>  <div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">   <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">     <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">&lt;script type=<span style="color: #006080">&quot;text/javascript&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">&#160;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">    ExecuteOrDelayUntilScriptLoaded(spCallOut, <span style="color: #006080">'SP.js'</span>);    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">&#160;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">    var web;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">&#160;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">    function spCallOut() {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">        var clientContext = <span style="color: #0000ff">new</span> SP.ClientContext.get_current();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">        <span style="color: #0000ff">this</span>.web = clientContext.get_web();</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">        clientContext.load(<span style="color: #0000ff">this</span>.web, <span style="color: #006080">'Title'</span>);</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">        clientContext.executeQueryAsync(Function.createDelegate(<span style="color: #0000ff">this</span>, <span style="color: #0000ff">this</span>.onQuerySucceeded), Function.createDelegate(<span style="color: #0000ff">this</span>, <span style="color: #0000ff">this</span>.onQueryFailed));</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">    }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">&#160;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">    function onQuerySucceeded(sender, args) {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">        alert(<span style="color: #0000ff">this</span>.web.get_title());</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">    }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">&#160;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">    function onQueryFailed(sender, args) {</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">        alert(<span style="color: #006080">'Request failed. '</span> + args.get_message() + <span style="color: #006080">'\n'</span> + args.get_stackTrace());</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">    }</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">&#160;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">&lt;/script&gt;</pre>
<!--CRLF--></div>
</div>

<p>According to the logic in the above code, we expect to see a message box with the current web’s title.&#160; However, the message box pop-up never appears when the option to “Hide Ribbon” is enabled on publishing sites.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4237.image_006F80A7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4237.image_5F00_006F80A7.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5672.image_thumb_44B278A4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5672.image_5F00_thumb_5F00_44B278A4.png" width="336" height="163" /></a></p>

<p>We found this to be because the client-side libraries (SP.js etc.,) was not loaded yet.&#160; To circumvent this problem we replaced the call to <em>ExecuteOrDelayUntilScriptLoaded(spCallOut, ‘SP.js’)</em> to <em>EnsureScriptFunc(&quot;SP.js&quot;, &quot;SP.ClientContext&quot;, function() { spCallOut() }) </em>(EnsureScriptFunc is definite in init.js).&#160; And that fixed this problem.</p>

<p>Apparently <a href="https://msdn.microsoft.com/en-us/library/office/ff411788(v=office.14).aspx" target="_blank">ExecuteOrDelayUntilScriptLoaded</a> function is not the correct one to be used in this case, but EnsureScriptFunc is, which also loads the dependent libraries on-demand.</p>

<p>Hope this post was useful in your client-side development efforts!</p>]]></content:encoded>
    </item>
    <item>
      <title>Register-SPWorkflowService throws InvalidData, DirectoryNotFoundException on 15TEMPLATEWorkflowActivities directory</title>
      <link>https://docs.microsoft.com/archive/blogs/sridhara/register-spworkflowservice-throws-invaliddata-directorynotfoundexception-on-15templateworkflowactivities-directory</link>
      <pubDate>Mon, 05 Jan 2015 05:41:47 GMT</pubDate>
      <dc:creator><![CDATA[SridharRaghunathan-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sridhara/2015/01/05/register-spworkflowservice-throws-invaliddata-directorynotfoundexception-on-15templateworkflowactivities-directory/</guid>
      <description><![CDATA[I was setting up a new SharePoint 2013 environment and hit this issue when registering workflow...]]></description>
      <content:encoded><![CDATA[<p>I was setting up a new SharePoint 2013 environment and hit this issue when registering workflow manager with SharePoint 2013.&#160; Thought I’d share this out so that it helps others who might run into this issue.</p>  <p>Here’s the sequence of my installation.</p>  <p>1. Installed SharePoint 2013 RTM + SP1 and then <a href="https://support.microsoft.com/kb/2889944" target="_blank">SharePoint 2013 November CU 2014</a>.&#160; Ran PSConfigUI.exe – successful.</p>  <p>2. Installed Workflow Manager 1.0 Refresh by downloading it through <a href="https://www.microsoft.com/web/downloads/platform.aspx" target="_blank">Web Platform Installer</a>.&#160; Provisioned Workflow Manager farm – successful.</p>  <p>3. Installed Microsoft Office Developer Tools for Visual Studio 2013 – November 2014 Update through Web Platform Installer. <font style="background-color: #ffff00">&lt;&lt;&lt; This steps appears to be the culprit as this deletes the 15\TEMPLATE\WorkflowActivities folder and the DLL within it &gt;&gt;&gt;</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8156.image_3D87C71D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8156.image_5F00_3D87C71D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6052.image_thumb_56862813.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6052.image_5F00_thumb_5F00_56862813.png" width="983" height="408" /></a></p>  <p>4. Then issued the Register-SPWorkflowService command to register the WFM farm with SharePoint 2013 and hit the below error.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1614.image_57EA4AE5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1614.image_5F00_57EA4AE5.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5355.image_thumb_4E911662.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5355.image_5F00_thumb_5F00_4E911662.png" width="752" height="244" /></a></p>  <p>Before installing Office Developer Tools November 2014 Update, the WorkflowActivities folder had <em><strong>Microsoft.SharePoint.WorkflowServices.Activities.dll</strong></em> in it.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3632.image_44CBAEEA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3632.image_5F00_44CBAEEA.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7384.image_thumb_2276AA22.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7384.image_5F00_thumb_5F00_2276AA22.png" width="828" height="213" /></a></p>  <p>After installing Office Developer Tools, the WorkflowActivities folder was deleted.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4505.image_191D759F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4505.image_5F00_191D759F.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4532.image_thumb_4CE56BF0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4532.image_5F00_thumb_5F00_4CE56BF0.png" width="682" height="470" /></a></p>  <p>After hitting this error, I just had to pick this assembly from the .NET 4.0 GAC and copy it into 15\TEMPLATE\WorkflowActivities folder after creating <strong><em>WorkflowActivities</em></strong> folder under \15\TEMPLATE path.</p>  <p>The path I copied this assembly from is: <strong><em>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.WorkflowServices.Activities</em></strong>.&#160; [NOTE: If you have latest CU of SharePoint 2013 installed (like SharePoint 2013 November CU 2014) then you’ll see 2 versions of this assembly (15 and 16) in the GAC.&#160; You need to pick the 15 version of this assembly].</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4456.image_782C93A8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4456.image_5F00_782C93A8.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0880.image_thumb_59E1DCB2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0880.image_5F00_thumb_5F00_59E1DCB2.png" width="828" height="173" /></a></p>  <p>I then copied over this assembly to \15\TEMPLATE\WorkflowActivities folder after manually creating this folder.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5100.image_229B5577.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5100.image_5F00_229B5577.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2311.image_thumb_004650AF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2311.image_5F00_thumb_5F00_004650AF.png" width="832" height="218" /></a></p>    <p>Post this, I issued the Register-SPWorkflowService command with the <strong><em>–Force</em></strong> switch.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6064.image_76ED1C2B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6064.image_5F00_76ED1C2B.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3264.image_thumb_3FA694F0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3264.image_5F00_thumb_5F00_3FA694F0.png" width="833" height="222" /></a></p>  <p>That fixed this issue for me and I was able to develop 2013-platform workflows and run it.</p>  <p>HTH!</p>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint 2013 App fails with custom FBA login page</title>
      <link>https://docs.microsoft.com/archive/blogs/sridhara/sharepoint-2013-app-fails-with-custom-fba-login-page</link>
      <pubDate>Fri, 21 Nov 2014 14:12:28 GMT</pubDate>
      <dc:creator><![CDATA[SridharRaghunathan-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sridhara/2014/11/21/sharepoint-2013-app-fails-with-custom-fba-login-page/</guid>
      <description><![CDATA[I recently worked a support ticket that resulted in the discovery of a rather acute problem but one...]]></description>
      <content:encoded><![CDATA[<p>I recently worked a support ticket that resulted in the discovery of a rather acute problem but one that might go unnoticed except in the case when SharePoint hosted apps are used in an FBA enabled site where a custom login page is used by FBA.</p>  <p>I don’t wish to cover the well documented and easily searchable part of how to <a href="https://blogs.msdn.com/b/kaevans/archive/2010/07/09/creating-a-custom-login-page-for-sharepoint-2010.aspx" target="_blank">create a custom login page</a> for SharePoint 2013 in this post (I know that link is for SharePoint 2010, but it’s pretty much the same for SharePoint 2013 as well).&#160; Instead I’ll delve into the problem in hand and the solution.</p>  <p>Assume that we have our custom login page created and deployed to <em>C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\LAYOUTS\CustFormsLogin </em>as shown in the below picture.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8037.image_492F7D20.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8037.image_5F00_492F7D20.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1121.image_thumb_3FD6489D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1121.image_5F00_thumb_5F00_3FD6489D.png" width="746" height="215" /></a></p>  <p>The way we tell the SharePoint web application that it needs to use our custom login page instead of the default, is by setting the <em>Custom Sign In Page </em>of the appropriate zone of the web application to point to the relative path of the custom login page.</p>  <p>Below are the quick steps along with screenshots for quicker understanding.</p>  <p>1. Click <em>Manage web applications</em>.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5287.image_1D1510E0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5287.image_5F00_1D1510E0.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1004.image_thumb_45B37CE7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1004.image_5F00_thumb_5F00_45B37CE7.png" width="629" height="259" /></a></p>  <p>2. Click <em>Authentication Providers</em> after selecting the web application.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3513.image_50DF97E2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3513.image_5F00_50DF97E2.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5428.image_thumb_797E03E9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5428.image_5F00_thumb_5F00_797E03E9.png" width="826" height="240" /></a></p>  <p>3. Select the zone where FBA is configured.&#160; In my case, I’ve configured FBA in my <em>Default</em> zone.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4807.image_0B5D2868.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4807.image_5F00_0B5D2868.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7573.image_thumb_3AAE9DF2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7573.image_5F00_thumb_5F00_3AAE9DF2.png" width="752" height="362" /></a></p>  <p>4. Scroll to the bottom of the dialog to find <em>Sign In Page URL</em> and set the relative path to where our custom login page is deployed to on the server.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8081.image_3391F22B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8081.image_5F00_3391F22B.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3632.image_thumb_279001F7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3632.image_5F00_thumb_5F00_279001F7.png" width="536" height="175" /></a></p>  <p>After this, if all is well, we should see our custom login page once we browse to a site collection on the web application and should be able to login without issues.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6327.image_6BD2F9F4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6327.image_5F00_6BD2F9F4.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2134.image_thumb_2B9F712B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2134.image_5F00_thumb_5F00_2B9F712B.png" width="816" height="377" /></a></p>  <p>But once we click on a SharePoint Hosted App that’s installed in this site collection.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4075.image_08DE396E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4075.image_5F00_08DE396E.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6661.image_thumb_5E919243.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6661.image_5F00_thumb_5F00_5E919243.png" width="811" height="416" /></a></p>  <p>We’ll get to see this error.&#160; Had we used the default login page, we wouldn’t have hit this issue in the first place.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5556.image_7070B6C1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5556.image_5F00_7070B6C1.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7484.image_thumb_2E00A53C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7484.image_5F00_thumb_5F00_2E00A53C.png" width="715" height="196" /></a></p>  <p>Oh yes, the above (IMO, more descriptive) error is because I had the option <em>Show friendly HTTP error messages</em> turned off (shown below) in IE browser.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1541.image_66ADDFFA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1541.image_5F00_66ADDFFA.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3162.image_thumb_615EF949.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3162.image_5F00_thumb_5F00_615EF949.png" width="446" height="570" /></a></p>    <p>If we have this option turned on, we’ll see a 403: Forbidden error instead.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1537.image_79F1274A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1537.image_5F00_79F1274A.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0728.image_thumb_29429CD5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0728.image_5F00_thumb_5F00_29429CD5.png" width="833" height="401" /></a></p>  <p>A fiddler trace will pretty much show the same 403 error code and if we probe the ULS, we’ll see entries talking about <em>access denied</em> (notably, EventIDs: <em>ftd0</em> and <em>ai1wu </em>the stack is provided below).</p>  <p>ftd0:</p>  <div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">   <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">     <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">Access Denied. Exception: Attempted to perform an unauthorized operation., StackTrace:  </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at Microsoft.SharePoint.Utilities.SPUtility.HandleAccessDenied(Exception ex)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at Microsoft.SharePoint.SPWeb.GetWebPartPageContent(Uri pageUrl, Int32 pageVersion, PageView requestedView, HttpContext context, Boolean forRender, Boolean includeHidden, Boolean mainFileRequest, Boolean fetchDependencyInformation, Boolean&amp; ghostedPage, String&amp; siteRoot, Guid&amp; siteId, Int64&amp; bytes, Guid&amp; docId, UInt32&amp; docVersion, String&amp; timeLastModified, Byte&amp; level, Object&amp; buildDependencySetData, UInt32&amp; dependencyCount, Object&amp; buildDependencies, SPWebPartCollectionInitialState&amp; initialState, Object&amp; oMultipleMeetingDoclibRootFolders, String&amp; redirectUrl, Boolean&amp; ObjectIsList, Guid&amp; listId)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.FetchWebPartPageInformationForInit(HttpContext context, SPWeb spweb, Boolean mainFileRequest, String path, Boolean impersonate, Boolean&amp; isAppWeb, Boolean&amp; fGhostedPage, Guid&amp; docId, UInt32&amp; docVersion, String&amp; timeLastModified, SPFileLevel&amp; spLevel, String&amp; masterPageUrl, String&amp; customMasterPageUrl, String&amp; webUrl, String&amp; siteUrl, Guid&amp; siteId, Object&amp; buildDependencySetData, SPWebPartCollectionInitialState&amp; initialState, String&amp; siteRoot, String&amp; redirectUrl, Object&amp; oMultipleMeetingDoclibRootFolders, Boolean&amp; objectIsList, Guid&amp; listId, Int64&amp; bytes)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.GetFileForRequest(HttpContext context, SPWeb web, Boolean exclusion, String virtualPath)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.InitContextWeb(HttpContext context, SPWeb web)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at Microsoft.SharePoint.WebControls.SPControl.SPWebEnsureSPControl(HttpContext context)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.GetContextWeb(HttpContext context)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.PostResolveRequestCacheHandler(Object oSender, EventArgs ea)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus&amp; notificationStatus)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus&amp; notificationStatus)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)  .</pre>
<!--CRLF--></div>
</div>

<p>ai1wu:</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">System.UnauthorizedAccessException: Access <span style="color: #0000ff">is</span> denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)), StackTrace:   </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at Microsoft.SharePoint.SPWeb.InitWeb()    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at Microsoft.SharePoint.SPWeb.get_EnableMinimalDownload()    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at Microsoft.SharePoint.Utilities.SPUtility.Redirect(String url, SPRedirectFlags flags, HttpContext context, String queryString)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at Microsoft.SharePoint.Utilities.SPUtility.HandleAccessDenied(HttpContext context)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at Microsoft.SharePoint.Utilities.SPUtility.HandleAccessDenied(Exception ex)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at Microsoft.SharePoint.SPWeb.GetWebPartPageContent(Uri pageUrl, Int32 pageVersion, PageView requestedView, HttpContext context, Boolean forRender, Boolean includeHidden, Boolean mainFileRequest, Boolean fetchDependencyInformation, Boolean&amp; ghostedPage, String&amp; siteRoot, Guid&amp; siteId, Int64&amp; bytes, Guid&amp; docId, UInt32&amp; docVersion, String&amp; timeLastModified, Byte&amp; level, Object&amp; buildDependencySetData, UInt32&amp; dependencyCount, Object&amp; buildDependencies, SPWebPartCollectionInitialState&amp; initialState, Object&amp; oMultipleMeetingDoclibRootFolders, String&amp; redirectUrl, Boolean&amp; ObjectIsList, Guid&amp; listId)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.FetchWebPartPageInformationForInit(HttpContext context, SPWeb spweb, Boolean mainFileRequest, String path, Boolean impersonate, Boolean&amp; isAppWeb, Boolean&amp; fGhostedPage, Guid&amp; docId, UInt32&amp; docVersion, String&amp; timeLastModified, SPFileLevel&amp; spLevel, String&amp; masterPageUrl, String&amp; customMasterPageUrl, String&amp; webUrl, String&amp; siteUrl, Guid&amp; siteId, Object&amp; buildDependencySetData, SPWebPartCollectionInitialState&amp; initialState, String&amp; siteRoot, String&amp; redirectUrl, Object&amp; oMultipleMeetingDoclibRootFolders, Boolean&amp; objectIsList, Guid&amp; listId, Int64&amp; bytes)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.GetFileForRequest(HttpContext context, SPWeb web, Boolean exclusion, String virtualPath)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.InitContextWeb(HttpContext context, SPWeb web)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at Microsoft.SharePoint.WebControls.SPControl.SPWebEnsureSPControl(HttpContext context)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.GetContextWeb(HttpContext context)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.PostResolveRequestCacheHandler(Object oSender, EventArgs ea)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus&amp; notificationStatus)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus&amp; notificationStatus)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white"> at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)    </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4"> at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)</pre>
<!--CRLF--></div>
</div>

<p>Looking at the stack we can guess that the app redirection process is not able to get hold of a valid <a href="https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb(v=office.15).aspx" target="_blank">SPWeb</a> object to move on with its operation and hence failed.&#160; We have successfully reproduced the problem now!</p>

<p><strong>Solution</strong>:</p>

<p>The solution to this (at least the path I took) was to figure out how out of the box forms login page works.&#160; Switching the web application in question to use the default login page, I realized that the default forms login page was served from a different location other than the 15 hive (which happens to be the default location most developers deploy their custom login page to).&#160; The default forms login page was indeed served from a folder (configured as a virtual directory) right under the root of the IIS web site that’s running SharePoint.</p>

<p>The default forms login page <em>default.aspx </em>is served from a virtual directory named <em>_forms</em>.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2018.image_690F140B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2018.image_5F00_690F140B.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4024.image_thumb_63C02D5A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4024.image_5F00_thumb_5F00_63C02D5A.png" width="894" height="409" /></a></p>



<p>Looking this virtual directory up from IIS Manager, I was able to determine the above fact.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4466.image_5CA38193.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4466.image_5F00_5CA38193.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6560.image_thumb_4C2B1098.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6560.image_5F00_thumb_5F00_4C2B1098.png" width="891" height="222" /></a></p>

<p>Having learnt this, the solution appeared to be very simple.&#160; I copied over my <em>CustFormsLogin </em>folder I had deployed under the <em>15 hive</em> directly under the root of my SharePoint’s IIS web site and configured it as a virtual directory.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5857.image_56EAF89E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5857.image_5F00_56EAF89E.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1184.image_thumb_491B4354.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1184.image_5F00_thumb_5F00_491B4354.png" width="892" height="337" /></a></p>

<p>I then configured the <em>Custom Sign In Page</em> to point to the <em>default.aspx</em> located in the newly created virtual directory.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7713.image_459CB26A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7713.image_5F00_459CB26A.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1805.image_thumb_553F4E2C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1805.image_5F00_thumb_5F00_553F4E2C.png" width="602" height="191" /></a></p>

<p>Now, when I browse to the site collection, I get to see the custom login page deployed to the root of the SharePoint IIS web site.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7776.image_327E166F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7776.image_5F00_327E166F.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3438.image_thumb_0909D52F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3438.image_5F00_thumb_5F00_0909D52F.png" width="853" height="407" /></a></p>

<p>And once I login and click on the SharePoint hosted app’s hyperlink, I am correctly redirected to my custom login page again.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3872.image_6CFBA6F4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3872.image_5F00_6CFBA6F4.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6567.image_thumb_438765B4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6567.image_5F00_thumb_5F00_438765B4.png" width="851" height="400" /></a></p>



<p>And needless to say, I can login and see the sample app too.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6825.image_3C6AB9ED.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6825.image_5F00_3C6AB9ED.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3632.image_thumb_39585BF8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3632.image_5F00_thumb_5F00_39585BF8.png" width="901" height="281" /></a></p>

<p><strong>Reasoning for this solution</strong>:</p>

<p>Sounds like this has to do with the way app redirection is performed that it constructs the relative path to custom login page based off of the root IIS web site path that SharePoint is running on.&#160; So, while it could figure out how to get to <em>https://servername/custformslogin/default.aspx</em> after the change, it couldn’t figure out how to get to <em>https://servername/_layouts/15/custformslogin/default.aspx </em>because the <em>_layouts\15\custformslogin</em> folder structure isn’t present directly under the root IIS web site that SharePoint is running on.</p>

<p>Hope this is helpful if you happen to hit this error at some point in time!</p>]]></content:encoded>
    </item>
    <item>
      <title>F5 debugging fails for any SharePoint project types using Visual Studio Professional 2012</title>
      <link>https://docs.microsoft.com/archive/blogs/sridhara/f5-debugging-fails-for-any-sharepoint-project-types-using-visual-studio-professional-2012</link>
      <pubDate>Mon, 08 Sep 2014 06:33:48 GMT</pubDate>
      <dc:creator><![CDATA[SridharRaghunathan-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sridhara/2014/09/08/f5-debugging-fails-for-any-sharepoint-project-types-using-visual-studio-professional-2012/</guid>
      <description><![CDATA[Recently I had an opportunity to troubleshoot and fix an issue with not being able to perform F5...]]></description>
      <content:encoded><![CDATA[<p>Recently I had an opportunity to troubleshoot and fix an issue with not being able to perform F5 debugging using Visual Studio Professional 2012 with “any” SharePoint 2013 project types.</p>  <p>We were able to manually attach VS debugger to the SharePoint process (w3wp.exe) and debug it, however, if we press F5 (or DEBUG –&gt; Start Debugging from VS), we see the following message box in VS.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7215.image_31690C06.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7215.image_5F00_31690C06.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5050.image_thumb_00721ACF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5050.image_5F00_thumb_5F00_00721ACF.png" width="573" height="260" /></a></p>  <p>Here’s some information on the environment where we were facing this issue.</p>  <p>Visual Studio Professional 2012 version 11.0.50727.1 with Microsoft Office Developer Tools for Visual Studio 2012 ENU version 11.0.60226.0.</p>  <p>Microsoft Team Foundation Server 2013 Update 2 version 12.0.30324.0.</p>  <p>Team Explorer for Microsoft Visual Studio 2013 version 12.0.21005.13.</p>  <p>On debugging this I found that the VS debugger process (msvsmon.exe) couldn’t attach to the w3wp.exe process (I was testing with a Visual WebPart project that runs on w3wp.exe) because it couldn’t load the following debugger component:</p>  <p><font face="Consolas">Microsoft.Workflow.DebugController, Version=12.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</font></p>  <p>Checking the GAC, I saw an earlier version of this DLL installed.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7080.image_35A6F368.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7080.image_5F00_35A6F368.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7384.image_thumb_2773CA9F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7384.image_5F00_thumb_5F00_2773CA9F.png" width="742" height="192" /></a></p>  <p>I don’t know the exact reason why this problem happens with SharePoint project types (and only with SharePoint project/item templates, because F5 debugging works fine for other VS project/items templates).&#160; But my best guess is that Office Developer Tools is not looking at the right place to determine which version of <strong>Microsoft.Workflow.DebugController</strong> it should use at run time.</p>  <p>The <strong><u>fix</u> </strong>turned out to be simple.&#160; VS debugger process <strong>C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Remote Debugger\x64\msvsmon.exe</strong> was trying to load the incorrect version of debug controller (of course, as dictated by Office Developer Tools).&#160; I found there’s configuration file MSVSMON.EXE uses also located in the same path pointed out above <strong>C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Remote Debugger\x64\msvsmon.exe.config</strong>.&#160; The default entries in this config file is shown below.</p>  <div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">   <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">     <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">&lt;?xml version =<span style="color: #006080">&quot;1.0&quot;</span>?&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">&lt;configuration&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">    &lt;startup useLegacyV2RuntimeActivationPolicy=<span style="color: #006080">&quot;true&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">        &lt;supportedRuntime version=<span style="color: #006080">&quot;v4.0.30319&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">        &lt;supportedRuntime version=<span style="color: #006080">&quot;v2.0.50727&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">        &lt;supportedRuntime version=<span style="color: #006080">&quot;v1.1.4322&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">    &lt;/startup&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">    &lt;runtime&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">        &lt;loadFromRemoteSources enabled=<span style="color: #006080">&quot;true&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">    &lt;/runtime&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">&lt;/configuration&gt;</pre>
<!--CRLF--></div>
</div>

<p>I just added an &lt;assemblyBinding/&gt; element and redirected calls to 12.0.0.0 version of Microsoft.Workflow.DebugController to 11.0.0.0 version as shown below.</p>

<div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">
  <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">
    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">&lt;?xml version =<span style="color: #006080">&quot;1.0&quot;</span>?&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">&lt;configuration&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">    &lt;startup useLegacyV2RuntimeActivationPolicy=<span style="color: #006080">&quot;true&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">        &lt;supportedRuntime version=<span style="color: #006080">&quot;v4.0.30319&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">        &lt;supportedRuntime version=<span style="color: #006080">&quot;v2.0.50727&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">        &lt;supportedRuntime version=<span style="color: #006080">&quot;v1.1.4322&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">    &lt;/startup&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">    &lt;runtime&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">        &lt;loadFromRemoteSources enabled=<span style="color: #006080">&quot;true&quot;</span>/&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">      &lt;assemblyBinding xmlns=<span style="color: #006080">&quot;urn:schemas-microsoft-com:asm.v1&quot;</span>&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">        &lt;dependentAssembly&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">          &lt;assemblyIdentity name=<span style="color: #006080">&quot;Microsoft.Workflow.DebugController&quot;</span> publicKeyToken=<span style="color: #006080">&quot;31bf3856ad364e35&quot;</span> culture=<span style="color: #006080">&quot;neutral&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">          &lt;bindingRedirect oldVersion=<span style="color: #006080">&quot;12.0.0.0&quot;</span> newVersion=<span style="color: #006080">&quot;11.0.0.0&quot;</span> /&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">        &lt;/dependentAssembly&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">      &lt;/assemblyBinding&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">    &lt;/runtime&gt;</pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">&lt;/configuration&gt;</pre>
<!--CRLF--></div>
</div>

<p>Closed all instances of Visual Studio Professional 2012 and opened it.&#160; Now F5 debugging for all projects (including SharePoint) works like charm!</p>

<p>Hope this helps!</p>]]></content:encoded>
    </item>
    <item>
      <title>FIX: SharePoint 2013 Workflow recursion prevention – Part 3</title>
      <link>https://docs.microsoft.com/archive/blogs/sridhara/fix-sharepoint-2013-workflow-recursion-prevention-part-3</link>
      <pubDate>Fri, 22 Aug 2014 06:53:19 GMT</pubDate>
      <dc:creator><![CDATA[SridharRaghunathan-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sridhara/2014/08/22/fix-sharepoint-2013-workflow-recursion-prevention-part-3/</guid>
      <description><![CDATA[Following FIX: SharePoint 2013 Workflow recursion prevention – Part 1, this post will walk you...]]></description>
      <content:encoded><![CDATA[<p>Following <a href="https://blogs.msdn.com/b/sridhara/archive/2014/08/19/fix-sharepoint-2013-workflow-recursion-prevention-part-1.aspx" target="_blank">FIX: SharePoint 2013 Workflow recursion prevention – Part 1</a>, this post will walk you through the process of designing your Visual Studio 2013 workflow that creates a list item on another list and invokes the workflow associated with that list using the new REST APIs released through SharePoint 2013 May 2014 CU as pointed out in part 1 of this series.&#160; If you haven’t read through part 1, I suggest you do to get some background that will help you appreciate this post.</p>  <p><strong>The Scenario</strong>:</p>  <p>The scenario is the same as what’s provided in <a href="https://blogs.msdn.com/b/sridhara/archive/2014/08/21/fix-sharepoint-2013-workflow-recursion-prevention-part-2.aspx" target="_blank">FIX: SharePoint 2013 Workflow recursion prevention – Part 2</a>.&#160; Only difference is that these are workflows built using Visual Studio.&#160; We are going to take a look at how to leverage the new REST APIs to trigger off a workflow associated with a given list when item is created/updated in the list.</p>  <p><u>RECOMMENDATION</u>: If you are using Visual Studio 2012 with Office Developer Tools, consider switching to Visual Studio 2013 with the latest Microsoft Office Developer Tools for Visual Studio 2013 – July 2014 Update (as on 22-August-2014).&#160; There were two problem I ran into using Visual Studio 2012 with Microsoft Office Developer Tools for Visual Studio 2012.</p>  <p>1) When re-deploying a workflow solution through Visual Studio 2012 after performing some changes, the changes won’t be reflected in the workflow instance (when it runs).&#160; This is because there’s perhaps some sort of file handle that’s not completely released when the process <em>vssphost5.exe</em> performs the deployment for us.</p>  <p>The workaround is to kill <em>vssphost5.exe</em> process before performing a re-deployment.</p>  <p>2) Got a weird error when I placed just the “CreateListItem” activity that simply creates an item on a list.&#160; The error is:</p>  <div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; border-right: silver 1px solid; width: 97.5%; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; max-height: 200px; background-color: #f4f4f4">   <div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">     <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">System.FormatException: Expected hex 0x <span style="color: #0000ff">in</span> <span style="color: #006080">&quot;{0}&quot;</span>. </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">   at System.Guid.GuidResult.SetFailure(ParseFailureKind failure, String failureMessageID Object failureMessageFormatArgument, String failureArgumentName, Exceptio innerException) </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">   at System.Guid.TryParseGuidWithHexPrefix(String guidString, GuidResult&amp;amp; result) </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">   at System.Guid.TryParseGuid(String g, GuidStyles flags, GuidResult&amp;amp; result) </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">   at System.Guid.Parse(String input) </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">   at Microsoft.Activities.Expressions.ParseGuid.Execute(CodeActivityContext context) </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">   at System.Activities.CodeActivity`1.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: #f4f4f4">   at System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager) </pre>
<!--CRLF-->

    <pre style="border-top-style: none; overflow: visible; font-size: 8pt; font-family: &#39;Courier New&#39;, courier, monospace; width: 100%; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; border-left-style: none; line-height: 12pt; padding-right: 0px; background-color: white">   at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)</pre>
<!--CRLF--></div>
</div>

<p>The reason for this error and solution is documented is my good friend Chandrasekar’s blog <a href="https://blogs.msdn.com/b/chandru/archive/2013/07/09/lookup-activities-in-visual-studio-for-sp-2013-workflows.aspx" target="_blank">post</a> (thanks Chandru!).&#160; The context there is list lookup activities.&#160; But the resolution is the same because technically “CreateListItem” is also a sort of a list lookup activity on which we can create items.</p>

<p>Having said that let’s now look at our objective.</p>

<p>VSList1 has the workflow VSWF1 associated with it and it’s designed to create a list item on another list VSList2.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3580.image_3CD66EBF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3580.image_5F00_3CD66EBF.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3060.image_thumb_32C1CD94.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3060.image_5F00_thumb_5F00_32C1CD94.png" width="1036" height="636" /></a></p>

<p>The “CreateListItem” activity is declared like shown below.&#160; It creates an item on VSList2 and it returns <em>ItemId</em> which is the integer value (list item ID – the sequence number).&#160; We create a new variable named <strong><em>NewItemId</em></strong> to store this value.</p>

<p><strong>NOTE</strong>: This is one difference between a Visual Studio workflow and SharePoint Designer workflow when we try to create an item.&#160; While the return value we get from “CreateListItem” activity is an integer value, the return value from “Create List Item” is the GUID of the item that got created.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6560.image_28AD2C69.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6560.image_5F00_28AD2C69.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8015.image_thumb_463F0768.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8015.image_5F00_thumb_5F00_463F0768.png" width="1047" height="495" /></a></p>

<p>For the actual list item, we simply write some text to the title property as shown below.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4251.image_18713EA3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4251.image_5F00_18713EA3.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5102.image_thumb_100D694C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5102.image_5F00_thumb_5F00_100D694C.png" width="855" height="362" /></a></p>

<p>On VSList2, we associate another workflow named VSWF2.&#160; This workflow simply writes “VSWF2 triggered successfully on item creation.” to history list as shown below.</p>

<p><strong>NOTE</strong>: It’s not required that this workflow should be a Visual Studio workflow, it can be a SharePoint Designer workflow as well.&#160; Just to keep this post simple, I am using another VS workflow.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7658.image_0DF06A83.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7658.image_5F00_0DF06A83.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7115.image_thumb_11AE0F53.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7115.image_5F00_thumb_5F00_11AE0F53.png" width="1033" height="711" /></a></p>

<p>After deploying these workflows, we go to VSList1, create an item and start off VSWF1 manually on that item.&#160; We should see the following in workflow status page.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4452.image_6E9D9DE2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4452.image_5F00_6E9D9DE2.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0028.image_thumb_05103C6A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0028.image_5F00_thumb_5F00_05103C6A.png" width="1033" height="468" /></a></p>

<p>And then we visit VSList2 and see that the new item is created successfully.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3515.image_3B9DE7AE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3515.image_5F00_3B9DE7AE.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2577.image_thumb_41788B47.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2577.image_5F00_thumb_5F00_41788B47.png" width="445" height="247" /></a></p>

<p><strong>The problem</strong>:</p>

<p>However, the /workflow.aspx page indicates that there were no VSWF2 instance ever run whereas it should have since we have setup VSWF2 workflow to auto-start when it is created/updated.&#160; This is the actual problem.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0702.image_349E3529.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0702.image_5F00_349E3529.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7026.image_thumb_3D3E8DB5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7026.image_5F00_thumb_5F00_3D3E8DB5.png" width="988" height="370" /></a></p>

<p><strong>Fix</strong>:</p>

<p>We basically need to do the same things we did for SharePoint Designer Workflow (walk through <a href="https://blogs.msdn.com/b/sridhara/archive/2014/08/21/fix-sharepoint-2013-workflow-recursion-prevention-part-2.aspx" target="_blank">here</a>).&#160; We open VSWF1 solution and add a “BuildDynamicValue” activity.&#160; Set its <em>Properties</em> to what’s shown below.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8547.image_08BDBB6D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8547.image_5F00_08BDBB6D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8883.image_thumb_1955B65B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8883.image_5F00_thumb_5F00_1955B65B.png" width="507" height="339" /></a></p>

<p>We create a variable named “RespContent” of type “DynamicValue”.&#160; We won’t see the “DynamicValue” type in the dropdown immediately so we’ll have to choose “Browse for Types” and search for “DynamicValue” and pick it up as shown in the pictures below.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1031.image_303487D7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1031.image_5F00_303487D7.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4532.image_thumb_0E68AF46.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4532.image_5F00_thumb_5F00_0E68AF46.png" width="764" height="581" /></a></p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4405.image_40EC0CB8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4405.image_5F00_40EC0CB8.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5025.image_thumb_693B3F0C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5025.image_5F00_thumb_5F00_693B3F0C.png" width="546" height="303" /></a></p>

<p>Assign the “ReqHeader” variable to the <em>Result</em> property of <em>BuildDynamicValue </em>activity.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7077.image_5C60E8EE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7077.image_5F00_5C60E8EE.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8816.image_thumb_6501417A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8816.image_5F00_thumb_5F00_6501417A.png" width="1061" height="427" /></a></p>

<p>Next we drop a “LookupWorkflowContextProperty” activity.&#160; We create a new variable named “SiteUrl” of type string.&#160; Click on “LookupWorkflowContextProperty” and in the properties windows of Visual Studio 2013, choose “Current Site URL” for “PropertyName” and set “Result” to the new string variable “SiteUrl” we just created as shown below.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6232.image_30806F32.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6232.image_5F00_30806F32.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0383.image_thumb_06BCF43F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0383.image_5F00_thumb_5F00_06BCF43F.png" width="1476" height="610" /></a></p>

<p>We did this to pick up the current site’s URL that we need to use later for sending the HttpSend requests.</p>

<p>The first thing we need is the GUID of WFList2.&#160; To get that design a HttpSend method and get the GUID.&#160; Drop a HttpSend activity.&#160; Choose <em>GET</em> for the <em>Method</em> in the properties window of HttpSend activity.&#160; Set <em>RequestHeaders</em> property to <em>ReqHeader</em>, the variable we created above.&#160; For the <em>Uri</em> property provide the following value:</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0218.image_717EC8C9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0218.image_5F00_717EC8C9.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8270.image_thumb_77596C62.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8270.image_5F00_thumb_5F00_77596C62.png" width="653" height="242" /></a></p>

<p>Hit OK.&#160; We create a new variable named <em>ResponseContent</em> of type DynamicValue and assign that to <em>ResponseContent</em> property in HttpSend activity.&#160; Now our HttpSend activity should look like the below.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7506.image_27A04119.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7506.image_5F00_27A04119.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2260.image_thumb_7DDCC625.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2260.image_5F00_thumb_5F00_7DDCC625.png" width="1157" height="341" /></a></p>

<p>We drop a “GetDynamicValueProperty&lt;T&gt;” activity next.&#160; When we get the small window to select the type for &lt;T&gt; we choose System.Guid (again use Browse for Types… and pick Guid by searching for it).&#160; Click on “GetDynamicValueProperty&lt;T&gt;” and set <em>PropertyName</em> field in the properties window to <font color="#000000" face="Consolas"><strong>&quot;d/Id&quot;</strong></font>.&#160; For the <em>Source</em> field choose the variable <em>ResponseContent</em> that we used to store the output from the above HttpSend method call.&#160; Create a new variable named <em>WFList2Guid</em> of type System.Guid and set that as the value for <em>Result</em> field in “GetDynamicValueProperty&lt;T&gt;” properties window.&#160; Now we should have the workflow designed as shown below.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5277.image_2FF3F0A3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5277.image_5F00_2FF3F0A3.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3482.image_thumb_18E56F67.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3482.image_5F00_thumb_5F00_18E56F67.png" width="1186" height="259" /></a></p>

<p>Now that we have the GUID of WFList2 stored in the variable <em>List2Guid</em>, we move forward to pick up the workflow subscription Id of the workflow we are interested in by calling <font face="Consolas"><strong>/_api/SP.WorkflowServices.WorkflowSubscriptionService.Current/EnumerateSubscriptionsByList(guid'&quot; + List2Guid.ToString() + &quot;')?select=Id</strong></font>.&#160; This again is a HttpSend method so we go ahead and design it.&#160; The only think to note is that this will be a HTTP POST request.&#160; The completed design should look like below.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3884.image_1251EFD7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3884.image_5F00_1251EFD7.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5751.image_thumb_018A4529.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5751.image_5F00_thumb_5F00_018A4529.png" width="1388" height="385" /></a></p>

<p>Next we drop two more “GetDynamicValueProperty&lt;T&gt;”.&#160; We design the first one (the type should be GetDynamicValueProperty&lt;DynamicValue&gt;) as shown below.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6470.image_3DF29406.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6470.image_5F00_3DF29406.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3630.image_thumb_5B846F05.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3630.image_5F00_thumb_5F00_5B846F05.png" width="1391" height="322" /></a></p>

<p><strong>NOTE</strong>: As to how we decided to use “<font face="Consolas">d/results(0)</font>”, please review the part about using Fiddler to determine this in <a href="https://blogs.msdn.com/b/sridhara/archive/2014/08/21/fix-sharepoint-2013-workflow-recursion-prevention-part-2.aspx" target="_blank">part 2</a>.&#160; But for this walk through, we use Fiddler, replay the request to get workflow subscriptions on list VSList2 and then we choose the correct one.&#160; Below is the response we get from Fiddler.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8875.image_18C523CD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8875.image_5F00_18C523CD.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2476.image_thumb_10614E76.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2476.image_5F00_thumb_5F00_10614E76.png" width="594" height="449" /></a></p>

<p>The response shows we have 3 workflow subscribed to this list.&#160; But the one we need is the first one whose name is “VSWF2 – Workflow Start” which is at index 0.&#160; So we use “<font face="Consolas">d/result(0)</font>”.&#160; The 2nd and 3rd are the triggers to start this workflow when an item is added or updated.</p>

<p>We create a variable named <em>VSWF2SubscriptionId</em> of type System.Guid.&#160; And we design the second one (the type should be GetDynamicValueProperty&lt;System.Guid&gt;) as shown below.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3326.image_5BE07C2D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3326.image_5F00_5BE07C2D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3223.image_thumb_2BD62AAC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3223.image_5F00_thumb_5F00_2BD62AAC.png" width="1394" height="386" /></a></p>

<p>Now we have both the parameters we need to call <em>StartWorkflowOnListItemBySubscriptionId</em> REST method.&#160; We’ll design our next HttpSend method to do exactly that.&#160; The <em>Uri</em> property of our HttpSend method will be what’s shown below.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2185.image_3DD2486C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2185.image_5F00_3DD2486C.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7356.image_thumb_46DED3ED.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7356.image_5F00_thumb_5F00_46DED3ED.png" width="1275" height="168" /></a></p>

<p>The complete design of this final HttpSend method should look like what’s shown below.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1856.image_6B8FEB64.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1856.image_5F00_6B8FEB64.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2742.image_thumb_0921C664.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2742.image_5F00_thumb_5F00_0921C664.png" width="1397" height="387" /></a></p>

<p>We’ve just assigned the <em>ResponseContent </em>field to the <em>ResponseContent</em> variable we created above (we are reusing the same variable).&#160; But it actually does not matter for this REST method call.&#160; And that’s it!!</p>

<p>Re-deploy VSWF2 back to VSList1.&#160; We then browse to VSList1, create another item and start off VSWF1 on that item manually.&#160; Now we browse to VSList2 and we can see the new item that was created by VSWF1 workflow.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1602.image_2CFA77F1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1602.image_5F00_2CFA77F1.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5367.image_thumb_3D9272DF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5367.image_5F00_thumb_5F00_3D9272DF.png" width="655" height="381" /></a></p>

<p>And now if we visit the workflow status page we should see the following.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8867.image_5066F689.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8867.image_5F00_5066F689.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5224.image_thumb_59074F15.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5224.image_5F00_thumb_5F00_59074F15.png" width="1137" height="391" /></a></p>

<p>If we click the <em>Completed</em> hyperlink, we should see the text we logged to the workflow history list.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5187.image_76992A14.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5187.image_5F00_76992A14.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1754.image_thumb_0FB4844D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1754.image_5F00_thumb_5F00_0FB4844D.png" width="1023" height="446" /></a></p>

<p>I hope these walkthroughs posted in this series were helpful and gives everyone some basic insights into SharePoint REST APIs.</p>

<p><strong>Tip</strong>:</p>

<p>Everyone should already know this, but a very quick way to find out SharePoint REST methods is by appending the <em><strong>$metadata</strong></em> attribute to the <strong><em>_api</em></strong> endpoint (e.g., https://sp/_api/$metadata).&#160; This will get us all REST methods and their input/output parameters, which I think will be quite helpful.</p>

<p>For e.g., I can check the method <em>EnumerateSubscriptionsByList</em> using this technique as shown below.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3681.image_46422F91.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3681.image_5F00_46422F91.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5657.image_thumb_0C233CE5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5657.image_5F00_thumb_5F00_0C233CE5.png" width="976" height="620" /></a></p>

<p>Happy exploring!</p>]]></content:encoded>
    </item>
    <item>
      <title>FIX: SharePoint 2013 Workflow recursion prevention – Part 2</title>
      <link>https://docs.microsoft.com/archive/blogs/sridhara/fix-sharepoint-2013-workflow-recursion-prevention-part-2</link>
      <pubDate>Thu, 21 Aug 2014 09:40:44 GMT</pubDate>
      <dc:creator><![CDATA[SridharRaghunathan-MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sridhara/2014/08/21/fix-sharepoint-2013-workflow-recursion-prevention-part-2/</guid>
      <description><![CDATA[Following FIX: SharePoint 2013 Workflow recursion prevention – Part 1, this post will walk you...]]></description>
      <content:encoded><![CDATA[<p>Following <a href="https://blogs.msdn.com/b/sridhara/archive/2014/08/19/fix-sharepoint-2013-workflow-recursion-prevention-part-1.aspx" target="_blank">FIX: SharePoint 2013 Workflow recursion prevention – Part 1</a>, this post will walk you through the processes of designing your workflow that creates a list item on another list and invokes the workflow associated with that list using the new REST APIs released through SharePoint 2013 May 2014 CU as pointed out in part 1 of this series.&#160; If you haven’t read through part 1 of this series I suggest you do to get some background that will help you appreciate this post.</p>  <p><strong>The scenario</strong>:</p>  <p>List1 has a workflow Workflow1 associated with it.</p>  <p>Workflow1 can be set to auto-start on item adding/updating or set to manually start or both, it doesn’t matter.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5023.image_09FD9754.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5023.image_5F00_09FD9754.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5810.image_thumb_591ADFE8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5810.image_5F00_thumb_5F00_591ADFE8.png" width="994" height="325" /></a></p>  <p>Workflow1 is designed to create a list item on List2.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0572.image_48BF682F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0572.image_5F00_48BF682F.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1423.image_thumb_2E12CC16.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1423.image_5F00_thumb_5F00_2E12CC16.png" width="774" height="296" /></a></p>  <p>List2 has a workflow Workflow2 associated with it.</p>  <p>Workflow2 <strong>should</strong> have manually start workflow option enabled. (Allow this workflow to be manually started)</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4024.image_40E74FC0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4024.image_5F00_40E74FC0.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0677.image_thumb_4987A84C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0677.image_5F00_thumb_5F00_4987A84C.png" width="1001" height="408" /></a></p>  <p>Workflow2 simply logs the title of the list item in workflow history list.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8547.image_4DB18011.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8547.image_5F00_4DB18011.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2148.image_thumb_733AFD72.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2148.image_5F00_thumb_5F00_733AFD72.png" width="789" height="276" /></a></p>  <p><u>NOTE</u>: Both Workflow1 and Workflow2 are built on 2013 workflow platform.</p>  <p>Publish both the workflows and create an item on List1.&#160; Manually start Workflow1 on the list item and you should see that it completes successfully.</p>  <p>Now browse to List2 and you will see that a new list item was successfully created by Workflow1.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5734.image_29C8A8B7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5734.image_5F00_29C8A8B7.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8360.image_thumb_6F00FFE0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8360.image_5F00_thumb_5F00_6F00FFE0.png" width="501" height="445" /></a></p>  <p><strong>The problem</strong>:</p>  <p>But Workflow2 would never start off.&#160; Refer part 1 of this series, check ULS logs and you’ll see Workflow2 didn’t start because of workflow recursion prevention.</p>  <p><strong>Fix</strong>:</p>  <p>The fix is to leverage the new REST APIs exposed to start off Workflow2 from Workflow1.&#160; Let’s open Workflow1 in SharePoint Designer’s workflow editor.</p>  <p>We drop a “Build Dictionary” action just above the create item in list action with the following name/value pairs of type string.</p>  <p><font face="Consolas">accept: application/json;odata=verbose</font></p>  <p><font face="Consolas">content-type: application/json;odata=verbose</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7230.image_7E5461EF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7230.image_5F00_7E5461EF.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8182.image_thumb_23DDDF51.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8182.image_5F00_thumb_5F00_23DDDF51.png" width="644" height="423" /></a></p>  <p>Choose the dropdown against “(Output to <u>Variable: dictionary</u>)” and create a variable to type Dictionary named “ReqHeader”.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3240.image_5A6B8A95.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3240.image_5F00_5A6B8A95.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7002.image_thumb_402B2171.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7002.image_5F00_thumb_5F00_402B2171.png" width="642" height="196" /></a></p>  <p>Choose the dropdown against “(Output to <u>Variable: create</u>)” and create a new variable named “NewItemGuid”.&#160; It will be of type GUID.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0676.image_375B1925.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0676.image_5F00_375B1925.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7888.image_thumb_5CE49686.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7888.image_5F00_thumb_5F00_5CE49686.png" width="1149" height="92" /></a></p>  <p>Drop a “Call HTTP Web Service” action after the create item in list action.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3108.image_1B69E42D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3108.image_5F00_1B69E42D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8764.image_thumb_4F31DA7E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8764.image_5F00_thumb_5F00_4F31DA7E.png" width="922" height="199" /></a></p>  <p>Click “this”, use the … button against the textbox titled “Enter the HTTP web service URL”.&#160; This will bring up string builder dialog box.</p>  <p>Click “Add or Change Lookup”, change “Data source” dropdown to select “Workflow Context” and for “Field from source” choose “Current Site URL” and hit OK.</p>  <p>Append <strong><font face="Consolas">/_api/web/lists/GetByTitle('List2')/items?$filter=GUID eq '</font></strong> to the end of the current site URL token (watch out for the single open quote in the end, that is necessary too).</p>  <p>Click “Add or Change Lookup” again, change “Data source” dropdown to select “Workflow Variables and Parameters” and then choose “Variable: NewItemGuid” for “Field from source”.&#160; Hit OK.</p>  <p>The string builder dialog will now have the following string in it.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5076.image_4D14DBB5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5076.image_5F00_4D14DBB5.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1321.image_thumb_5DACD6A3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1321.image_5F00_thumb_5F00_5DACD6A3.png" width="695" height="530" /></a></p>  <p>We are calling the REST method GetByTitle passing it the title of the list we are interested in (for this scenario it’s List2).&#160; We are then asking for all the items filtered on the specific GUID which is the GUID of the item we just created in the create item in list action.</p>  <p>Hit OK on string builder dialog.&#160; The “Call HTTP Web Service” dialog should now look like this.&#160; Ensure you select “HTTP GET” for the HTTP method.&#160; And hit OK.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0272.image_5B8FD7DA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0272.image_5F00_5B8FD7DA.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5857.image_thumb_6C27D2C8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5857.image_5F00_thumb_5F00_6C27D2C8.png" width="626" height="349" /></a></p>  <p>Choose “Properties” option from the context menu of “Call HTTP Web Service” action.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1524.image_37A70080.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1524.image_5F00_37A70080.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2465.image_thumb_03262E38.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2465.image_5F00_thumb_5F00_03262E38.png" width="840" height="234" /></a></p>  <p>Set “RequestHeaders” to the request header variable you created and create a new variable of type dictionary named “RespContent” for “ResponseContent” as shown below.&#160; Hit OK.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5040.image_1A04FFB4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5040.image_5F00_1A04FFB4.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1385.image_thumb_11A12A5D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1385.image_5F00_thumb_5F00_11A12A5D.png" width="388" height="351" /></a></p>  <p>Drop a “Get an Item from a Dictionary” action after “Call HTTP Web Service” action and click “item by name or path” hyperlink.&#160; In the editor type <font face="Consolas"><strong>d/results(0)</strong></font>.</p>  <p>Click the dictionary hyperlink and choose “Variable: RespContent” from the dropdown.&#160; Click the item hyperlink and again choose “Variable: RespContent” from the dropdown.&#160; End result will be.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2337.image_3D717E4C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2337.image_5F00_3D717E4C.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0552.image_thumb_4611D6D8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0552.image_5F00_thumb_5F00_4611D6D8.png" width="1244" height="319" /></a></p>  <p>There are plenty of articles out there that talk about how to parse the JSON to get to the actual data we need so I am not going to cover that here.&#160; But remember we can use Fiddler to determine the structure of JSON result and we’ll use that knowledge to decide on how we will get to the result we need (for e.g., <font face="Consolas">d/results(0)</font>).</p>  <p>What we did above is that we want the value at <font face="Consolas">d/results(0) </font>from the RespContent dictionary variable we get back from the web service call.&#160; We are then storing the result again back in RespContent because the result is also of type dictionary.</p>  <p>Drop another “Get an Item from a Dictionary” action.&#160; Click on “item by name or path” hyperlink and type <font face="Consolas"><strong>Id</strong></font>.&#160; Click “dictionary” hyperlink and choose “Variable: RespContent”.&#160; Click the item hyperlink in “(Output to item)” and create a new variable named “NewItemId” of type integer as shown below.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7384.image_11910490.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7384.image_5F00_11910490.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6675.image_thumb_760C028C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6675.image_5F00_thumb_5F00_760C028C.png" width="1246" height="355" /></a></p>  <p>We did all these to get the ID (the sequence number) value of the list item we just created.&#160; Phew!!!&#160; This is because we need to know the ItemID of the list item we just created as we need to pass it to the StartWorkflowOnListItemBySubscriptionId REST method later.&#160; But we are just 30% into our design <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1411.wlEmoticon-smile_5A870089.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1411.wlEmoticon_2D00_smile_5F00_5A870089.png" /></p>  <p>The other parameter that StartWorkflowOnListItemBySubscriptionId needs is the workflow SubscriptionId.</p>  <p>We drop another “Call HTTP Web Service” action and construct our next REST call.&#160; This time we call <font face="Consolas"><strong>/_api/web/lists/GetByTitle('List2')</strong></font>.&#160; We set the same “ReqHeader” variable to this call.&#160; And set the same “RespContent” variable as we did before.&#160; The end result you should have in “Call HTTP Web Service” dialog is shown below.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8371.image_72AA6AE4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8371.image_5F00_72AA6AE4.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6507.image_thumb_6A46958D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6507.image_5F00_thumb_5F00_6A46958D.png" width="575" height="322" /></a></p>  <p>And in designer we should see.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8547.image_682996C4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8547.image_5F00_682996C4.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6864.image_thumb_3E661BD1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6864.image_5F00_thumb_5F00_3E661BD1.png" width="1271" height="379" /></a></p>  <p>We then add another “Get an Item from a Dictionary” action.&#160; Ask for <font face="Consolas"><strong>d/Id </strong></font><font face="Calibri">from “RespContent” variable and assign the output to a new variable named “List2Guid” of type GUID as shown below.</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1464.image_14A2A0DE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1464.image_5F00_14A2A0DE.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3414.image_thumb_0E0F214E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3414.image_5F00_thumb_5F00_0E0F214E.png" width="1276" height="406" /></a></p>  <p>Now the variable “List2Guid” will have the GUID of List2.&#160; We need this to get the workflow subscriptionId that we can get by calling an already available REST API called <strong><font face="Consolas">/_api/SP.WorkflowServices.WorkflowSubscriptionService.Current/EnumerateSubscriptionsByList</font></strong>.</p>  <p>We now drop another “Call HTTP Web Service” action and set it up get all workflow subscriptions.&#160; Here’s how string builder should look like for this call.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6505.image_4F5A23E7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6505.image_5F00_4F5A23E7.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2251.image_thumb_4DA95813.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2251.image_5F00_thumb_5F00_4DA95813.png" width="622" height="517" /></a></p>  <p>And we set the “HTTP method” option for this “Call HTTP Web Service” action to “HTTP POST” as shown below.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8463.image_4B8C594A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8463.image_5F00_4B8C594A.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7532.image_thumb_1F032964.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7532.image_5F00_thumb_5F00_1F032964.png" width="639" height="356" /></a></p>  <p>We should now have the workflow design as shown below.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/0572.image_63CF4D98.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/0572.image_5F00_63CF4D98.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8780.image_thumb_3A0BD2A5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8780.image_5F00_thumb_5F00_3A0BD2A5.png" width="1305" height="459" /></a></p>  <p>Now we have a tricky situation where we need to get the subscriptionId of the exact workflow that we are interested to start off.&#160; This is where Fiddler is very helpful.&#160; Again I’ll defer to the plethora of articles available online that tells us how to do a GET, POST REST calls using Fiddler.&#160; But I am going to rush on this piece a bit.</p>  <p>Through Fiddler (by submitting a POST request to the same REST method EnumerateSubscriptionsByList, we see the following output.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7178.image_41D3C547.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7178.image_5F00_41D3C547.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1780.image_thumb_154A9561.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1780.image_5F00_thumb_5F00_154A9561.png" width="512" height="540" /></a></p>  <p>Workflow2 happens to be the 3rd in the list of workflows associated to List2 so I can get that out using the 2nd index.&#160; So we drop two more “Get an Item from a Dictionary” actions.&#160; In the first action we ask for <font face="Consolas"><strong>d/results(2) </strong></font><font face="Calibri">from “RespContent” and we store the output again in “RespContent”.&#160; In the second action we ask for <font face="Consolas"><strong>Id</strong></font> which happens to be the SubscriptionId of Workflow2 on list List2 from “RespContent” again and store the result in a new variable named “SubscriptionId” of type GUID.&#160; Our workflow design should now look like below.</font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/1663.image_6467DDF5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/1663.image_5F00_6467DDF5.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/7824.image_thumb_4F95E575.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/7824.image_5F00_thumb_5F00_4F95E575.png" width="1315" height="533" /></a></p>  <p>Now we are at the final stage where we will start the workflow.</p>  <p>Drop our last “Call HTTP Web Service” action and call the new <strong><font face="Consolas">/_api/SP.WorkflowServices.WorkflowInstanceService.Current/StartWorkflowOnListItemBySubscriptionId</font></strong> REST method by passing in the SubscriptionId and NewItemId variables.&#160; Our string builder dialog should look like the below.&#160; (Ensure the parameter names of this method is exactly as it is shown below and that the values are enclosed within single quotes).</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2480.image_5A72C6BD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2480.image_5F00_5A72C6BD.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2867.image_thumb_31F3E4A9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2867.image_5F00_thumb_5F00_31F3E4A9.png" width="659" height="548" /></a></p>  <p>This will again be a POST request.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4442.image_1AE5636D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4442.image_5F00_1AE5636D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6404.image_thumb_6E5C3386.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6404.image_5F00_thumb_5F00_6E5C3386.png" width="652" height="366" /></a></p>  <p>After setting the “ReqHeader” correctly using the “Properties” context menu option for the last “Call HTTP Web Service” action, we drop a “Set Workflow Status” action.&#160; The completed Workflow1 should look like below.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/2158.image_76FC8C12.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/2158.image_5F00_76FC8C12.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/4113.image_thumb_2913B690.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/4113.image_5F00_thumb_5F00_2913B690.png" width="1342" height="601" /></a></p>  <p>That’s it!!</p>  <p>We Save/Publish our workflow, go to List1 and create a new item.&#160; Start off Workflow1 manually on that new item.&#160; It should complete successfully.&#160; Then we go to List2 and we should see that a new item is created and Workflow2 was trigged off too.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/3021.image_3EADEF2D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/3021.image_5F00_3EADEF2D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/6518.image_thumb_2395201F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/6518.image_5F00_thumb_5F00_2395201F.png" width="671" height="654" /></a></p>  <p>If we click on “Stage 1”, we’ll see that Workflow2 logged the message as we designed.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/8561.image_27BEF7E4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/8561.image_5F00_27BEF7E4.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/69/59/metablogapi/5775.image_thumb_305F5070.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-69-59-metablogapi/5775.image_5F00_thumb_5F00_305F5070.png" width="1061" height="414" /></a></p>  <p>I hope the information in this post was useful.&#160; Please check out the next part <a href="https://blogs.msdn.com/b/sridhara/archive/2014/08/22/fix-sharepoint-2013-workflow-recursion-prevention-part-3.aspx" target="_blank">SharePoint 2013 Workflow recursion prevention – Part 3</a> to achieve the above objective from a Visual Studio SharePoint 2013 Workflow.</p>]]></content:encoded>
    </item>
  </channel>
</rss>