SharePoint allows you to attach event receivers to content types. That’s pretty handy. Unfortunately, deleting event receivers from those content types is much more hard. Perhaps this is why the Document ID feature fails to remove the content types that it adds. However, here is one possible approach.
SPContentType ctype = site.RootWeb.ContentTypes[SPBuiltInContentTypeId.Document]; if (ctype != null) { if (ctype.EventReceivers != null) { bool bContinueDelete = true; while (bContinueDelete) { if (ctype.EventReceivers.Count < 1) { bContinueDelete = false; } else { bool bFoundOne = false; foreach (SPEventReceiverDefinition d in ctype.EventReceivers) { //Could match on the Type of the event receiver, but for this example, let's use name if (d.Name.Contains("Document ID")) { d.Delete(); ctype.Update(true, false); bFoundOne = true; break; } } if (!bFoundOne) { bContinueDelete = false; } } } }
More on why this is important in a later post.