I am relatively new to Salesforce System Admin role and wondering if anyone would be willing to share best practices for managing report/dashboard folders. We have only been live since September 2013 and I am seeing some growth problems already. Any help would be greatly appreciated.
Not sure what you want to know and there's likely to be no 1 good answer... Maybe if you'd tell us more what you feel your organisation is doing in suboptimal way. Plus I think you could consider flagging the question as community wiki.
Folder management & security
It used to suck badly. Originally you could organize reports & dashboards in folders but they were readonly. Regular users couldn't edit them even if they "topic" was relevant to them. And the moment you've granted the "Manage public reports" permission - they were able to edit any public report. It's not that I have trust issues... but it's something that's very likely to backfire on an admin.
As of Summer'13 you can turn on "advanced sharing" of folders which allows for fine-grained access control. Go give it a go in a sandbox, your users will love it. And you'll get less requests to modify report X ;)
What still annoys me is that the folders still can't have subfolders ;) But you can enable tags and they seem to work on reports too!
If you have issues with granting too many people the Profile right to edit public reports & dashboards - consider the permission sets.
Not an immediate concern but eventually you'll realize there are too many reports, that you consider it faster to make a new one or search existing ones... I don't think you can run reports on reports :P But you can run queries.
SELECT Id, Name, Description, LastRunDate, LastModifiedBy.Name FROM Report WHERE LastRunDate < 2013-12-01T00:00:00Z ORDER BY LastRunDate DESC LIMIT 10
is a good start to challenge your users whether they really do need this report. Play with time value (no idea what will be "safe" window for your org, say "anything not run in last 13 months is likely to be outdated & obsolete by now") or maybe reports created by users who aren't active anymore...
Fastest way to delete a report is to access
https://instance.salesforce.com/report_id?delrep=1 link. And the delete will fail if the report is as a dashboard data source for example (not sure about scheduled reports).
Actual report creation
Uh. Sometimes it's an art, hard to give here generic hints...
- Don't create too many custom report types, they're pain to search through if the names aren't descriptive. "With or without" rec. type can be easily filtered to be "with" with a simple cross filter or even regular one. But if you've spent 5 minutes crafting a nice report and you realize you're missing a field and have to use custom rep. type - aaargh.
- Periodically check the custom report types and add the fields that were recently created in the system (it doesn't happen automatically, only the reports based on standard rep. types will automatically have new fields available in the editor).
- Before you deep dive into the joined reports - check how in custom report type you can add fields via lookup. You can go very far "up" with these. Imagine a report on Opportunity Line Items that has no problem showing Opportunity -> Account -> Owner -> Manager's Role.
- If you're making dashboards -
cheatthink carefully every time you're tempted to clone a report, make slight change and save a new one. Quite often 1 report can be used as data source for few dashboard components. Simply group by several fields and then in the component you decide what you want to display on each axis.
- If you're asked to make a dashboard that shows "UK Opportunities this quarter" and then identical one last quarter and then "whole Europe whole year" - cheat again. Don't save any filters on the source reports and instead create filters on the dashboard. And put "THIS MONTH" etc in the filter value.
- this has some downsides if you want to schedule sending of such dashboard. I think it'll be sent out unfiltered... Depending how important it is you might decide to clone the dashboard after all... But even then you have some options like simply selecting different running user on the clone and not changing the country / role filters in all the source reports.
- Don't hide data in the reports. I mean sure, if you have to show only Open Cases, go for it. But if you're making a filter "Country = Spain" then perhaps the data visibility should be controlled in greater detail via sharing settings and not in the reporting engine. It might mean that the report shows too much data for you - but it might be perfectly fine for the end user. Find the balance between cloning multiple slightly different reports/dashboards and something that's easy to maintain. Similarly about showing/hiding certain columns. If some users need column X in this report but users Y don't - maybe Y group doesn't care about the field at all? If it's hidden on their page layout - maybe it should be completely hidden via field level security?
Every once in a while you'll deactivate an user that had some scheduled reports or dashboards running under his name. When the scheduled job fails because the running user is inactive - alarm email is sent out to all sysadmins.
SELECT Id, Name FROM Dashboard WHERE RunningUser.isActive = false can help identifying these before they'll fail; simple viewing of scheduled jobs in setup before you deactivate somebody from your team can help too.
Every once in a while you'll realize that some reports can't be run by your end users. For example "administrative reports -> all pending approval requests" or some stuff around login history. Or anything where you have a license for it (expensive AppExchange app?) but some manager needs to only see the summary data, he's not going to actually use it so it's a waste of license.
The solution might be to create a dashboard with you (or any licensed user) as the running user. Mere mortals will be able to see the dashboard, refresh it etc, they just won't be able to drill down to the reports or modify them.
Eclipse / Force.com IDE / any other offline tool
Download the reports, report types & dashboard definitions to Eclipse IDE. It never hurts to have a backup. Deleted items end up in recycle bin but if you'll realize an important year-end report seems to be missing and last time it was run is N months ago... ;)
Report definitions stored as XML are convenient to search for example when you want to delete a custom field and you're not sure what the impact will be (or if you replace one field with another - to which report types & reports you need to add it back).
And if you want to delete a report but you can't (it's used in some dashboard, good luck finding it) - downloaded dashboard definitions can be easily searched too.
Prior to the Winter '14 update, and the exposure of the new Analytics API, managing reports, dashboards, and folders natively was a point-and-click nightmare of a task.
Now, according to the Winter '14 release notes... "The REST-based Analytics API will revolutionize the way you access and visualize your Salesforce data. The API gives you programmatic access to report data defined using the report builder. You can easily integrate report data into any web or mobile application, inside or outside the Salesforce platform. And you can define rich visualizations on top of the API to animate the data."
Additionally, the Analytics API gives the various Dataloader type applications access to the Dashboard, Dashboard Component, Dashboard Component Feed, Dashboard Feed, Folder, Report, and Report Feed objects. This is hugely useful! Now, rather than maintaining hundreds of reports, components, dashboards, and folders manually, one by one, with the point-and-click interface, you can export metadata details, and insert, upsert, update, and delete these object records in mass. You can even automate these kind of maintenance tasks with scheduled jobs.
Finally, here are some links to articles for good analytics management practices...
http://www.salesforce.com/us/developer/docs/api_analytics/salesforce_analytics_rest_api.pdf https://na9.salesforce.com/help/pdfs/en/salesforce_analytics_overview_cheatsheet.pdf https://na9.salesforce.com/help/pdfs/en/salesforce_dynamic_dashboards_cheatsheet.pdf https://na9.salesforce.com/help/pdfs/en/salesforce_reports_enhanced_reports_tab_tipsheet.pdf