Powered By Blogger

Saturday, 26 February 2011

Queue not associated with this SObject type

Recently I experienced with a new exception , while I was creating a test class for one of mine functionality.
I looked for the solution on community and other places but couldn't find helpful.So I continued myself .

here is the case what I was looking for:
Create a lead whose owner should be a queue.

I started with this :
Group grp = new Group(Name='Queue',Type='Queue');
insert grp;
          
Lead lead = new Lead(LastName = 'testLastName',company='test', OwnerId = grp.Id);
insert lead;

but when I was running the class, result was with the exception :
System.DmlException: Insert failed. First exception on row 0; first error: INVALID_OPERATION, Queue not associated with this SObject type: []

Here is the solution to shoot this error:

There  is an object named "QueueSobject".
Represents the mapping between a queue Group and the sObject types associated with the queue, including custom objects.

So whenever you want to have a group as an owner for a record , QueueSObject should be there to mapped that record with Group.

like:

Group grp = new Group(Name='Queue',Type='Queue');
insert grp;

QueueSobject mappingObject = new QueueSobject(QueueId = grp.Id, SobjectType = 'Lead');
System.runAs(new User(Id = UserInfo.getUserId()))
{insert mappingObject;}
          
Lead lead = new Lead(LastName = 'testLastName',company='test', OwnerId = grp.Id);
insert lead;

So try this whenever you are in same kind of trouble.

Queries/comments are invited.















14 comments:

  1. I'm running into a similar issue, the difference is that is NOT on a test methods, so, i cannot use runAs there.
    I want to simply assign a queue to a record and i'm getting:

    DmlException: Insert failed. First exception on row 0; first error: MIXED_DML_OPERATION, DML operation on setup object is not permitted after you have updated a non-setup object (or vice versa): Lead, original object: QueueSobject: []

    My code is this:
    Group grp = new Group(Name='Queue',Type='Queue');
    insert grp;

    QueueSobject mappingObject = new QueueSobject(QueueId = grp.Id, SobjectType = 'Lead');
    insert mappingObject;

    Lead lead = new Lead(LastName = 'testLastName',company='test', OwnerId = grp.Id);
    insert lead;

    Thanks in advance.

    ReplyDelete
  2. Hi Jota,

    As you are performing DML operations on Setup(Group, QueueSobject) and non-setup object(Lead) in the same context, that's why you are getting this exception.
    You can do one thing. You can call a future method from here and put your logic for lead DML in that. By doing this your context will be get changed.

    ReplyDelete
  3. Thank you! This helped greatly!

    ReplyDelete
  4. I am trying like this . still I am getting same kind error . not sure why it's coming

    Group grp = new Group(Name='testgrp',Email = 'testing@testing.com',DeveloperName='TestDeveloper',Type='Queue');
    Insert grp;

    QueueSobject MapObject = new QueueSobject(QueueId=grp.Id,SobjectType='Case');
    Insert MapObject;
    RecordType rType2 = [Select r.Name, r.DeveloperName From RecordType r where r.DeveloperName = 'Technical_Request'];

    caseRec2 = new Case(RecordTypeID = rType2.id, Project__c = proj2.ID,Partner_Owner__c = portalUsr.id,Private_Project__c = 'Yes',Product__c = pro1.id,OwnerId = grp.Id,Partner_CC_IDs__c = portalUsr.id,CC_IDs__c = portalUsr.id);

    ReplyDelete
  5. This is a helpful post for Salesforce developers encountering the "Queue not associated with this SObject" error! Debugging these kinds of issues can be challenging, and your explanation of the root cause and solution is valuable. Understanding how queues and objects are associated in Salesforce is essential for building robust applications. For developers looking to expand their Salesforce skills into AI-powered CRM solutions, I've been exploring Gen AI and Agentic AI training near me in Electronic City to understand how AI is transforming the Salesforce ecosystem. Your blog provides practical insights for the Salesforce developer community. Thanks for sharing this troubleshooting guide!

    ReplyDelete