Thursday, November 25, 2010

NoCode Workflows are first class citizen (Part3 : What are the possible scopes for a Workflow Action ?)

In a previous post, I mentionned that is possible to create Workflow Actions for SharePoint Designer 2010 and deploy them in a Sandbox environnement.
To do this, you have to create a Feature which references a WorkflowActions element file. You can find a typical walkthrough at http://msdn.microsoft.com/en-us/library/ff798499.aspx

The problem is that a Feature is targeted at a specfied scope and in the context of a Sandboxed deployment, the two possible scopes available are Site (you target all sites in a given Site Collection) and Web ( you target a specific Web Site inside the Site Collection).

When you google around, the scope is fixed at Site with no explanation. Even on MSDN and in the SDK you are told to set the scope at Site!

As usual, any source of information found on the web should be partially trusted !

This post is the result of another journey in the SharePoint Galaxy.

So where is the information that could be trusted about the possible WorkflowActions scope ?
Of course in the SharePoint API.

So I asked Sir Reflector to assist me in this journey. As usual Sir Reflector always gives an anwser.
Inside the SharePoint API, you have a method called Validate on a SPElementDefinition class:


   1:    if ((((type == typeof(SPContentTypeBindingElement)) || (type == typeof(SPEventElement))) || ((type == typeof(SPListInstanceElement)) || (type == typeof(SPListTemplateElement)))) || (((type == typeof(SPModuleElement)) || (type == typeof(SPFieldElement))) || (((type == typeof(SPPropertyBagElement)) || (type == typeof(SPWorkflowActionsElement))) || (type == typeof(SPContentTypeElement)))))
   2:      {
   3:          flag = (scope == SPFeatureScope.Web) || (scope == SPFeatureScope.Site);
   4:      }

The above code (from the SharePoint API) is very clear : a Workflow Action can be deployed at two possible levels : Site or Web.

End of the story.

Wednesday, November 24, 2010

SharePoint 2010 MCPD Certification

For SharePoint developers, there are two certifications :

  • 70-573 : TS : Microsoft SharePoint 2010, Application Development
  • 70-576 : PRO : Designing and Developing Microsoft SharePoint 2010 Applications
To become MCPD you have to pass both exams.

I passed these two exams when they were in beta and succeeded ! So yes, I am a SharePoint MCPD since june 2010.

If you need or want to pass the 70-573 and 70-576 certification, the key information to be successfull is :

READ from page 1 to page End the SharePoint Guidance 2010 Patterns and Practices :


The landing site is SharePoint Guidance 2010

Sunday, November 21, 2010

NoCode Workflows are first class citizen (Part2 : How SharePoint Designer knows about the Actions you can use to build a Workflow ?)

I have discovered in the SharePoint Galaxy that a SharePoint developer can create Workflow Activities in Visual Studio and deploy these as Actions for SharePoint Designer.

This means that the list of Actions you can use in SharePoint Designer to build a workflow  is extensible.

Great Feature indeed!

But how Workflow Actions are dynamically injected into SharePoint Designer UI ?

As usual, I asked this same question to Sir Google but nothing came out.
So, once again, a new expedition has to be launched in the SharePoint Galaxy !

When Google is of no help, I have always found that the SharePoint 2010 SDK could be of great help (and vice-versa) !

So I started my journey in the SharePoint Galaxy by searching the exact term "Workflow Actions" in SharePoint 2010 Foundation SDK.

The first topic that came was : "Creating Declarative, No-Code Workflow Editors".

OK this topic title about NoCode is exactly what I am looking for. So lets double click on that topic and then ... bingo ! (Yes, dear Reader, the SharePoint 2010 SDK is sometimes more powerful than Google !)

SharePoint Designer contacts a so called websvcWebPartPages Web Service and invoke the method FetchLegalWorkflowActions on this Web Service.

It sounds to be a good start !

The problem is : there is no Web Service called websvcWebPartPages in SharePoint Foundation 2010 !

By looking around in the Galaxy, I found that many of the available SharePoint Web Services are exposed through the _vti_bin url.

Fortunately I know a little bit of IIS : I loaded the inetmgr.exe (the IIS managment console) and looked at my SharePoint Web Sites; _vti_bin is a virtual directory that is mapped to the physical directory :

  • "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI".


Inside that folder I found a Web Service called WebPartPages.asmx.

Next step was to load this Web Service in the browser :

  • http://<sharepoint web site url>/_vtin_bin/webpartpages.asmx



Do you think there is some logic in burring Workflow features inside a Web Service that essentially manages Web Part?

So know I know that Workflow Actions are dynmically injected within SharePoint designer by calling this Web Service and invoking the FetchLegalWorkflowActions on it.

At that point the journey is not finished.
What happens, on the SharePoint server side, when the FetchLegalWorkflowActions method is called?

I asked this same question to Sir Reflector. I discovered that Workflow Actions may come from two sources on the SharePoint Server :
  1. The first source is the folder 14\TEMPLATE\LCID\Workflow. In that folder, all files with .ACTIONS extension are merged and sent back to SharePoint Designer. The LCID value is dynamically read at runtime from the Language  property of the current SPWeb object. 
  2. The second source are Features. This second source is a great discovery for me. Why ? because it means you might extend the Workflow Actions for SharePoint Designer in the context of a Sandbox Deployment (which is required for SharePoint Online). The method called in the SharePoint API to get those Features is GetWorkflowActionsFromFeatureElements(). This method is looking for elements that are deployed declaratively through the <WorkflowActions> xml section. The problem is that I found no concrete example neither in the SharePoint SDK nor in the 14\TEMPLATE\FEATURES folder. Each  search for a WorkFlowActions xml element in the SDK inevitably refers .ACTIONS files in the 14\TEMPLATE\LCID\Workflow. Argh ! A new expedition in the Features Galaxy has to be launched after this journey !
At that point the original question - how Workflow Actions are dynamically injected into SharePoint designer UI ? - is partly answered. 

As usual, every journey in the SharePoint Galaxy is incomplete. So dear Reader be patient !

Thursday, November 18, 2010

Battle against the Workflow History List (part 1)

In the journey towards a new NoCode lifestyle for SharePoint Workflows, I found a big enemy : the Workflow History List.
I was defeated by the Description Field on that list because of its limitation to 255 characters. Argh !

The problem is I MUST log to the History List messages bigger than 255 characters.
Looking around in the SharePoint galaxy I did not find any serious explanation and workarounds. Argh !

So, once again, a new expedition has to be launched in the SharePoint Galaxy !

I started my new favorite tool (SharePoint Designer 2010), navigate, through the Site Objects Pane, to the workflow history list, and from there to the administration page and from there I tried to modify the Description Column : no way to change the MaxLength of the associated text field and no way to delete and recreate the column. Argh !
The NoCode way-of-life is much more difficult than anticipated.

Come back to google as usual to gather more information against my new enemy. The result of this search was : do the job through the SharePoint Object Model. Sounds great, I feel back home !

I started again my old favorite tool (Visual Studio 2010) and started a new SharePoint Console Application project (one of the projects that come with the CKS - Development Tools Edition).
I naively wrote the following code :


   1:  SPSite mySiteCollection = new SPSite("http://sharepoint2010:100/");
   2:  SPWeb myWebSite = mySiteCollection.RootWeb;
   3:  SPList myHistoryList = myWebSite.Lists[@"Traitement de demande d'absence - Historique"];
   4:  SPFieldText myField = myHistoryList.Fields["Description"] as SPFieldText;
   5:  myField.MaxLength = 1024;
   6:  myField.Update();

