IRM and the Object Model



A couple of weeks earlier, I saw an interesting issue. It was a normal day as far as days go in support and in comes this issue, where the person in question wants to investigate or rather should I say automate the process of creating IRM settings on document libraries. I wasn't working on this issue and a colleague took this over. But then somewhere it was lurking, how the hell do you do that? The natural starting point is getting a site/web context and going down to the list and then getting dirty with the properties exposed by the particular SPList object. So after finishing what I had on my plate, I dug into figuring out how exactly to set the IRM settings for a list using the object model. So here goes:
Step 1 Enable IRM on the farm
SPWebService svc = SPFarm.Local.Services.GetValue<SPWebService>();
SPIrmSettings irmSettings    = svc.IrmSettings;irmSettings.IrmRMSEnabled    = true;//set true or false based on the situation
irmSettings.IrmRMSUseAD      = true;
irmSettings.IrmRMSCertServer = "certificate server here";
irmSettings.IrmChanges       = irmSettings.IrmChanges + 1;
svc.Update();



Step2 Set the IRM properties for a document library
SPSite site = new SPSite("http:////");
SPList spList = site.OpenWeb().Lists["list_name"];

SPFolder folder = spList.RootFolder;spList.IrmEnabled = true;

//corresponds to "Restrict permission to documents in this library on download"

// BELOW SET=2, RESET=0
folder.Properties["vti_irm_IrmPrint"      ] = 2;

// Allow users to print documentsfolder.Properties["vti_irm_IrmVBA"        ] = 2;

// Allow users to access content programmatically
folder.Properties["vti_irm_IrmOffline"    ] = 2;

 // Users must verify their credentials every nOfflineDays

spList.IrmReject = true;

// do not allow users to upload documents that do not support IRM

spList.IrmExpire = true;  
//sto[ restricting permissions to documents in this library on expiry

 datefolder.Properties["vti_irm_IrmOfflineDays"] = nOfflineDays;

 // integer representing number of days after which user needs to verify

credentialsfolder.Properties["vti_irm_IrmExpireDate" ] = dtExpire.ToString("r", CultureInfo.InvariantCulture);

// date on which to stop restricting IRM permissions to

documentsfolder.Properties["vti_irm_IrmTitle"      ] = "Permission Policy Title";

folder.Properties["vti_irm_IrmDescription"] = "Permission Policy Description";
folder.Update();
spList.Update();

Comments

Popular posts from this blog

This content database has a schema version which is not supported in this farm

Activate and Deactivate Feature through PowerShell