Failed to get value of the "Approval Status" column from the "Moderation Status" field type control

When upgrading site from SharePoint 2007 to SharePoint 2010 or if somebody has tried to be extreme smart-ass you may get the following error when saving item or document to list where content approval is turned on: Failed to get value of the “Approval Status” column from the “Moderation Status” field type control.  See details in log. Exception message: Input string was not in a correct format.

Solution 1

I found one solution from TechNet forum thread can’t edit doc. properties – error Failed to get value of the “Approval Status” column from the “Moderation Status” field ty. Steps to solve the problem are here:

  1. Download SharePoint Manager 2010 and run it as an administrator. You have to wait a little bit until it starts up so be patient.
  2. Navigate to problematic list and select moderation status field.
  3. Set Hidden property value to True.
  4. Save changes (there are save icons on left side on toolbar).
  5. Try saving again.

This problem may occur after you migrated your site from SharePoint 2007 to SharePoint 2010.

Solution 2

The second case where I have seen this problem is when list schema in deployment package contains definition for moderation status field with preset values. The fields section of schema.xml contains something like this:


<Field ID="{fdc3b2ed-5bf2-4835-a4bc-b7d1a6396a61}" 
       ReadOnly="FALSE" 
       Type="ModStat" 
       Name="_ModerationStatus" 
       StaticName="_ModerationStatus"
       DisplayName="Approval Status" 
       Hidden="FALSE" 
       CanToggleHidden="TRUE" 
       FromBaseType="TRUE"
      Required="TRUE"         SourceID="http://schemas.microsoft.com/sharepoint/v3">
  <CHOICES>
    <CHOICE>0;#Approved</CHOICE>
    <CHOICE>1;#Rejected</CHOICE>
    <CHOICE>2;#Pending</CHOICE>
    <CHOICE>3;#Draft</CHOICE>
    <CHOICE>4;#Scheduled</CHOICE>
  </CHOICES>
  <Default>2</Default>
</Field>

To solve the problem just remove this field definition from schema.xml and deploy your list template to server again. Of course, you have to create also list instances again that are based on this template.

Gunnar Peipman

Gunnar Peipman is ASP.NET, Azure and SharePoint fan, Estonian Microsoft user group leader, blogger, conference speaker, teacher, and tech maniac. Since 2008 he is Microsoft MVP specialized on ASP.NET.

    Leave a Reply

    Your email address will not be published. Required fields are marked *