SharePoint Pals
 | Sign In
Undocumented issue in OOB three state worflow of SharePoint Online
by Sriram Varadarajan 24 Jan 2016
Author
Enterprise Architect
Visits   
Today  :   4     Total  :    8202

One the known issue (not disclosed by MS) is default OOB three state workflow won't work in SharePoint Online for some the tenants. We had this issue in one of the sub site which is under the root site collection of our SharePoint online tenant, initially when the workflow wasn’t working, we couldn’t really understand the cause of this issue, and we tried re-creating the WF multiple times without knowing the root cause.

Finally, we managed investigate this case further and here are our findings and fix.

As a first step, we started collecting the LOGS using fiddler, and after analyzing the log carefully we identified the following errors that were seen repeatedly:

The schema for field with this id is wrong or missing. Field '{7d95d1f4-f5fd-4a70-90cd-b35abc9b5bc8}'

- We checked and found that this is a hidden field on the top level site.

  • 7d95d1f4-f5fd-4a70-90cd-b35abc9b5bc8 --  All Day Event --  fAllDayEvent --  fAllDayEvent

- Using the SharePoint Online Client browser tool, we checked root site and determined the SchemaXML of this field as below:

SchemaXML:

 <Field ID="{7D95D1F4-F5FD-4a70-90CD-B35ABC9B5BC8}" Type="AllDayEvent" Name="fAllDayEvent" DisplayName="All Day Event" Sealed="TRUE" SourceID="http://schemas.microsoft.com/sharepoint/v3/fields" StaticName="fAllDayEvent" Group="_Hidden" >
   <FieldRefs>
     <FieldRef ID="{64cd368d-2f95-4bfc-a1f9-8d4324ecb007}" Name="EventDate" RefType="StartDate" />
     <FieldRef ID="{2684F9F2-54BE-429f-BA06-76754FC056BF}" Name="EndDate" RefType="EndDate" />
     <FieldRef ID="{6CC1C612-748A-48d8-88F2-944F477F301B}" Name="TimeZone" RefType="TimeZone" />
     <FieldRef ID="{C4B72ED6-45AA-4422-BFF1-2B6750D30819}" Name="XMLTZone" RefType="XMLTZone" />
   </FieldRefs>
 </Field>

With these details we involved MS and they investigated the Root site more from the backend and found a lot more inconsistencies regarding certain Site columns that are responsible for the three-state workflow to fail.

They found that the issues with the below Fields that are responsible for the working of the Three-state workflow:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: Invalid field name. {17ca3a22-fdfe-46eb-99b5-9646baed3f16}  /XXXX/Temp/Lists/Tasks   

Using CSOM, they checked and found that this OOD hidden field “form_URN” was missing on our root site.

They checked a working site and got the schemaXML of the missing field. Created a new field with the working schema on our root site using CSOM.

But, this didn’t help too and when investigated further they found out that, a lot of such hidden column was missing.

Here are the list of hidden fields which were missing:

· Name="FormURN" ; ID= 17ca3a22-fdfe-46eb-99b5-9646baed3f16

· Name="SendEmailNotification" ; ID= CB2413F2-7DE9-4afc-8587-1CA3F563F624

· Name=”HasCustomEmailBody” ; ID= 47f68c3b-8930-406f-bde2-4a8c669ee87c

· Name="WorkflowLink" ; ID= 58DDDA52-C2A3-4650-9178-3BBC1F6E36DA

· Name="ExtendedProperties" ; ID= 1C5518E2-1E99-49FE-BFC6-1A8DE3BA16E2

· Name="EmailBody" ; ID= 8CBB9252-1035-4156-9C35-F54E9056C65A

· Name="Completed" ; ID= 35363960-D998-4aad-B7E8-058DFE2C669E

CSOM used to create these hidden fields:

Sample CSOM code used:

 #Install SharePoint online client SDK before you run the below 
 [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SharePoint.Client')
 [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SharePoint.Client.Runtime')
 [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SharePoint.Client.UserProfiles')
 [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SharePoint.Client.Taxonomy')
 
 ##Get GA credentials.
 $username = Read-Host -Prompt "GA username"
 $password = Read-Host -Prompt "password? " -AsSecureString
 
 ##URL of the Site Collection:
 $url = "https://consoto.sharepoint.com/sites/site1"
 
 #Connect/authenticate to SharePoint Online and get ClientContext object.. 
 $credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password)
 $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($url) 
 $ctx.Credentials = $credentials 
 
 
 if (!$clientContext.ServerObjectIsNull.Value) 
 { 
     Write-Host "Connected to SharePoint Online site: '$Url'" -ForegroundColor Green 
 } 
 
 #############################################################
 #To load the root site
 $rootweb = $ctx.Web  
 $ctx.Load($rootweb)
 $ctx.ExecuteQuery()
 
 #To get the lists on the site:
 $lists = $rootweb.lists
 $ctx.Load($lists)
 $ctx.ExecuteQuery() 
 
 $lists | select title
 
 #Get the  List:
 $list_problem = $lists.GetByTitle("Workflow Tasks") #Name of a working lib.
 $ctx.Load($list_problem)
 $ctx.ExecuteQuery()
 
 
 #############################################################
 #To get the Fields of the top level web:
 $webfields = $rootweb.Fields
 $ctx.Load($webfields)
 $ctx.ExecuteQuery() 
 
 foreach($webfdtop in $webfields)
 {
     Write-Host $webfdtop.Id  "-- " $webfdtop.Title "-- " $webfdtop.staticname "-- " $webfdtop.InternalName
 }
 #############################################################
 
 #############################################################
 #Get Fields of the list:
 $listfields = $list_problem.Fields
 $ctx.Load($listfields)
 $ctx.ExecuteQuery() 
 
 #See all fields of working list
 foreach($fd1 in $listfields)
 {
     Write-Host $fd1.Id  "-- " $fd1.Title "-- " $fd1.InternalName
 }
 #############################################################
 
 #############################################################
 #To load a specific web field field by ID
 $webfd = $webfields.GetById(‘17ca3a22-fdfe-46eb-99b5-9646baed3f16')
 $ctx.load($webfd)
 $ctx.ExecuteQuery()
 $webfd.SchemaXml
 $webfd | fl

This is one of many Known issue in SharePoint online, my following articles will also talk more on other known issue in SharePoint online, which aren’t disclosed by MS.

blog comments powered by Disqus

SharePoint Pals

Pals
SharePoint Pals, a community portal for SharePoint developers, Administrators and End Users. Let's join hands and share the point together.
Read this on mobile

Training

Angular Js Training In Chennai
Advanced Angular Js training with real world developer scenarios
Angular Js, Web Api and Ionic for .Net Developers
All in one client side application development for .Net developers
Angular Js For SharePoint Developers
Get ready for the future. Its no more just C#

Get Connected

SharePoint Resources

SharePoint 2013 and 2010 Web Parts
Free Web Parts with Source Code for SharePoint Community




SharePoint 2013 Books and Tutorials
Collection of free SharePoint 2013 books and tutorials (eBooks, pdfs)

Supported By

Contribute your article and be eligible for a one month Free Subscription for Plural Sight. The Author of the most popular New Article (published in the previous month) will be awarded with a Free One month Plural Sight Subscription. Article can be sent to articles@sharepointpals.com in a word document.

Related Resources

Recent Tweets

Twitter January 15, 00:25
How To Enable Target Value And Actual Value In #D3 Gauge Chart https://t.co/VxSi4QnNrC

Twitter January 15, 00:24
How To Open #SharePoint List Hyperlink Column In Modal #Popup Window https://t.co/EQ7HkoZDkX

Twitter January 15, 00:24
Quick Introduction To #Asp.NetCore And It’s Features https://t.co/zAXObHCFpH

Twitter January 15, 00:22
How To Configure #PerformancePoint Services To Use Secure Store In #SharePoint 2013 https://t.co/LEwnUoI7EY

Twitter January 15, 00:21
How To Block Or Disable #Office365 Services https://t.co/Yvp2VPFIRP

Follow us @SharePointPals
Note: For Customization and Configuration, CheckOutRecent Tweets Documentation