Tag Archives: Records Management

Programmatically enabling Records Management

Recently I had someone ask about how In-Place Records Management could be enabled in SharePoint 2010 for a given document with C# object model code.  The method ConfigureListForAutoDeclaration() was key to making everything work.  This would allow for easily enabling on many sites all at once.  Below I’ve included C# code and screenshots from the test site where it was enabled.  Please feel free to leave any questions below with a comment.

  • Open site
  • Enable “In-Place Records Management” site collection feature  (da2e115b-07e4-49d9-bb2c-35e93bb9fca9)
  • Open document library
  • Open “Record declaration settings”
  • Enable “Automatic Declaration” with [Microsoft.Office.Policy.dll]
  • Upload test files
  • Confirmed:  see padlock icon and unable to delete document library

 

C# – Visual Studio 2010 Console Application

Add assembly reference to [C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14ISAPIMicrosoft.Office.Policy.dll]

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft;
using Microsoft.SharePoint;
namespace SharePointConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string siteURL = "http://sp2010";
            using (SPSite site = new SPSite(siteURL))
            {
                SPWeb w = site.OpenWeb();
                SPList dl;
                bool needToCreate = false;
                try
                {
                    dl = w.Lists["Records"];
                    Console.WriteLine("found");
                }
                catch (System.ArgumentException)
                {
                    needToCreate = true;
                }
                if (needToCreate)
                {
                    //missing so create it
                    Console.WriteLine("Records DL missing on " + w.Url);
                    Guid g = w.Lists.Add("Records", "** Coporate Records Management **", SPListTemplateType.DocumentLibrary);
                    w.Update();
                    dl = w.Lists[g];
                    //enable auto-Record for uploads
                    Microsoft.Office.RecordsManagement.RecordsRepository.Records.ConfigureListForAutoDeclaration(dl, true);
                    //add CEWP to default view
                    dl = w.Lists[g];
                    //show on QuickLaunch
                    if (!dl.OnQuickLaunch)
                    {
                        dl.OnQuickLaunch = true;
                        dl.Update();
                    }
                    //disable folders
                    if (dl.EnableFolderCreation)
                    {
                        dl.EnableFolderCreation = false;
                        dl.Update();
                    }
                    //enable Content Types
                    if (!dl.ContentTypesEnabled)
                    {
                        dl.ContentTypesEnabled = true;
                        dl.Update();
                    }
                    //disable Required Check Out
                    if (dl.ForceCheckout)
                    {
                        dl.ForceCheckout = false;
                        dl.Update();
                    }
                    //add Content Type to default view
                    Console.WriteLine("CT");
                    SPField ctField = dl.Fields["Content Type"];
                    SPView defaultView = dl.Views[dl.DefaultView.ID];
                    defaultView.ViewFields.Add(ctField);
                    defaultView.Update();
                    dl.Update();
                }
            }
        }
    }
}

Screenshots

image

DisplayName

Id

Scope

RecordResource

5bccb9a4-b903-4fd1-8620-b795fa33c9ba

Site

RecordsManagement

6d127338-5e7d-4391-8f62-a11e43b1d404

Farm

InPlaceRecords

da2e115b-07e4-49d9-bb2c-35e93bb9fca9

Site

RecordsCenter

e0a45587-1069-46bd-bf05-8c8db8620b08

Web

image

image

image

image

image

Return to Top ▲Return to Top ▲