As a consultant there is nothing better than a small piece of config that delivers massive results for the client.
One of the most common reasons companies initially move to Salesforce is to save time. They want to cut out exhaustive manual processes and make use of task automation all in the name of cutting costs.
So obviously if I can save a client hours, days or even weeks of their time with a simple 30 minute solution that is just the kind of result they are looking for.
Let’s set the scenario.
A client came to me with the following spec; every year they run the same series of projects.
For each project they need to know;
The pipeline for the project for this year (the total opportunities logged against it)
The confirmed income for this year (total closed won opportunities)
The total costs for this year (expense records logged to the project)
The difference between the income and cost
The total income over all the years of running this project (all time total opportunities closed won)
The total costs over all the years of running this project (all time expense records)
This is usually where roll-up summaries are deemed the answer, however in many cases they simply aren’t appropriate for the following reasons:
- They require a master-detail relationship between two objects – sometimes this just isn’t, or cannot, be the case
- Salesforce limits you to 10 roll-up fields per object, a ceiling that can be very easily hit. While this can be increased if you successfully log a business case the additional allowance is minor at best
- Roll-up fields are not user friendly, especially in an example like that above which would require changing the data criteria for what child records to reference year on year for the annual fields
Producing reports would allow us to show the above information as requested, however even for the most seasoned of report makers the process can be laborious, time consuming and more than that just downright annoying if you are simply replicating one report and just changing a single filter each time (Project A, Project B, Project C….)
The solution here is simple, a feature known as Dynamically Filtered Reports.
With a simple piece of visualforce and a few base reports displaying the above information is quick, simple, faces no Salesforce limits and most importantly by using the self updating report filters such as ‘Current Financial Year’ doesn’t require any future updates by the client.
Dynamically filtered reporting works by placing links to reports on page layouts embedded in a small visualforce section on each record, appearing as displayed above.
Clicking on this link then filters the report by whatever record you access it from. So if I have a standard report called ‘All Opportunities’ and the link is embedded on the page layout for my Projects object, if I am viewing the record for ‘Project A’ and click on the link to this report it will take me through to the report but will have applied a filter to display ‘All Opportunities linked to Project A’, as shown below.
The filtering applied on the report can be as basic or as complex as needs be.
This can be used on any object for any purpose; you could show all Opportunities by Account, all Events by Contact or Response rate per Campaign.
Dynamically filtered reports negate the need to have one master report which is constantly customised as and when needed (i.e. show me the data filtered by this record…now this record…) and also means users don’t have to trawl through hundreds of reports to find the one they’re after.
So there you have it, 1 report potentially replacing 1000!
To find out more about dynamically filtered reporting and how it can help you email firstname.lastname@example.org