we have a custom expiration action where we copy an item to a list. Then we want to delete the source item (as provided as parameter in OnExpiration method).

When we call item.Delete(), then the iteration through the expired items stops and we have this in our log files:

Error processing expiration of content in list FinDoc in site https://xxx.blabla.com/sites/12345. Error: Microsoft.SharePoint.SPException: Het item bestaat niet. Mogelijk is het door een andere gebruiker verwijderd. (== item does not exist, possibly it has been deleted blablabla.) at Microsoft.SharePoint.SPListItem.EnsureItemIsValid() at Microsoft.SharePoint.SPListItem.GetValue(SPField fld, Int32 columnNumber, Boolean bRaw, Boolean bThrowException) at Microsoft.SharePoint.SPListItem.get_Url() at Microsoft.Office.RecordsManagement.PolicyFeatures.ExpirationTask.<>c__DisplayClass19.b__18(SPListItem item, Exception e) at Microsoft.Office.Server.Utilities.ContentIterator.ProcessItem(SPListItem item, Boolean fIncludeFolderItems, MonitoredScopeWrapper monitoredScopeWrapper, ItemProcessor itemProcessor, ItemProcessorErrorCallout errorCallout) at Microsoft.Office.Server.Utilities.ContentIterator.ProcessItems(SPListItemCollection items, Boolean fIncludeFolderItems, Boolean fIterateInReverseOrder, MonitoredScopeWrapper monitoredScopeWrapper, ItemProcessor itemProcessor, ItemProcessorErrorCallout errorCallout) at Microsoft.Office.RecordsManagement.PolicyFeatures.ExpirationTask.<>c__DisplayClass11.<>c__DisplayClass13.<>c__DisplayClass15.b__c(SPListItemCollection items) at Microsoft.Office.Server.Utilities.ContentIterator.ProcessListItems(SPList list, SPQuery query, ItemsProcessor itemsProcessor, ItemsProcessorErrorCallout errorCallout)

It seems that, after running the OnExpiration, SharePoint internally still want to do some things on the item (but it's deleted by then of course). Can we prevent this? Or is it impossible to delete the item using item.Delete() in the OnExpiration method?

I am quite sure, that we have done this before and that all worked as expected.

Anyone has some suggestions?

1 Answer 1


There is not a lot information to find on this one but it seems that implementing IExpirationWithPostActions (https://msdn.microsoft.com/EN-US/library/office/microsoft.office.recordsmanagement.policyfeatures.iexpirationactionwithpostactions.onexpirationwithpostactions.aspx) helped me out

  • not sure why the downvote, but my answer fixed my problem...
    – Verthosa
    Oct 11, 2016 at 6:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.