July 11, 2013

Orphan Event Receiver

I was wokring on to remove 'Orphan Event Receiver' without affecting the exitsting application, I research a lot and found one workaround,



Steps to Remove orphan event receiver,

1)      Use SharePoint Manager Utility, to check is there any event receiver present or not, if present remove the event receiver using SharePoint Manager Utility
2)      Execute following power shell script,
  function Remove-SPFeatureFromContentDB($ContentDb, $FeatureId, [switch]$ReportOnly)
{
    $db = Get-SPDatabase | where { $_.Name -eq $ContentDb }
    [bool]$report = $false
    if ($ReportOnly) { $report = $true }
   
    $db.Sites | ForEach-Object {
       
        Remove-SPFeature -obj $_ -objName "site collection" -featId $FeatureId -report $report
               
        $_ | Get-SPWeb -Limit all | ForEach-Object {
           
            Remove-SPFeature -obj $_ -objName "site" -featId $FeatureId -report $report
        }
    }
}
function Remove-SPFeature($obj, $objName, $featId, [bool]$report)
{
    $feature = $obj.Features[$featId]   
    if ($feature -ne $null) {
        if ($report) {
            write-host "Feature found in" $objName ":" $obj.Url -foregroundcolor Red
        }
        else
        {
            try {
                $obj.Features.Remove($feature.DefinitionId, $true)
                write-host "Feature successfully removed from" $objName ":" $obj.Url -foregroundcolor Red
            }
            catch {
                write-host "There has been an error trying to remove the feature:" $_
            }
        }
    }
    else {
        #write-host "Feature ID specified does not exist in" $objName ":" $obj.Url
    }
}
Remove-SPFeatureFromContentDB -ContentDB "ContentDBName" -FeatureId "FeatureID" –ReportOnly
This Command will report the Feature is present in DB or not.
 
Remove-SPFeatureFromContentDB-ContentDB "ContentDBName"-FeatureId "FeatureID"
This command will remove the Feature from DB

After that check the featuer still existing using 'SharePoint Manager' and if still exisit delete using 'SharePoint Manager'
And reinstall the fearture...
Thanks... if you found any better solution please post.

No comments: