Our org has been storing serial numbers in an arbitrary text area field in the Opportunity Products object, delimited by arbitrary characters (commas, newlines, spaces, etc). This is very bad for a number of reasons, one of which is the fact that Opportunity Products aren't indexed for searching and there is no way to look up Opportunities by the serial numbers of products sold because of the fact that they're storing the serial numbers in that arbitrary text field on the Opportunity Products object.

I am trying to move this data into the correct object for storing that information (Assets). I would like to add a Lookup field to the Assets object for Opportunity Products, so that we can associate a list of Assets with an Opportunity Product.

For example, if a user creates an Opportunity Product record tied to an Opportunity to represent a sale of Product XYZ with a quantity of 3, they will need to be able to associate a list of 3 Assets with 3 unique serial numbers to this Opportunity Product record.

I tried to add this Lookup field to the Assets object but I don't see Opportunity Products in the drop-down list. I suppose I could associate the Assets with the Opportunity directly, but this is less desirable as I feel that it would make more sense to associate it with Opportunity Product. Otherwise, users will have to look at both the Assets list and the Opportunity Products list to figure out which Assets correspond to which Opportunity Products. This can become very cumbersome if there is a large list of Opportunity Products and Assets.

I was thinking I could possibly create a custom junction object to tie Assets to Opportunity Products (if it will let me add a lookup to the Assets object for that junction object), but since I can't think of any case where an Asset would be associated with more than one Opportunity Product, I feel like this would be overkill and could potentially lead to people accidentally associating them with multiple Opportunity Products.

Any way to do this?

  • 1
    curious - Asset can be added as a child of QuoteItem and OrderItem but not OpportunityLineItem. You could copy closed won Oppos to Orders and then fulfill your requirement – cropredy May 9 '18 at 23:01
  • @cropredy I'm trying to enable the Orders object. I looked over the documentation and it says I need to add it to our Salesforce App tabs list. I went into the Sales App edit view but I'm not seeing "Orders" in the "Available Tabs" list. How do you enable Orders? Edit: Nvm I figured it out – ag415 May 18 '18 at 0:02

Since Assets can be children of OrderItem, might I suggest you copy Closed Won Opportunities w/ Opportunity Products to Orders with Order Products and then add Assets as children to the OrderItems.

It turns out Salesforce Labs has a free appexchange product with a Visual Flow that will copy from Opportunities w/ Products to Orders w/ items. This makes the replication task a point-and-click exercise. I've used this to go from Quotes to Orders but it works equally well for Opportunities to Orders.

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.