At F5, code execution stops with an exception at line 5. Argh!

I started my another favorite tool for that kind of problem : Reflector.
SPFieldText.MaxLength property Setter code as shown by reflector :

   1:   set
   2:      {
   3:          if ((value < 1) || (value > 0xff))
   4:          {
   5:              throw new ArgumentOutOfRangeException();
   6:          }
   7:          base.SetFieldAttributeValue("MaxLength", Convert.ToString(value));
   8:      }

No way ! If value is > 0xff (ie 256) then go home!
So the Description column, in the Workflow History List, cannot be greater than 256 characters.
It could be lower than 255 but not greater : it makes no sense for a Description column !!

Ok but what if we could go directly to line 7 of the above code snippet ?
Great, it seems the battle is not lost !

After digging the code underlying the SetFieldAttributeValue method, I found there could be a way to do the job through the SchemaXml property of the SPField base class.
So I naively change my code to :

   1:  SPSite mySiteCollection = new SPSite("http://sharepoint2010:100/");
   2:  SPWeb myWebSite = mySiteCollection.RootWeb;
   3:  SPList myHistoryList = myWebSite.Lists[@"Traitement de demande d'absence - Historique"];
   4:  SPFieldText myField = myHistoryList.Fields["Description"] as SPFieldText;
   5:  string myXML = myField.SchemaXml;
   6:  myXML = AddAttribute(myXML,"MaxLength", 1024);
   7:  myField.SchemaXml = myXML;
   8:  myField.Update();

The AddAttributeMethod is a private method that just add the attribute MaxLength="1024" to the XML Schema of the column.

At F5, no exception, code runs correctly BUT the SchemaXML is never changed ! Argh!
So now I have to go the Getter code of the SchemaXML.
SchemaXML property Getter code as shown by Reflector :

   1:  return this.Fields.Web.Request.LocalizeText(this.SchemaXmlWithResourceTokens, (uint) this.Fields.Web.UICulture.LCID, "core", true);

Ok ! the SchemaXML content comes from the content of the SchemaXMLWithResourceTokens property of the SPField base class. Argh !
It seems to be a design problem in the SharePoint API. The SchemaXML property should have been set has readonly!
The problem now is that there is no way to modify the content of the SchemaXMLWithResourceTokens property (this property is readonly). Argh !

But wait a minute, it seems the battle is still not lost !
Why not simply deleting the column and creating it again using a well known pattern for creating new column on a list :

   1:  myHistoryList.Fields.AddFieldAsXml(myXML);
   2:  myHistoryList.Update();

So I naively change my code to :

   1:  SPWeb myWebSite = mySiteCollection.RootWeb;
   2:  SPList myHistoryList = myWebSite.Lists[@"Traitement de demande d'absence - Historique"];
   3:  SPFieldText myField = myHistoryList.Fields["Description"] as SPFieldText;
   4:  myField.AllowDeletion = true;
   5:  myField.Sealed = false;
   6:  myField.Delete();

 At F5, code execution stops with an exception at line 5. Argh!
   
So now I have to analyze the Delete method with Reflector. The most interesting part of the code shown by Reflector is not the code itself but the attributes placed on the method.
By reading those attributes you can understand that a column cannot be deleted if :
  • the Sealed property is set to true 
  • the ReadOnlyField property is set to true
  • the AllowDeletion property is set to false
  • The Hidden Property is set to true
  • The column is inherited from the list's base type
It could be any combination of the above that makes the column undeletable.

