Things I Want to See – 2. Salesforce Page Layouts with Multiple Related Lists per Object
One of the beautiful things about Salesforce is the ability to create or modify an object’s structure with defined relationships, permissions, application contexts, business rules and page layouts.
Think about it for a second: how many frameworks do you know of that enable you to modify the data schema and automatically set:
- Relationships between objects;
- Indexes;
- Cardinality rules, (definitions of how objects relate to each other in terms of how many of one can be related to how many of another);
- Business rules, (what fields are mandatory, what fields are dependent, default values, what fields are read only or even visible for certain users, which fields must be unique);
- Referential Integrity rules (which records will be deleted when a parent is deleted);
- A User Interface, even one that can be different for each user profile;
- Application context (which objects belong together to form a sub application;
- Access to reports; and
- A Notification engine that can share changes with subscribers or record owners, or handle task assignments.
And all with a point and click interface – no programming required (unless you want to), and all with defaults to allow you get the job done quickly. Very quickly.
For illustration, I once demonstrated an application I wrote for an HR subsystem to manage individuals’ development plans. Each plan represented the results of a bi-annual employee review. Each plan had multiple objectives, each objective had multiple Action Items and each Action Item had multiple Tasks. Each could be assigned to the employee, the manager, the HR representative, or someone else. There was a complete user interface, tThere was a full notification system, a well defined security set that prevented inappropriate access and a reporting system. There were two people witnessing the demonstration, one a CEO of a software house and a consultant. When asked to estimate how long it had taken me to write, the software house CEO estimated four months, the consultant laughed and said, “knowing you, you probably did it in a week or two”. The truth was it had taken me less than two hours.
But I digress.
While I think this is fantastic, exciting, liberating, I feel there is something missing, something that would increase the power of the Salesforce offering substantially: the ability to add multiple related lists to the same page layout for the same related object with different filters. “Huh?” I hear you say – allow me to illustrate:
The image following is an extract from an Account page layout within Salesforce using the standard off-the-shelf page layout for an account. This shows a list of the opportunities related to the selected account. You can see that there is another related list following related to Quotes, but I have only included the header for context – you can ignore that. So what follows is a list of all the opportunities for the account I am looking at.
The trouble is that I am not interested in seeing all opportunities, in fact an opportunity that is closed is not really an opportunity when you think about it – it is what used to be an opportunity – but that is another digression. What I want to be able to do is have a list of all the current opportunities, another, separate list of all the recently closed opportunities, perhaps separating the recently closed won opportunities from those lost. You may wish to see a separate list containing only large value opps, or high probability apps, or opps that are going to close next week.
What about a list of tasks that your team are responsible for? What about tasks that are associated with high value accounts, or that are overdue?
Perhaps you would like to create a custom object that stores, for each account, a list of demonstration loans: products you have sent to them as samples, and you only want to include those that have not been returned.
There are so many ways I could see this facility being used I can’t quite figure out why it isn’t available. Sure, you can do it with programming using an Apex controller and a Visual Force page, but that completely misses the point of the power of the platform.
Watch out for more Things I Want to See.