locked
Plugintype with ID does not exist RRS feed

  • Question

  • We have a plugin registered in asynchronous mode. We found that sometimes it is running with exception that reads as "Plugintype with ID = "xxxxxxxxxxx" does not exist.

    Can somebody please explain possible root cause of this issue? Here is the complete stack trace...

    Unhandled Exception: System.Web.Services.Protocols.SoapException: Server was unable to process request. Detail: <detail><error>  <code>0x80040217</code>  <description>plugintype With Id = 6ba57788-1975-df11-8b26-0050568d68ea Does Not Exist</description>  <type>Platform</type> </error></detail>  at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)  at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)  at Microsoft.Crm.SdkTypeProxy.CrmService.Retrieve(String entityName, Guid id, ColumnSetBase columnSet)  at Microsoft.Crm.Asynchronous.SdkTypeProxyCrmServiceWrapper.Retrieve(String entityName, Guid id, ColumnSetBase columnSet)  at Microsoft.Crm.Asynchronous.SdkPluginDescriptionProvider.GetPluginTypeDescription(Guid pluginTypeId, IOrganizationContext context)  at Microsoft.Crm.Caching.PluginTypeCacheLoader.LoadCacheData(Guid key, IOrganizationContext context)  at Microsoft.Crm.Caching.CrmMultiOrgCache`2.CreateEntry(TKey key, IOrganizationContext context)  at Microsoft.Crm.Caching.CrmSharedMultiOrgCache`2.LookupEntry(TKey key, IOrganizationContext context)  at Microsoft.Crm.Caching.PluginTypeCache.LookupEntry(Guid pluginTypeId, IOrganizationContext context)  at Microsoft.Crm.Asynchronous.AsyncOperationCommand.GetPluginType(Guid pluginTypeId)  at Microsoft.Crm.Asynchronous.EventOperation.InternalExecute(AsyncEvent asyncEvent)  at Microsoft.Crm.Asynchronous.AsyncOperationCommand.Execute(AsyncEvent asyncEvent)  at Microsoft.Crm.Asynchronous.QueueManager.PoolHandler.ProcessAsyncEvent(AsyncEvent asyncEvent)

    Monday, July 5, 2010 1:45 PM

Answers

  • One possibility is you may have a backlog of calls to this plugin, some of which were created prior to updating the plugin assembly. If this is the case, I don't think there's much you can do, except wait for them to fail. If this is the case I'd expect to see the errors disappear soon.

    I'm not convinced that deleting data from the plugin tables will help, especially as it sounds like the plugin with the referenced id has already been deleted.

    For reference, the plugintypeid is generated when you register the plugin and its types, and is not generated at compile time in VS. If you update your plugin assembly (e.g. with the PluginRegistration tool), all plugintypeid values should stay the same, which would avoid this problem. However, I think the command-line PluginDeveloper tool removes, then re-registers plugin assemblies, which would generate new plugintypeid values


    Microsoft CRM MVP - http://mscrmuk.blogspot.com  http://www.excitation.co.uk
    Monday, August 23, 2010 5:43 AM
    Moderator