By digging further with Reflector the Setter code of the Sealed property, I discovered that ultimately if the ID of the column is inside the following list then the column is truely UNDELETABLE :


   1:  static SPBuiltInFieldId()
   2:  {
   3:      ContentTypeId = new Guid("{03e45e84-1992-4d42-9116-26f756012634}");
   4:      ContentType = new Guid("{c042a256-787d-4a6f-8a8a-cf6ab767f12d}");
   5:      ID = new Guid("{1d22ea11-1e32-424e-89ab-9fedbadb6ce1}");
   6:      Modified = new Guid("{28cf69c5-fa48-462a-b5cd-27b6f9d2bd5f}");
   7:      Created = new Guid("{8c06beca-0777-48f7-91c7-6da68bc07b69}");
   8:      Author = new Guid("{1df5e554-ec7e-46a6-901d-d85a3881cb18}");
   9:      Editor = new Guid("{d31655d1-1d5b-4511-95a1-7a09e9b75bf2}");
  10:      owshiddenversion = new Guid("{d4e44a66-ee3a-4d02-88c9-4ec5ff3f4cd5}");
  11:      Subject = new Guid("{76a81629-44d4-4ce1-8d4d-6d7ebcd885fc}");
  12:      _Author = new Guid("{246d0907-637c-46b7-9aa0-0bb914daa832}");
  13:      _Category = new Guid("{0fc9cace-c5c2-465d-ae88-b67f2964ca93}");
  14:      _Status = new Guid("{1dab9b48-2d1a-47b3-878c-8e84f0d211ba}");
  15:      FileRef = new Guid("{94f89715-e097-4e8b-ba79-ea02aa8b7adb}");
  16:      FileDirRef = new Guid("{56605df6-8fa1-47e4-a04c-5b384d59609f}");
  17:      Last_x0020_Modified = new Guid("{173f76c8-aebd-446a-9bc9-769a2bd2c18f}");
  18:      Created_x0020_Date = new Guid("{998b5cff-4a35-47a7-92f3-3914aa6aa4a2}");
  19:      File_x0020_Size = new Guid("{8fca95c0-9b7d-456f-8dae-b41ee2728b85}");
  20:      FSObjType = new Guid("{30bb605f-5bae-48fe-b4e3-1f81d9772af9}");
  21:      PermMask = new Guid("{ba3c27ee-4791-4867-8821-ff99000bac98}");
  22:      CheckoutUser = new Guid("{3881510a-4e4a-4ee8-b102-8ee8e2d0dd4b}");
  23:      VirusStatus = new Guid("{4a389cb9-54dd-4287-a71a-90ff362028bc}");
  24:      InstanceID = new Guid("{50a54da4-1528-4e67-954a-e2d24f1e9efb}");
  25:      _CheckinComment = new Guid("{58014f77-5463-437b-ab67-eec79532da67}");
  26:      MetaInfo = new Guid("{687c7f94-686a-42d3-9b67-2782eac4b4f8}");
  27:      _Level = new Guid("{43bdd51b-3c5b-4e78-90a8-fb2087f71e70}");
  28:      _IsCurrentVersion = new Guid("{c101c3e7-122d-4d4d-bc34-58e94a38c816}");
  29:      _HasCopyDestinations = new Guid("{26d0756c-986a-48a7-af35-bf18ab85ff4a}");
  30:      _CopySource = new Guid("{6b4e226d-3d88-4a36-808d-a129bf52bccf}");
  31:      _ModerationStatus = new Guid("{fdc3b2ed-5bf2-4835-a4bc-b885f3396a61}");
  32:      _ModerationComments = new Guid("{34ad21eb-75bd-4544-8c73-0e08330291fe}");
  33:      Title = new Guid("{fa564e0f-0c70-4ab9-b863-0177e6ddd247}");
  34:      WorkflowVersion = new Guid("{f1e020bc-ba26-443f-bf2f-b68715017bbc}");
  35:      Attachments = new Guid("{67df98f4-9dec-48ff-a553-29bece9c5bf4}");
  36:      Edit = new Guid("{503f1caa-358e-4918-9094-4a2cdc4bc034}");
  37:      LinkTitleNoMenu = new Guid("{bc91a437-52e7-49e1-8c4e-4698904b2b6d}");
  38:      LinkTitle = new Guid("{82642ec8-ef9b-478f-acf9-31f7d45fbc31}");
  39:      SelectTitle = new Guid("{b1f7969b-ea65-42e1-8b54-b588292635f2}");
  40:      Order = new Guid("{ca4addac-796f-4b23-b093-d2a3f65c0774}");
  41:      GUID = new Guid("{ae069f25-3ac2-4256-b9c3-15dbc15da0e0}");
  42:      WorkflowInstanceID = new Guid("{de8beacf-5505-47cd-80a6-aa44e7ffe2f4}");
  43:      UniqueId = new Guid("{4b7403de-8d94-43e8-9f0f-137a3e298126}");
  44:      ProgId = new Guid("{c5c4b81c-f1d9-4b43-a6a2-090df32ebb68}");
  45:      FileLeafRef = new Guid("{8553196d-ec8d-4564-9861-3dbe931050c8}");
  46:      ScopeId = new Guid("{dddd2420-b270-4735-93b5-92b713d0944d}");
  47:      EmailSender = new Guid("{4ce600fb-a927-4911-bfc1-11076b76b522}");
  48:      EmailTo = new Guid("{caa2cb1e-a124-4068-9496-14feef1a901f}");
  49:      EmailCc = new Guid("{a6af6df4-feb5-4dbf-bef6-d81230d4a071}");
  50:      EmailFrom = new Guid("{e7cb6f60-f676-4b1d-89a3-975b6bc78cad}");
  51:      EmailSubject = new Guid("{072e9bb6-a643-44ce-b6fb-8b574a792556}");
  52:      EmailCalendarUid = new Guid("{f4e00567-8a9d-451b-82d4-a4447f9bd9a5}");
  53:      EmailCalendarSequence = new Guid("{7a0cb12b-c70c-4f99-99f1-a232783a87d7}");
  54:      EmailCalendarDateStamp = new Guid("{32f182ba-284e-4a87-93c3-936a6585af39}");
  55:      _UIVersion = new Guid("{7841bf41-43d0-4434-9f50-a673baef7631}");
  56:      _UIVersionString = new Guid("{dce8262a-3ae9-45aa-aab4-83bd75fb738a}");
  57:      Modified_x0020_By = new Guid("{822c78e3-1ea9-4943-b449-57863ad33ca9}");
  58:      Created_x0020_By = new Guid("{4dd7e525-8d6b-4cb4-9d3e-44ee25f973eb}");
  59:      File_x0020_Type = new Guid("{39360f11-34cf-4356-9945-25c44e68dade}");
  60:      HTML_x0020_File_x0020_Type = new Guid("{0c5e0085-eb30-494b-9cdd-ece1d3c649a2}");
  61:      _SourceUrl = new Guid("{c63a459d-54ba-4ab7-933a-dcf1c6fadec2}");
  62:      _SharedFileIndex = new Guid("{034998e9-bf1c-4288-bbbd-00eacfc64410}");
  63:      LinkFilenameNoMenu = new Guid("{9d30f126-ba48-446b-b8f9-83745f322ebe}");
  64:      _EditMenuTableStart = new Guid("{3c6303be-e21f-4366-80d7-d6d0a3b22c7a}");
  65:      _EditMenuTableEnd = new Guid("{2ea78cef-1bf9-4019-960a-02c41636cb47}");
  66:      LinkFilename = new Guid("{5cc6dc79-3710-4374-b433-61cb4a686c12}");
  67:      SelectFilename = new Guid("{5f47e085-2150-41dc-b661-442f3027f552}");
  68:      DocIcon = new Guid("{081c6e4c-5c14-4f20-b23e-1a71ceb6a67c}");
  69:      ServerUrl = new Guid("{105f76ce-724a-4bba-aece-f81f2fce58f5}");
  70:      EncodedAbsUrl = new Guid("{7177cfc7-f399-4d4d-905d-37dd51bc90bf}");
  71:      BaseName = new Guid("{7615464b-559e-4302-b8e2-8f440b913101}");
  72:      FileSizeDisplay = new Guid("{78a07ba4-bda8-4357-9e0f-580d64487583}");
  73:      Body = new Guid("{7662cd2c-f069-4dba-9e35-082cf976e170}");
  74:      Expires = new Guid("{6a09e75b-8d17-4698-94a8-371eda1af1ac}");
  75:      URL = new Guid("{c29e077d-f466-4d8e-8bbe-72b66c5f205c}");
  76:      _Comments = new Guid("{52578fc3-1f01-4f4d-b016-94ccbcf428cf}");
  77:      _EndDate = new Guid("{8a121252-85a9-443d-8217-a1b57020fadf}");
  78:      EndDate = new Guid("{2684f9f2-54be-429f-ba06-76754fc056bf}");
  79:      URLwMenu = new Guid("{2a9ab6d3-268a-4c1c-9897-e5f018f87e64}");
  80:      URLNoMenu = new Guid("{aeaf07ee-d2fb-448b-a7a3-cf7e062d6c2a}");
  81:      LastNamePhonetic = new Guid("{fdc8216d-dabf-441d-8ac0-f6c626fbdc24}");
  82:      FirstName = new Guid("{4a722dd4-d406-4356-93f9-2550b8f50dd0}");
  83:      FirstNamePhonetic = new Guid("{ea8f7ca9-2a0e-4a89-b8bf-c51a6af62c73}");
  84:      FullName = new Guid("{475c2610-c157-4b91-9e2d-6855031b3538}");
  85:      CompanyPhonetic = new Guid("{034aae88-6e9a-4e41-bc8a-09b6c15fcdf4}");
  86:      Company = new Guid("{038d1503-4629-40f6-adaf-b47d1ab2d4fe}");
  87:      JobTitle = new Guid("{c4e0f350-52cc-4ede-904c-dd71a3d11f7d}");
  88:      WorkPhone = new Guid("{fd630629-c165-4513-b43c-fdb16b86a14d}");
  89:      HomePhone = new Guid("{2ab923eb-9880-4b47-9965-ebf93ae15487}");
  90:      CellPhone = new Guid("{2a464df1-44c1-4851-949d-fcd270f0ccf2}");
  91:      WorkFax = new Guid("{9d1cacc8-f452-4bc1-a751-050595ad96e1}");
  92:      WorkAddress = new Guid("{fc2e188e-ba91-48c9-9dd3-16431afddd50}");
  93:      _Photo = new Guid("{1020c8a0-837a-4f1b-baa1-e35aff6da169}");
  94:      WorkCity = new Guid("{6ca7bd7f-b490-402e-af1b-2813cf087b1e}");
  95:      WorkState = new Guid("{ceac61d3-dda9-468b-b276-f4a6bb93f14f}");
  96:      WorkZip = new Guid("{9a631556-3dac-49db-8d2f-fb033b0fdc24}");
  97:      WorkCountry = new Guid("{3f3a5c85-9d5a-4663-b925-8b68a678ea3a}");
  98:      WebPage = new Guid("{a71affd2-dcc7-4529-81bc-2fe593154a5f}");
  99:      Priority = new Guid("{a8eb573e-9e11-481a-a8c9-1104a54b2fbd}");
 100:      TaskStatus = new Guid("{c15b34c3-ce7d-490a-b133-3f4de8801b76}");
 101:      PercentComplete = new Guid("{d2311440-1ed6-46ea-b46d-daa643dc3886}");
 102:      AssignedTo = new Guid("{53101f38-dd2e-458c-b245-0c236cc13d1a}");
 103:      TaskGroup = new Guid("{50d8f08c-8e99-4948-97bf-2be41fa34a0d}");
 104:      StartDate = new Guid("{64cd368d-2f95-4bfc-a1f9-8d4324ecb007}");
 105:      TaskDueDate = new Guid("{cd21b4c2-6841-4f9e-a23a-738a65f99889}");
 106:      WorkflowLink = new Guid("{58ddda52-c2a3-4650-9178-3bbc1f6e36da}");
 107:      OffsiteParticipant = new Guid("{16b6952f-3ce6-45e0-8f4e-42dac6e12441}");
 108:      OffsiteParticipantReason = new Guid("{4a799ba5-f449-4796-b43e-aa5186c3c414}");
 109:      WorkflowOutcome = new Guid("{18e1c6fa-ae37-4102-890a-cfb0974ef494}");
 110:      WorkflowName = new Guid("{e506d6ca-c2da-4164-b858-306f1c41c9ec}");
 111:      TaskType = new Guid("{8d96aa48-9dff-46cf-8538-84c747ffa877}");
 112:      FormURN = new Guid("{17ca3a22-fdfe-46eb-99b5-9646baed3f16}");
 113:      FormData = new Guid("{78eae64a-f5f2-49af-b416-3247b76f46a1}");
 114:      EmailBody = new Guid("{8cbb9252-1035-4156-9c35-f54e9056c65a}");
 115:      HasCustomEmailBody = new Guid("{47f68c3b-8930-406f-bde2-4a8c669ee87c}");
 116:      SendEmailNotification = new Guid("{cb2413f2-7de9-4afc-8587-1ca3f563f624}");
 117:      PendingModTime = new Guid("{4d2444c2-0e97-476c-a2a3-e9e4a9c73009}");
 118:      Completed = new Guid("{35363960-d998-4aad-b7e8-058dfe2c669e}");
 119:      WorkflowListId = new Guid("{1bfee788-69b7-4765-b109-d4d9c31d1ac1}");
 120:      WorkflowItemId = new Guid("{8e234c69-02b0-42d9-8046-d5f49bf0174f}");
 121:      ExtendedProperties = new Guid("{1c5518e2-1e99-49fe-bfc6-1a8de3ba16e2}");
 122:      AdminTaskAction = new Guid("{7b016ee5-70aa-4abb-8aa3-01795b4efe6f}");
 123:      AdminTaskDescription = new Guid("{93490584-b6a8-4996-aa00-ead5f59aae0d}");
 124:      AdminTaskOrder = new Guid("{cf935cc2-a00c-4ad3-bca1-0865ab15afc1}");
 125:      Service = new Guid("{48b4a73e-8853-44ac-83a8-3a4bd59ce9ec}");
 126:      SystemTask = new Guid("{af0a3d4b-3ceb-449e-9bf4-51103f2032e3}");
 127:      Location = new Guid("{288f5f32-8462-4175-8f09-dd7ba29359a9}");
 128:      fRecurrence = new Guid("{f2e63656-135e-4f1c-8fc2-ccbe74071901}");
 129:      WorkspaceLink = new Guid("{08fc65f9-48eb-4e99-bd61-5946c439e691}");
 130:      EventType = new Guid("{5d1d4e76-091a-4e03-ae83-6a59847731c0}");
 131:      UID = new Guid("{63055d04-01b5-48f3-9e1e-e564e7c6b23b}");
 132:      RecurrenceID = new Guid("{dfcc8fff-7c4c-45d6-94ed-14ce0719efef}");
 133:      EventCanceled = new Guid("{b8bbe503-bb22-4237-8d9e-0587756a2176}");
 134:      Duration = new Guid("{4d54445d-1c84-4a6d-b8db-a51ded4e1acc}");
 135:      RecurrenceData = new Guid("{d12572d0-0a1e-4438-89b5-4d0430be7603}");
 136:      TimeZone = new Guid("{6cc1c612-748a-48d8-88f2-944f477f301b}");
 137:      XMLTZone = new Guid("{c4b72ed6-45aa-4422-bff1-2b6750d30819}");
 138:      MasterSeriesItemID = new Guid("{9b2bed84-7769-40e3-9b1d-7954a4053834}");
 139:      Workspace = new Guid("{881eac4a-55a5-48b6-a28e-8329d7486120}");
 140:      IssueStatus = new Guid("{3f277a5c-c7ae-4bbe-9d44-0456fb548f94}");
 141:      Comment = new Guid("{6df9bd52-550e-4a30-bc31-a4366832a87f}");
 142:      Comments = new Guid("{9da97a8a-1da5-4a77-98d3-4bc10456e700}");
 143:      Category = new Guid("{6df9bd52-550e-4a30-bc31-a4366832a87d}");
 144:      RelatedIssues = new Guid("{875fab27-6e95-463b-a4a6-82544f1027fb}");
 145:      LinkIssueIDNoMenu = new Guid("{03f89857-27c9-4b58-aaab-620647deda9b}");
 146:      V3Comments = new Guid("{6df9bd52-550e-4a30-bc31-a4366832a87e}");
 147:      Name = new Guid("{bfc6f32c-668c-43c4-a903-847cca2f9b3c}");
 148:      EMail = new Guid("{fce16b4c-fe53-4793-aaab-b4892e736d15}");
 149:      Notes = new Guid("{e241f186-9b94-415c-9f66-255ce7f86235}");
 150:      IsSiteAdmin = new Guid("{9ba260b2-85a1-4a32-ad7a-63eaceffe6b4}");
 151:      Deleted = new Guid("{4ed6dfdf-86a8-4894-bd1b-4fa28042be53}");
 152:      Picture = new Guid("{d9339777-b964-489a-bf09-2ac3c3fe5f0d}");
 153:      Department = new Guid("{05fdf852-4b64-4096-9b2b-d2a62a86bc59}");
 154:      SipAddress = new Guid("{829c275d-8744-4d9b-a42f-53f53eb60559}");
 155:      IsActive = new Guid("{af5036db-36f4-46c8-bde7-a677bd0ef280}");
 156:      TrimmedBody = new Guid("{6d0f8993-5050-41f3-be6c-18902d282357}");
 157:      DiscussionLastUpdated = new Guid("{59956c56-30dd-4cb1-bf12-ef693b42679c}");
 158:      MessageId = new Guid("{2ef29342-2f5f-4052-90d3-8192e0705e51}");
 159:      ThreadTopic = new Guid("{769b99d9-d361-4948-b687-f01332391629}");
 160:      ThreadIndex = new Guid("{cef73bf1-edf6-4dd9-9098-a07d83984700}");
 161:      EmailReferences = new Guid("{124527a9-fc10-48ff-8d44-960a7db405f8}");
 162:      RelevantMessages = new Guid("{9161f6cb-a8e6-47b8-9d24-89415de691f7}");
 163:      ParentFolderId = new Guid("{a9ec25bf-5a22-4658-bd19-484e52efbe1a}");
 164:      ShortestThreadIndex = new Guid("{4753e73b-5b5d-4bbc-8e09-c9683b0d40a7}");
 165:      ShortestThreadIndexId = new Guid("{2bec4782-695f-406d-9e50-f1d39a2b8eb6}");
 166:      ShortestThreadIndexIdLookup = new Guid("{8ffccefe-998b-4896-a6df-32d566f69141}");
 167:      DiscussionTitleLookup = new Guid("{f0218b98-d0d6-4fc1-b15b-aabeb89f32a9}");
 168:      DiscussionTitle = new Guid("{c5abfdc7-3435-4183-9207-3d1146895cf8}");
 169:      LinkDiscussionTitleNoMenu = new Guid("{3ac9353f-613f-42bd-98e1-530e9fd1cbf6}");
 170:      LinkDiscussionTitle = new Guid("{46045bc4-283a-4826-b3dd-7a78d790b266}");
 171:      LinkDiscussionTitle2 = new Guid("{b4e31c47-f962-4f9f-9132-eb555a1a026c}");
 172:      ReplyNoGif = new Guid("{87cda0e2-fc57-4eec-a696-b0de2f61f361}");
 173:      ThreadingControls = new Guid("{c55a4674-640b-4bae-8738-ce0439e6f6d4}");
 174:      IndentLevel = new Guid("{68227570-72dd-4816-b6b6-4b81ff99a393}");
 175:      Indentation = new Guid("{26c4f53e-733a-4202-814b-377492b6c841}");
 176:      StatusBar = new Guid("{f90bce56-87dc-4d73-bfcb-03fcaf670500}");
 177:      BodyAndMore = new Guid("{c7e9537e-bde4-4923-a100-adbd9e0a0a0d}");
 178:      MessageBody = new Guid("{fbba993f-afee-4e00-b9be-36bc660dcdd1}");
 179:      BodyWasExpanded = new Guid("{af82aa75-3039-4573-84a8-73ffdfd22733}");
 180:      QuotedTextWasExpanded = new Guid("{e393d344-2e8c-425b-a8c3-89ac3144c9a2}");
 181:      CorrectBodyToShow = new Guid("{b0204f69-2253-43d2-99ad-c0df00031b66}");
 182:      FullBody = new Guid("{9c4be348-663a-4172-a38a-9714b2634c17}");
 183:      LimitedBody = new Guid("{61b97279-cbc0-4aa9-a362-f1ff249c1706}");
 184:      MoreLink = new Guid("{fb6c2494-1b14-49b0-a7ca-0506d6e85a62}");
 185:      LessLink = new Guid("{076193bd-865b-4de7-9633-1f12069a6fff}");
 186:      ToggleQuotedText = new Guid("{e451420d-4e62-43e3-af83-010d36e353a2}");
 187:      Threading = new Guid("{58ca6516-51cd-41fb-a908-dd2a4aeea8bc}");
 188:      PersonImage = new Guid("{adfe65ee-74bb-4771-bec5-d691d9a6a14e}");
 189:      PersonViewMinimal = new Guid("{b4ab471e-0262-462a-8b3f-c1dfc9e2d5fd}");
 190:      IsRootPost = new Guid("{bd2216c1-a2f3-48c0-b21c-dc297d0cc658}");
 191:      Combine = new Guid("{e52012a0-51eb-4c0c-8dfb-9b8a0ebedcb6}");
 192:      RepairDocument = new Guid("{5d36727b-bcb2-47d2-a231-1f0bc63b7439}");
 193:      ShowRepairView = new Guid("{11851948-b05e-41be-9d9f-bc3bf55d1de3}");
 194:      ShowCombineView = new Guid("{086f2b30-460c-4251-b75a-da88a5b205c1}");
 195:      TemplateUrl = new Guid("{4b1bf6c6-4f39-45ac-acd5-16fe7a214e5e}");
 196:      xd_ProgID = new Guid("{cd1ecb9f-dd4e-4f29-ab9e-e9ff40048d64}");
 197:      xd_Signature = new Guid("{fbf29b2d-cae5-49aa-8e0a-29955b540122}");
 198:      WorkflowInstance = new Guid("{de21c770-a12b-4f88-af4b-aeebd897c8c2}");
 199:      WorkflowAssociation = new Guid("{8d426880-8d96-459b-ae48-e8b3836d8b9d}");
 200:      WorkflowTemplate = new Guid("{bfb1589e-2016-4b98-ae62-e91979c3224f}");
 201:      List = new Guid("{f44e428b-61c8-4100-a911-a3a635f43bb5}");
 202:      Item = new Guid("{92b8e9d0-a11b-418f-bf1c-c44aaa73075d}");
 203:      User = new Guid("{5928ff1f-daa1-406c-b4a9-190485a448cb}");
 204:      Occurred = new Guid("{5602dc33-a60a-4dec-bd23-d18dfcef861d}");
 205:      Event = new Guid("{20a1a5b1-fddf-4420-ac68-9701490e09af}");
 206:      Group = new Guid("{c86a2f7f-7680-4a0b-8907-39c4f4855a35}");
 207:      Outcome = new Guid("{dcde7b1f-918b-4ed5-819f-9798f8abac37}");
 208:      DLC_Duration = new Guid("{80289bac-fd36-4848-b67a-bc8b5b621ec2}");
 209:      DLC_Description = new Guid("{2fd53156-ff9d-4cc3-b0ac-fe8a7bc82283}");
 210:      Data = new Guid("{38269294-165e-448a-a6b9-f0e09688f3f9}");
 211:      Purpose = new Guid("{8ee23f39-e2d1-4b46-8945-42386b24829d}");
 212:      ConnectionType = new Guid("{939dfb93-3107-44c6-a98f-dd88dca3f8cf}");
 213:      FileType = new Guid("{c53a03f3-f930-4ef2-b166-e0f2210c13c0}");
 214:      ImageSize = new Guid("{922551b8-c7e0-46a6-b7e3-3cf02917f68a}");
 215:      ImageWidth = new Guid("{7e68a0f9-af76-404c-9613-6f82bc6dc28c}");
 216:      ImageHeight = new Guid("{1944c034-d61b-42af-aa84-647f2e74ca70}");
 217:      ImageCreateDate = new Guid("{a5d2f824-bc53-422e-87fd-765939d863a5}");
 218:      EncodedAbsThumbnailUrl = new Guid("{b9e6f3ae-5632-4b13-b636-9d1a2bd67120}");
 219:      EncodedAbsWebImgUrl = new Guid("{a1ca0063-779f-49f9-999c-a4a2e3645b07}");
 220:      SelectedFlag = new Guid("{7ebf72ca-a307-4c18-9e5b-9d89e1dae74f}");
 221:      NameOrTitle = new Guid("{76d1cc87-56de-432c-8a2a-16e5ba5331b3}");
 222:      RequiredField = new Guid("{de1baa4b-2117-473b-aa0c-4d824034142d}");
 223:      Keywords = new Guid("{b66e9b50-a28e-469b-b1a0-af0e45486874}");
 224:      Thumbnail = new Guid("{ac7bb138-02dc-40eb-b07a-84c15575b6e9}");
 225:      Preview = new Guid("{bd716b26-546d-43f2-b229-62699581fa9f}");
 226:      DecisionStatus = new Guid("{ac3a1092-34ad-42b2-8d47-a79d01d9f516}");
 227:      AttendeeStatus = new Guid("{3329f39d-70ed-4858-b8c8-c5237634bf08}");
 228:      fAllDayEvent = new Guid("{7d95d1f4-f5fd-4a70-90cd-b35abc9b5bc8}");
 229:      Language = new Guid("{d81529e8-384c-4ca6-9c43-c86a256e6a44}");
 230:      SurveyTitle = new Guid("{e6f528fb-2e22-483d-9c80-f2536acdc6de}");
 231:      WikiField = new Guid("{c33527b4-d920-4587-b791-45024d00068a}");
 232:      PublishedDate = new Guid("{b1b53d80-23d6-e31b-b235-3a286b9f10ea}");
 233:      PostCategory = new Guid("{38bea83b-350a-1a6e-f34a-93a6af31338b}");
 234:      BaseAssociationGuid = new Guid("{e9359d15-261b-48f6-a302-01419a68d4de}");
 235:      XomlUrl = new Guid("{566da236-762b-4a76-ad1f-b08b3c703fce}");
 236:      RulesUrl = new Guid("{ad97fbac-70af-4860-a078-5ee704946f93}");
 237:      Categories = new Guid("{9ebcd900-9d05-46c8-8f4d-e46e87328844}");
 238:      ol_EventAddress = new Guid("{493896da-0a4f-46ec-a68e-9cfd1a5fc19b}");
 239:      DateCompleted = new Guid("{24bfa3c2-e6a0-4651-80e9-3db44bf52147}");
 240:      TotalWork = new Guid("{f3c4a259-19a2-44b8-ab3d-e9145d07d538}");
 241:      ActualWork = new Guid("{b0b3407e-1c33-40ed-a37c-2430b7a5d081}");
 242:      TaskCompanies = new Guid("{3914f98e-6d99-4218-9ba3-af7370b9e7bc}");
 243:      Mileage = new Guid("{3126c2f1-063e-4892-828f-0696ec6e105f}");
 244:      BillingInformation = new Guid("{4f03f66b-fb1e-4ed2-ab8e-f6ed3fe14844}");
 245:      Role = new Guid("{eeaeaaf1-4110-465b-905e-df1073a7e0e6}");
 246:      MiddleName = new Guid("{418c8d29-6f2e-44c3-8955-2cd7ec3e2151}");
 247:      Suffix = new Guid("{d886eba3-d018-4103-a322-d5780127ef8a}");
 248:      AssistantNumber = new Guid("{f55de332-074e-4e71-a71a-b90abfad51ae}");
 249:      Business2Number = new Guid("{6547d03a-76d3-4d74-9d34-f51b837c0879}");
 250:      CallbackNumber = new Guid("{344e9657-b17f-4344-a834-ff7c056bcc5e}");
 251:      CarNumber = new Guid("{92a011a9-fd1b-42e0-b6fa-afcfee1928fa}");
 252:      CompanyNumber = new Guid("{27cb1283-bda2-4ae8-bcff-71725b674dbb}");
 253:      Home2Number = new Guid("{8c5a385d-2fff-42da-a4c5-f6a904f2e491}");
 254:      HomeFaxNumber = new Guid("{c189a857-e6b0-488f-83a0-f4ee0a3ad01e}");
 255:      ISDNNumber = new Guid("{a579062a-6c1d-4ad3-9d5e-035f9f2c1882}");
 256:      OtherNumber = new Guid("{96e02495-f428-48bc-9f13-06d98ba58c34}");
 257:      OtherFaxNumber = new Guid("{aad15eb6-d7fd-47b8-abd4-adc0fe33a6ba}");
 258:      PagerNumber = new Guid("{f79bf074-daf7-4c06-a314-15b287fdf4c9}");
 259:      PrimaryNumber = new Guid("{d69bcc0e-57c3-4f3b-bbc5-b090edf21f0f}");
 260:      RadioNumber = new Guid("{d1aede4f-1352-48d9-81e2-b10097c359c1}");
 261:      TelexNumber = new Guid("{e7be7f3c-c436-481d-8865-669e5146f53c}");
 262:      TTYTDDNumber = new Guid("{f54697f1-0357-4c5a-a711-0cb654bc73e4}");
 263:      IMAddress = new Guid("{4cbd96f7-09c6-4b5e-ad42-1cbe123de63a}");
 264:      HomeAddressStreet = new Guid("{8c66e340-0985-4d68-af03-3050ece4862b}");
 265:      HomeAddressCity = new Guid("{5aeabc56-57c6-4861-bc12-bd72c30fc6bd}");
 266:      HomeAddressStateOrProvince = new Guid("{f5b36006-69b0-418c-bd4a-f25ca7e096bb}");
 267:      HomeAddressPostalCode = new Guid("{c0e4b4c6-6245-4846-8561-b8c6c01fefc1}");
 268:      HomeAddressCountry = new Guid("{897ecfd7-4293-4782-b463-bd68440a5fed}");
 269:      OtherAddressStreet = new Guid("{dff5dfc2-e2b7-4a19-bde7-76dabc90a3d2}");
 270:      OtherAddressCity = new Guid("{90fa9a8e-aac0-4828-9cb4-78f98416affa}");
 271:      OtherAddressStateOrProvince = new Guid("{f45883bc-8733-4b77-ab5d-43613986aa12}");
 272:      OtherAddressPostalCode = new Guid("{0557c3f8-60c4-4dfb-b5ba-bf3c4e4386b1}");
 273:      OtherAddressCountry = new Guid("{3c0e9e00-8fcc-479f-9d8d-3447cda34c5b}");
 274:      Email2 = new Guid("{e232d6c8-9f49-4be2-bb28-b90570bcf167}");
 275:      Email3 = new Guid("{8bd27dbd-29a0-4ccd-bcb4-03fe70c538b1}");
 276:      ol_Department = new Guid("{c814b2cf-84c6-4f56-b4a4-c766938a97c5}");
 277:      Office = new Guid("{26169ab2-4bd2-4870-b077-10f49c8a5822}");
 278:      Profession = new Guid("{f0753a13-44b1-4269-82af-5c34c57b0c67}");
 279:      ManagersName = new Guid("{ba934502-d68d-4960-a54b-51e15fef5fd3}");
 280:      AssistantsName = new Guid("{2aea194d-e399-4f05-95af-94f87b1f2687}");
 281:      Nickname = new Guid("{6b0a2cd7-a7f9-41ca-b932-f3bebb603793}");
 282:      SpouseName = new Guid("{f590b1de-8e28-4c17-91bc-bf4096024b7e}");
 283:      Birthday = new Guid("{c4c7d925-bc1b-4f37-826d-ac49b4fb1bc1}");
 284:      Anniversary = new Guid("{9d76802c-13c4-484a-9872-d7f9641c4672}");
 285:      Gender = new Guid("{23550288-91b5-4e7f-81f9-1a92661c4838}");
 286:      Initials = new Guid("{7a282f86-69d9-40ff-ae1c-c746cf21256b}");
 287:      Hobbies = new Guid("{203fa378-6eb8-4ed9-a4f9-221a4c1fbf46}");
 288:      ChildrensNames = new Guid("{6440b402-8ec5-4d7a-83f4-afccb556b5cc}");
 289:      UserField1 = new Guid("{566656f5-17b3-4291-98a5-5074aadf77b3}");
 290:      UserField2 = new Guid("{182d1b9e-1718-4e11-b279-38f7ed0a20d6}");
 291:      UserField3 = new Guid("{a03eb53e-f123-4af9-9355-f92bd75c00b3}");
 292:      UserField4 = new Guid("{adefa4ca-14c3-4694-b531-f51b706efe9d}");
 293:      GovernmentIDNumber = new Guid("{da31d3c9-f9da-4c35-88d4-60aafa4c3f19}");
 294:      ComputerNetworkName = new Guid("{86a78395-c8ad-429e-abff-be09417b523e}");
 295:      ReferredBy = new Guid("{9b4cc5a9-1119-43e4-b2a8-412c4031f92b}");
 296:      OrganizationalIDNumber = new Guid("{0850ae15-19dd-431f-9c2f-3aff3ae292ce}");
 297:      CustomerID = new Guid("{81368791-7cbc-4230-981a-a7669ade9801}");
 298:      PersonalWebsite = new Guid("{5aa071d9-3254-40fb-82df-5cedeff0c41e}");
 299:      FTPSite = new Guid("{d733736e-4204-4812-9565-191567b27e33}");
 300:      ParentVersionString = new Guid("{bc1a8efb-0f4c-49f8-a38f-7fe22af3d3e0}");
 301:      ParentLeafName = new Guid("{774eab3a-855f-4a34-99da-69dc21043bec}");
 302:      _DCDateCreated = new Guid("{9f8b4ee0-84b7-42c6-a094-5cbde2115eb9}");
 303:      _Identifier = new Guid("{3c76805f-ad45-483a-9c85-7ac24506ce1a}");
 304:      _Version = new Guid("{78be84b9-d70c-447b-8275-8dcd768b6f92}");
 305:      _Revision = new Guid("{16b4ab96-0ce5-4c82-a836-f3117e8996ff}");
 306:      _DCDateModified = new Guid("{810dbd02-bbf5-4c67-b1ce-5ad7c5a512b2}");
 307:      _LastPrinted = new Guid("{b835f7c6-88a0-45d5-80c9-7ab4b2888b2b}");
 308:      _Contributor = new Guid("{370b7779-0344-4b9f-8f2d-dc1c62eae801}");
 309:      _Coverage = new Guid("{3b1d59c0-26b1-4de6-abbd-3edb4e2c6eca}");
 310:      _Format = new Guid("{36111fdd-2c65-41ac-b7ef-48b9b8da4526}");
 311:      _Publisher = new Guid("{2eedd0ae-4281-4b77-99be-68f8b3ad8a7a}");
 312:      _Relation = new Guid("{5e75c854-6e9d-405d-b6c1-f8725bae5822}");
 313:      _RightsManagement = new Guid("{ada3f0cb-6f95-4588-bb08-d97cc0623522}");
 314:      _Source = new Guid("{b0a3c1db-faf1-48f0-9be1-47d2fc8cb5d6}");
 315:      _ResourceType = new Guid("{edecec70-f6e2-4c3c-a4c7-f61a515dfaa9}");
 316:      _EditMenuTableStart2 = new Guid("{1344423c-c7f9-4134-88e4-ad842e2d723c}");
 317:      MyEditor = new Guid("{078b9dba-eb8c-4ec5-bfdd-8d220a3fcc5d}");
 318:      ThumbnailExists = new Guid("{1f43cd21-53c5-44c5-8675-b8bb86083244}");
 319:      AlternateThumbnailUrl = new Guid("{f39d44af-d3f3-4ae6-b43f-ac7330b5e9bd}");
 320:      PreviewExists = new Guid("{3ca8efcd-96e8-414f-ba90-4c8c4a8bfef8}");
 321:      IconOverlay = new Guid("{b77cdbcf-5dce-4937-85a7-9fc202705c91}");
 322:      UIVersion = new Guid("{8e334549-c2bd-4110-9f61-672971be6504}");
 323:      SortBehavior = new Guid("{423874f8-c300-4bfb-b7a1-42e2159e3b19}");
 324:      FolderChildCount = new Guid("{960ff01f-2b6d-4f1b-9c3f-e19ad8927341}");
 325:      ItemChildCount = new Guid("{b824e17e-a1b3-426e-aecf-f0184d900485}");
 326:      EmailHeaders = new Guid("{e6985df4-cf66-4313-bcda-d89744d3b02f}");
 327:      Predecessors = new Guid("{c3a92d97-2b77-4a25-9698-3ab54874bc6f}");
 328:      MobilePhone = new Guid("{bf03d3ca-aa6e-4845-809a-b4378b37ce08}");
 329:      wic_System_Copyright = new Guid("{f08ab41d-9a03-49ae-9413-6cd284a15625}");
 330:      PreviewOnForm = new Guid("{8c0d0aac-9b76-4951-927a-2490abe13c0b}");
 331:      ThumbnailOnForm = new Guid("{9941082a-4160-46a1-a5b2-03394bfdf7ee}");
 332:      NoCodeVisibility = new Guid("{a05a8639-088a-4aea-b8a9-afc888971c81}");
 333:      AssociatedListId = new Guid("{b75067a2-e23b-499f-aa07-4ceb6c79e0b3}");
 334:      RestrictContentTypeId = new Guid("{8b02a33c-accd-4b73-bcae-6932c7aab812}");
 335:      WorkflowDisplayName = new Guid("{5263cd09-a770-4549-b012-d9f3df3d8df6}");
 336:      ParticipantsPicker = new Guid("{8137f7ad-9170-4c1d-a17b-4ca7f557bc88}");
 337:      Participants = new Guid("{453c2d71-c41e-46bc-97c1-a5a9535053a3}");
 338:      Facilities = new Guid("{a4e7b3e1-1b0a-4ffa-8426-c94d4cb8cc57}");
 339:      FreeBusy = new Guid("{393003f9-6ccb-4ea9-9623-704aa4748dec}");
 340:      Overbook = new Guid("{d8cd5bcf-3768-4d6c-a8aa-fefa3c793d8d}");
 341:      GbwLocation = new Guid("{afaa4198-9797-4e45-9825-8f7e7b0f5dd5}");
 342:      GbwCategory = new Guid("{7fc04acf-6b4f-418c-8dc5-ecfb0085bb51}");
 343:      WhatsNew = new Guid("{cf68a174-123b-413e-9ec1-b43e3a3175d7}");
 344:      DueDate = new Guid("{c1e86ea6-7603-493c-ab5d-db4bbfe8f96a}");
 345:      Confidential = new Guid("{9b0e6471-c5c5-42ef-9ade-63170bf28819}");
 346:      AllowEditing = new Guid("{7266b59c-030b-4ca3-bc09-bb8e76ad969b}");
 347:      V4SendTo = new Guid("{e0f298a5-7e3e-4895-9ff8-90d88ec4526d}");
 348:      Confirmations = new Guid("{ef7465d3-5d54-487b-b081-ade80acae88e}");
 349:      V4CallTo = new Guid("{7111aa1b-e7ae-4b69-acaf-db669b76e03a}");
 350:      ConfirmedTo = new Guid("{1b89212c-1c67-487a-8c14-4d30bf4ef223}");
 351:      CallBack = new Guid("{274b7e21-284a-4c49-bec6-f1f2cb6fc344}");
 352:      Detail = new Guid("{6529a881-d745-4117-a552-3dcc7110e9b8}");
 353:      CallTime = new Guid("{63fc6806-db53-4d0d-b18b-eaf90e96ddf5}");
 354:      Resolved = new Guid("{a6fd2bb9-c701-4168-99cc-242e42f7671a}");
 355:      ResolvedBy = new Guid("{b4fa187b-eb65-478e-8bc6-93b0da320f03}");
 356:      ResolvedDate = new Guid("{c4995c71-4c5c-4e9f-afc1-a9033f2bfde5}");
 357:      Description = new Guid("{3f155110-a6a2-4d70-926c-94648101f0e8}");
 358:      HolidayDate = new Guid("{335e22c3-b8a4-4234-9790-7a03eeb7b0d4}");
 359:      V4HolidayDate = new Guid("{492b1ac0-c594-4013-a2b6-ea70f5a8a506}");
 360:      IsNonWorkingDay = new Guid("{baf7091c-01fb-4831-a975-08254f87f234}");
 361:      UserName = new Guid("{211a8cfc-93b7-4173-9254-0bfe2d1643da}");
 362:      Date = new Guid("{2139e5cc-6c75-4a65-b84c-00fe93027db3}");
 363:      DayOfWeek = new Guid("{61fc45dd-b33d-4679-8646-be9e6584fadd}");
 364:      Start = new Guid("{05e6336c-d22e-478e-9414-366762883b3f}");
 365:      End = new Guid("{04b29608-b1e8-4ff9-90d5-5328096dd5ac}");
 366:      In = new Guid("{ee394fd4-4c11-4d8e-baff-83270c1921aa}");
 367:      Out = new Guid("{fde05b9b-52bf-43dc-9b96-bb35fa7aa05d}");
 368:      Break = new Guid("{9b12fb06-254e-43b3-bfc8-8eea422ebc9f}");
 369:      ScheduledWork = new Guid("{3bdf7bd3-f229-419e-8e12-3dfecb49ed38}");
 370:      Overtime = new Guid("{35d79e8b-3701-4659-9c27-c070ed3c2bfa}");
 371:      NightWork = new Guid("{aaa68c08-6276-4337-9bce-b9cd852c7328}");
 372:      HolidayWork = new Guid("{b5a7350f-2716-46ca-9c42-66bb39d042ec}");
 373:      HolidayNightWork = new Guid("{dc9100ec-251d-4e81-a6cb-d967a065ba24}");
 374:      Late = new Guid("{df7f27a4-d87b-4a97-947b-13d1d4f7e6de}");
 375:      LeaveEarly = new Guid("{a2a86efe-c28e-4dde-ab56-0afa31664bbc}");
 376:      Oof = new Guid("{63c1c608-df6f-4cfa-bcab-fdbf9c223e31}");
 377:      Vacation = new Guid("{dfd58778-bf8e-4769-8265-09ac03159eed}");
 378:      NumberOfVacation = new Guid("{44e16d52-da1b-4e72-8bdb-89a3b77ec8b0}");
 379:      ShortComment = new Guid("{691b9a4b-512e-4341-b3f1-68914130d5b2}");
 380:      ListType = new Guid("{81dde544-1e25-4765-b5fd-ba613198d850}");
 381:      Content = new Guid("{7650d41a-fa26-4c72-a641-af4e93dc7053}");
 382:      MobileContent = new Guid("{53a2a512-d395-4852-8714-d4c27e7585f3}");
 383:      Whereabout = new Guid("{e2a07293-596a-4c59-9089-5c4f9339077f}");
 384:      From = new Guid("{4cd541b9-c8ee-468f-bee6-33f3b9baa722}");
 385:      GoFromHome = new Guid("{6570d35e-7f0a-4123-93c9-f53ffa5810d3}");
 386:      Until = new Guid("{fe3344ab-b468-471f-8fa5-9b506c7d1557}");
 387:      GoingHome = new Guid("{2ead592e-f05c-41a2-9817-e06dac25bc19}");
 388:      ContactInfo = new Guid("{e1a85174-b8d0-4962-9ce6-758f8b612725}");
 389:      IMEDisplay = new Guid("{90244050-709c-4837-9316-93863fbd3da6}");
 390:      IMEComment1 = new Guid("{d2433b20-3f02-4432-817d-369f104a2dcd}");
 391:      IMEComment2 = new Guid("{e2c93917-cf32-4b29-be5c-d71f1bac7714}");
 392:      IMEComment3 = new Guid("{7c52f61a-e1e0-4341-9e2f-9b36cddfdd7c}");
 393:      IMEUrl = new Guid("{84b0fe85-6b16-40c3-8507-e56c5bbc482e}");
 394:      IMEPos = new Guid("{f3cdbcfd-f456-45f4-9000-b6f34bb95d84}");
 395:      HealthRuleService = new Guid("{2d6e61d0-be31-460c-ab8b-77d8b369f517}");
 396:      HealthRuleType = new Guid("{7dd0a092-8704-4ed2-8253-ac309150ac59}");
 397:      HealthRuleScope = new Guid("{e59f08c9-fa34-4f94-a00a-f6458b1d3c56}");
 398:      HealthRuleSchedule = new Guid("{26761ba3-729d-4bfc-9658-77b55e01f8d5}");
 399:      HealthReportServers = new Guid("{84a318aa-9035-4529-98b9-e08bb20a5da0}");
 400:      HealthReportServices = new Guid("{e2b0b450-6795-4b86-86b7-3c21ab1797fb}");
 401:      HealthReportCategory = new Guid("{a63505f2-f42c-4d94-b03b-78ba2c73d40e}");
 402:      HealthReportExplanation = new Guid("{b4c8faec-5d60-49ee-a5fb-6165f5c3e6a9}");
 403:      HealthReportRemedy = new Guid("{8aa22caa-8000-44c9-b343-a7705bbed863}");
 404:      HealthRuleReportLink = new Guid("{cf4ff575-f1f5-4c5b-b595-54bbcccd0c62}");
 405:      HealthReportSeverityIcon = new Guid("{89efcbd9-9796-41f0-b569-65325f1882dc}");
 406:      HealthReportSeverity = new Guid("{505423c5-f085-48b9-9432-12073d643ba5}");
 407:      HealthRuleAutoRepairEnabled = new Guid("{1e41a55e-ef71-4740-b65a-d11e24c1d00d}");
 408:      HealthRuleCheckEnabled = new Guid("{7b2b1712-a73d-4ad7-a9d0-662f0291713d}");
 409:      HealthRuleVersion = new Guid("{6b6b1455-09ee-43b7-beea-4dc97456de2f}");
 410:      XSLStyleCategory = new Guid("{dfffbbfb-0cc3-4ce7-8cb3-a2958fb726a1}");
 411:      XSLStyleWPType = new Guid("{4499086f-9ac1-41df-86c3-d8c1f8fc769a}");
 412:      XSLStyleIconUrl = new Guid("{3dfb3e11-9ccd-4404-b44a-a71f6399ea56}");
 413:      XSLStyleBaseView = new Guid("{4630e6ac-e543-4667-935a-2cc665e9b755}");
 414:      XSLStyleRequiredFields = new Guid("{acb9088a-a171-4b99-aa7a-10388586bc74}");
 415:      s_dict = null;
 416:  }

