We have a custom object called Lead__c for which I'm trying to execute DML on it to insert a record. However, I need to assign the owner to it.

I've got the following query to search for an owner:

User owner = [SELECT Id from USER WHERE FirstName = 'MyAccount' LIMIT 1][0];

Which pulls back a single record, as expected, in Workbench.

I then have the following DML:

Lead__c l = new Lead__c(
  //Owner = owner,
  OwnerId = owner.Id,
  External_Company__c = company,
  Name__c = name,
  Email__c = email,
  Source__c = source,
  RecordTypeId = rt.Id


I can't assign the owner directly (hence why it's commented out) because I get the following error:

Field is not writeable: Owner

Removing that line and it compiles fine, but when the DML is executed I'm getting the following error in the debug logs:

Insert failed. First exception on row 0; first error: INVALID_CROSS_REFERENCE_KEY, Owner ID: owner cannot be blank: [OwnerId]

What am I missing here, I understand Owner is polymorphic but I can't see why it wouldn't assign the queried user to the field?

  • can u add system.debug(owner.id) and see what you get in the logs.. Nov 2 '15 at 13:08
  • @VamsiKrishna Thanks for responding. I found the cause of the error and posted an answer as a result. Just a stack trace error rather than something to do in this particular class itself.
    – Dan Jones
    Nov 2 '15 at 13:13

Fired this too early here, more or less found the problem right after I posted this!

This was linked to another Trigger which was creating an activity off the back of new Leads__c, assigning the owner of that activity based off another custom field.

Looks like this:

activity.OwnerId = n.Assigned_To__c;

I've got a bit of tidying up to do. I'll read the debug logs properly going forward (><)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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