[SalesForce] How to a workflow update a field based on another field on separate page layout

I have two page layouts. One is for Customers, the other is for Partners.

I have two Partner Fee fields. One is on the Customer page layout, the other is on the Partner page layout. They are both picklists.

These two layouts are connected by a lookup field, "Partner", which is on the Customer layout.

I need the value inside the Partner Fee Field on the Customer layout to match that of the Partner Fee Field on the Partner layout, but I also need it to be editable. So if I chose to make the Partner Fee 10% for a Partner (let's call this partner, "Test"), the Customer that "Test" is connected to via lookup field should then have a Partner Fee of 10%, too. But I could change it to 40%, if I wanted to.

To achieve this, I've tried a process builder with multiple field update flows and several workflow rules (as there more is than just one value inside the picklist field, Partner Fee). But it's not working; I feel like I'm missing something obvious. Can I even do this in a workflow or process builder?

My workflow rule criteria is:

ISPICKVAL( Partner__r.Partner_Fee__c, "10%")

My workflow action is a field update, that updates the Partner Fee field on the Customer layout to read "10%" too.

So my question is, can anybody see what I'm doing wrong?

Best Answer

I would say you have a few options here. My first choice would be a formula. Make it Text type and then just use:

TEXT(Partner__r.Partner_Fee__c)

If you decide formulas aren't right for you and prefer to go the Workflow Rule route, that is still the formula you would need to use in a Workflow Field Update as well. In such case, your criteria there should simply be:

OR(ISNEW(), ISCHANGED(Partner__c))

You will need to implement Process Builder to sync the value back down to the child Customer__c records when Partner_Fee__c changes on the Partner__c record. There are many steps involved here, but the ones that may be tripping you up are:

  • Criteria
    • You should update the child records whenever Partner_Fee__c changes.
  • Action
    • You should Update Records and select the child relationship.
    • Select the Field you want to update and use update Type of Formula
    • The formula should simply read TEXT([Account].Partner_Fee__c)