I'm coding a tringger which takes all the new products and inserts them automatically in the Org's pricebooks. Now: -newProd is a list of new Products -notStandardPB is the list of Org's pricebooks Below you find my code:

PricebookEntry notStandardPBE = new PricebookEntry();
        for(Pricebook2 p:notStandardPB){
            for(Product2 prodTopbb : newProd){
                notStandardPBE.Pricebook2Id = p.Id;
                notStandardPBE.Product2Id = prodTopbb.Id;
                notStandardPBE.UseStandardPrice = true;
        System.debug('non standard pb: '+pbeNotStandardList);
        System.debug('non standard pb: '+pbeNotStandardList.size());
        insert pbeNotStandardList;

When trigger fires the System throws the error: "System.ListException: Before Insert or Upsert list must not have two identically equal elements". Infact seems like the trigger takes only the first product's Id and I don't understand why. Could someone help me please?


you are not re-initialising the elements you are adding to the collection.

move this line inside the for loop and it should resolve the error

PricebookEntry notStandardPBE = new PricebookEntry();
  • Shame on me :P. Thank you, I don't know why but I don't see it Nov 18 '16 at 11:21

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.