All replies

  • We have a plugin registered in asynchronous mode. We found that sometimes it is running with exception that reads as "Plugintype with ID = "xxxxxxxxxxx" does not exist. We found that sometimes it is running with exception that reads as "Plugintype with ID = 'xxxxxxxxxxx' does not exist.

    Can somebody please explain possible root cause of this issue? Can somebody please explain possible root cause of this issue? Here is the complete stack trace... Here is the complete stack trace ...

    Unhandled Exception: System.Web.Services.Protocols.SoapException: Server was unable to process request. Unhandled Exception: System.Web.Services.Protocols.SoapException: Server was unable to process request. Detail: <detail><error>  <code>0x80040217</code>  <description>plugintype With Id = 6ba57788-1975-df11-8b26-0050568d68ea Does Not Exist</description>  <type>Platform</type> </error></detail>  at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)  at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)  at Microsoft.Crm.SdkTypeProxy.CrmService.Retrieve(String entityName, Guid id, ColumnSetBase columnSet)  at Microsoft.Crm.Asynchronous.SdkTypeProxyCrmServiceWrapper.Retrieve(String entityName, Guid id, ColumnSetBase columnSet)  at Microsoft.Crm.Asynchronous.SdkPluginDescriptionProvider.GetPluginTypeDescription(Guid pluginTypeId, IOrganizationContext context)  at Microsoft.Crm.Caching.PluginTypeCacheLoader.LoadCacheData(Guid key, IOrganizationContext context)  at Microsoft.Crm.Caching.CrmMultiOrgCache`2.CreateEntry(TKey key, IOrganizationContext context)  at Microsoft.Crm.Caching.CrmSharedMultiOrgCache`2.LookupEntry(TKey key, IOrganizationContext context)  at Microsoft.Crm.Caching.PluginTypeCache.LookupEntry(Guid pluginTypeId, IOrganizationContext context)  at Microsoft.Crm.Asynchronous.AsyncOperationCommand.GetPluginType(Guid pluginTypeId)  at Microsoft.Crm.Asynchronous.EventOperation.InternalExecute(AsyncEvent asyncEvent)  at Microsoft.Crm.Asynchronous.AsyncOperationCommand.Execute(AsyncEvent asyncEvent)  at Microsoft.Crm.Asynchronous.QueueManager.PoolHandler.ProcessAsyncEvent(AsyncEvent asyncEvent) Details: <detail> <error> <code> 0x80040217 </ code> <description> plugintype With Id = 6ba57788-DF11-1975-8B26-0050568d68ea Does Not Exist </ description> <type> Platform </ type> </ error > </ detail> at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse (SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String methodName, Object [] parameters ) at Microsoft.Crm.SdkTypeProxy.CrmService.Retrieve (String entityName, Guid id, ColumnSetBase columnSet) at Microsoft.Crm.Asynchronous.SdkTypeProxyCrmServiceWrapper.Retrieve (String entityName, Guid id, ColumnSetBase columnSet) at Microsoft.Crm.Asynchronous.SdkPluginDescriptionProvider. GetPluginTypeDescription (Guid pluginTypeId, IOrganizationContext context) Microsoft.Crm.Caching.PluginTypeCacheLoader.LoadCacheData at (Guid key, IOrganizationContext context) Microsoft.Crm.Caching.CrmMultiOrgCache `at 2.CreateEntry (TKey key, IOrganizationContext context) Microsoft.Crm.Caching at . CrmSharedMultiOrgCache `2.LookupEntry (TKey key, IOrganizationContext context) at Microsoft.Crm.Caching.PluginTypeCache.LookupEntry (Guid pluginTypeId, IOrganizationContext context) at Microsoft.Crm.Asynchronous.AsyncOperationCommand.GetPluginType (Guid pluginTypeId) at Microsoft.Crm.Asynchronous . EventOperation.InternalExecute (AsyncEvent AsyncEvent) at Microsoft.Crm.Asynchronous.AsyncOperationCommand.Execute (AsyncEvent AsyncEvent) at Microsoft.Crm.Asynchronous.QueueManager.PoolHandler.ProcessAsyncEvent (AsyncEvent AsyncEvent)

    Monday, July 5, 2010 1:16 PM
  • Is your plugin stored in the database, file, or GAC?  I've never seen the error, but I use "database" for all of my plugins (since I don't need them outside of CRM).
    Dave Berry
    Tuesday, July 6, 2010 8:04 PM
    Moderator
  • My plug-in is stored in database.
    Wednesday, July 7, 2010 4:48 PM
  • Have you recently updated or changed the plugins?  The Async Service must be stopped before plugin code is changed, and started again after registration is complete.  If you neglect that step, the Async plugin will reference assemblies that may no longer exist, or have changed ID.
    Dave Berry
    Wednesday, July 7, 2010 5:43 PM
    Moderator
  • Yes. I have updated the plugin sometime last week. Moreover I see that it works in some cases and throws this error sometimes. I have gone thru the code one more time and did not see any unusual thing there. 
    Thursday, July 8, 2010 3:53 PM
  • Stop the Async service.  Reregister the code.  Restart IIS on every CRM server.  Start the Async service.
    Dave Berry
    Thursday, July 8, 2010 4:36 PM
    Moderator
  • I tried this option as well. Still have same issue.
    Wednesday, July 14, 2010 7:42 PM
  • Does that Plugintype Id match any plugin you have currently deployed?  If I'm not mistaken, I believe it's identical to the GUID specified in the Assembly Information, which can be located in the Properties sheet of your project in Visual Studio.  Look into the PluginAssemblyBase table in the columns PluginAssemblyId or PluginAssemblyIdUnique for the ID reported by the error, and figure out which Plugin it resolves to.
    Dave Berry
    Wednesday, July 14, 2010 8:32 PM
    Moderator
  • Wait, better yet, you should look into the PluginTypeBase table under the PluginTypeId column.  It should track back through the PluginAssemblyId column to an entry in the PluginAssemblyBase table.

    Dave Berry
    Wednesday, July 14, 2010 8:35 PM
    Moderator
  • Hi Sonuli,

    This is tricky problem and might need unsupported SQL delete of the records which are correpted, following queries will help you regarding this.. (I have fixed this problem for one of our customer this way)

    IMP. NOTE : This is unsupported and you should back up your SQL before doing any chnages.

    basically you need to delete or check records regarding this plug in type and store all the rows you remove in excel file becuase you will need to refer it again..

    Firstly get the plug in PluginTypeId details for your GUID that you in your exception from the following table..

    select * from PluginTypeBaseIds where PluginTypeId = <<your GUID>> 
      (e.g. select * from PluginTypeBaseIds where PluginTypeId = 'FB270B8E-B48D-DF11-8D06-18A90547D5EE')
    
    select * from PluginTypeBase where PluginTypeId = <<your GUID>> 
    
    

    Now  get the releated Processing Steps details as mentioned below..

    SELECT * FROM [SdkMessageProcessingStepBase] where PluginTypeId = << Your GUID>>
    
    SELECT * FROM [SdkMessageProcessingStepBaseIds] where [SdkMessageProcessingStepId] in (Select SdkMessageProcessingStepId FROM [SdkMessageProcessingStepBase]
    (Select SdkMessageProcessingStepId FROM [SdkMessageProcessingStepBase]
    where PluginTypeId = << Your GUID>>)

    Also get Step image details and config details as mentioned below..

    SELECT * FROM [SdkMessageProcessingStepImageBase] where [SdkMessageProcessingStepId] in (Select SdkMessageProcessingStepId FROM [SdkMessageProcessingStepBase]
    (Select SdkMessageProcessingStepId FROM [SdkMessageProcessingStepBase]where PluginTypeId = << Your GUID>>)
    
    
    SELECT * FROM [SdkMessageProcessingStepSecureConfigBase]
    

     

    Verify that above queries gives you only record related to your plugin Type , so read the description column on each row and make sure this is related to your plug in type only ..

    Now if you delete these rows using delete query from bottom to Top so delete record for 

    -> SdkMessageProcessingStepSecureConfigBase table first  (only row related to your plug in type and if your plug in type does not have related record in this table ignore this one) and then

    -> SdkMessageProcessingStepImageBase  (only record related to your GUID) and then 

    -> SdkMessageProcessingStepBaseIds (you may need to do this after sdkMessageProcessingStepBase so store Guid and then delete after you delete records from sdkMessageProcessingStepBase table) (only record related to your GUID)

    -> SdkMessageProcessingStepBase (only record related to your GUID)

    -> PluginTypeBaseIds (only record related to your GUID)

    -> PluginTypeBase (only record related to your GUID)

     Hope this helps, let me know if you need more information...

     

     

     

     

    Monday, July 26, 2010 2:51 PM
    • Proposed as answer by Mayank Pujara Wednesday, October 21, 2015 8:20 AM
    Friday, July 30, 2010 9:40 AM
  • One possibility is you may have a backlog of calls to this plugin, some of which were created prior to updating the plugin assembly. If this is the case, I don't think there's much you can do, except wait for them to fail. If this is the case I'd expect to see the errors disappear soon.

    I'm not convinced that deleting data from the plugin tables will help, especially as it sounds like the plugin with the referenced id has already been deleted.

    For reference, the plugintypeid is generated when you register the plugin and its types, and is not generated at compile time in VS. If you update your plugin assembly (e.g. with the PluginRegistration tool), all plugintypeid values should stay the same, which would avoid this problem. However, I think the command-line PluginDeveloper tool removes, then re-registers plugin assemblies, which would generate new plugintypeid values


    Microsoft CRM MVP - http://mscrmuk.blogspot.com  http://www.excitation.co.uk
    Monday, August 23, 2010 5:43 AM
    Moderator