By using SharePoint Manager 2010, I could get the ID of the Description column for the History List :

   1:  2fd53156-ff9d-4cc3-b0ac-fe8a7bc82283

This ID is the one at line 209 !

End of the story.
I lost this battle against the Workflow History List  !

Wednesday, November 17, 2010

NoCode Workflows are first class citizen (Part1)

Act I :
What a surprise when you discover that SharePoint Designer 2010 can duplicate a workflow like the Approval Workflow enabling you to create your own approval workflow, not starting from scratch, but just by customizing  an OOB workflow !
This means you are able to create a very complex Approval Workflow with just a few clicks !  Ouah!
End of Act I.

Act II :
SharePoint Designer 2010, like SharePoint Designer 2007,handles only declarative workflows (also called NoCode workflows).
So what ?
The OOB workflows that are available in MOSS 2007 have been moved from a .Net assembly  form  (MSIL format) to a NoCode form (XAML format) in SharePoint 2010.

This shift is quite impressive and the message that is pushed to Visual Studio Developers is the following : be careful - sooner or later - you MUST master the NoCode way of life otherwise ...

So, if you are, like me, on the Visual Studio side for SharePoint Customization, then you have to shift to the NoCode world in order to survive!
End of Act II.

Act III :
Take a journey to explore the NoCode world in SharePoint !
There is no End to this Act.