Custom Report Types
Custom Report Types (CRTs) are a core Data and Analytics Management topic for the Salesforce Platform Administrator II exam. A report type defines the set of records and fields available to a report by specifying a primary object and, optionally, up to three related child objects (four objects total). While Salesforce provides many standard report types, CRTs let administrators build exactly the data model users need, including custom objects, custom fields, and specific relationship paths. Creating a CRT begins in Setup under Report Types. You select the primary object, then define relationships to child objects, choosing whether to show records 'with' related records (inner join, like 'Accounts with Contacts') or 'with or without' related records (outer join, like 'Accounts with or without Opportunities'). This choice is frequently tested because it determines whether parent records lacking children appear in results. Each CRT has a status of In Development (visible only to admins) or Deployed (available to users), plus a category that controls where it appears in the report builder. The Field Layout section lets you control which fields are available, rename field labels, organize fields into sections, and set default columns. You can also add fields via lookup, pulling in data from related parent objects up to four levels away, which is a powerful way to surface data without formula fields. Key considerations include: CRTs cannot be edited to change the primary object after creation; deleting a CRT deletes all reports built on it; and new custom fields are automatically added to CRT layouts only if the 'Select fields by default' checkbox is enabled. Standard report types update automatically with new fields, but CRTs may require manual maintenance. For the exam, understand when a CRT is needed versus a standard type, how join behavior affects results, and how CRTs support cross-object reporting, security through field visibility, and dashboard data sources.
Custom Report Types in Salesforce: A Complete Guide for the Advanced Administrator Exam
Reports are only as powerful as the data model behind them. Salesforce provides many standard report types out of the box (such as Accounts, Opportunities, Accounts with Contacts, and Cases), but these cover only common object relationships and only expose fields in predefined ways. When a business asks for a report that combines objects in a way no standard report type supports, or when they want a report showing records that do not have related children (for example, Accounts with no Opportunities), the administrator must build a Custom Report Type (CRT).
On the Salesforce Advanced Administrator exam, Custom Report Types fall under the Advanced Data and Analytics Management domain. Questions in this area test whether you understand when a CRT is required, how object relationships behave inside a CRT, how field layouts work, and the limitations you must design around. Getting these right demonstrates that you can translate real reporting requirements into a correct and maintainable analytics configuration.
What Is a Custom Report Type?
A Custom Report Type is an administrator-defined template that determines three things for any report built on it:
1. Which objects are included (a primary object plus up to three related objects, for a maximum of four objects).
2. How those objects are related for the purpose of the report (whether related records are required or optional).
3. Which fields are available to report users, how they are grouped in the field picker, and what their display labels are.
Think of the CRT as defining the universe of data a report can see. Once created, users select the CRT when they click New Report, just as they would a standard report type. The CRT itself does not store data or filters; it only defines the structure.
How Custom Report Types Work
1. Primary Object
Every CRT starts with a primary object. This is the object whose records form the base rows of the report. The primary object can be a standard or custom object, and once the CRT is saved, the primary object cannot be changed. If you choose the wrong primary object, you must create a new CRT.
2. Related Objects and the "With" vs. "With or Without" Relationship
After choosing the primary object, you can add related objects (children) that have a lookup or master-detail relationship to the object above them in the hierarchy. For each related object, you choose one of two relationship behaviors:
- "Each 'A' record must have at least one related 'B' record" (often called an inner join). Only primary records that have at least one child record appear in the report. For example, "Accounts with Opportunities" shows only accounts that have opportunities.
- "'A' records may or may not have related 'B' records" (often called an outer join). All primary records appear, whether or not they have children. For example, "Accounts with or without Opportunities" shows every account; the opportunity columns are blank for accounts with none. This is the key capability for finding records that lack related data, such as Contacts with no Activities or Accounts with no Cases.
The relationship choice is made at each level. Objects can be arranged in a straight chain (A to B to C to D) where each object is a child of the one above it. You cannot add two sibling child objects at the same level under the same parent in a single CRT. Each related object must be a child of the object directly above it in the hierarchy.
3. Field Layout
The field layout controls which fields appear in the report builder for that CRT. Key points:
- By default, when a CRT is created, the fields of the included objects are added to the layout. Fields added to objects after the CRT is created are not automatically added. The administrator must edit the layout and add new custom fields manually (there is an option to select all new fields added to the object).
- Fields can be organized into sections, renamed with custom labels specific to the CRT, and marked as checked by default so they appear automatically as columns on new reports.
- You can add fields via lookup. This allows you to pull in fields from parent objects related through lookup relationships (for example, pulling the Account Owner's Role onto an Opportunity-based CRT). This is how you reach fields from objects that are not formally part of the four-object hierarchy. Fields via lookup can traverse several relationship levels.
- Removing a field from the layout hides it from users of that CRT without affecting the field itself.
4. Deployment Status
A CRT can be set to In Development or Deployed. While In Development, only users with the "Manage Custom Report Types" permission can see and use it in the report builder. Set it to Deployed to make it available to all users who have access to the included objects. This lets administrators build and test before releasing.
5. Security and Visibility
CRTs do not bypass sharing rules, field-level security, or object permissions. A user running a report on a CRT only sees records and fields they are otherwise allowed to see. Users need the "Create and Customize Reports" permission to build reports and "Manage Custom Report Types" to create or edit the types themselves.
6. Categories
CRTs are assigned to a report type category (such as Accounts & Contacts, Opportunities, or Other Reports) which determines where users find them when creating a new report. Choosing a sensible category and a clear name and description helps adoption.
Key Limits and Limitations to Remember
- Maximum of 4 objects per CRT (one primary plus three related).
- Objects must be related in a parent-child chain; no sibling objects at the same level.
- The primary object cannot be changed after saving.
- New fields on objects are not automatically added to existing CRT layouts.
- If an object or field used in a CRT is deleted, the CRT or that field is affected (deleting an object deletes the CRTs built on it and the reports based on those types).
- Each organization has a limit on the number of CRTs (the common exam figure is 200).
- Reports built on a CRT reflect changes to the CRT; if you remove a field from the layout, reports using that column lose it.
- Some objects are not available as primary objects or as related objects in CRTs; for instance, certain system objects have restrictions.
Common Real-World Use Cases
- Finding records without related records: Accounts without Opportunities, Contacts without Activities, Campaigns without Campaign Members. Always requires a CRT with the "may or may not have" relationship.
- Reporting on custom objects: When a custom object is created, Salesforce may auto-create a simple standard report type if the "Allow Reports" checkbox is enabled, but a CRT is needed to combine it with related objects in a specific way or to add fields via lookup.
- Multi-level hierarchies: Accounts with Cases with Case Comments, or Opportunities with Products with Schedules.
- Simplifying the field picker: Hiding irrelevant fields and renaming technical field labels for business users.
- Cross-object field exposure: Using fields via lookup to show parent record attributes on a child-based report.
Standard vs. Custom Report Type Decision
Use a standard report type when the objects and relationships you need already exist and you do not need to show records lacking children. Use a Custom Report Type when you need: an unsupported object combination, a "with or without" relationship, fields from lookup-related objects not exposed in standard types, a curated or relabeled field list, or reporting on custom object relationships beyond the auto-generated type.
How to Answer Exam Questions on Custom Report Types
Exam questions in this area are usually scenario based. A business user describes a reporting need and you must choose the configuration that meets it. Use this approach:
1. Identify the primary object. Ask: whose records form the rows? If the request is "show me all accounts and...", Accounts is the primary object.
2. Identify the related objects and their order. Confirm they form a valid parent-child chain. If the scenario needs two unrelated children of the same parent in one report, a single CRT cannot do it; think about joined reports or a different design.
3. Decide the relationship behavior. Look for keywords such as "without," "that have no," "regardless of whether," or "including those that have not." These signal the "may or may not have" (outer join) option. Words like "only accounts that have" signal the "must have at least one" option.
4. Check for field exposure issues. If a scenario says a newly created field does not appear in the report builder, the answer is almost always to edit the CRT field layout and add the field. If the scenario needs a field from a parent of a parent, the answer involves fields via lookup.
5. Check visibility issues. If users cannot find a CRT, consider whether it is still In Development, whether users have object access, or whether the category placement is causing confusion.
6. Eliminate impossible answers. Any answer suggesting changing the primary object of an existing CRT, adding more than four objects, or adding sibling objects at the same level is incorrect.
Exam Tips: Answering Questions on Custom Report Types
- "Without" is the biggest clue. Whenever a question asks for records that lack related records (Accounts without Contacts, Leads without Activities), the correct answer involves a Custom Report Type with the "may or may not have related records" setting. Standard report types cannot do this.
- New field not showing up? The answer is to add the field to the CRT's field layout. Fields created after the CRT was built are not added automatically. Do not choose answers about field-level security unless the scenario specifically mentions permissions.
- Need a field from a distant parent? Choose the answer involving Add fields related via lookup in the field layout, not creating a formula field or adding another object to the hierarchy.
- Remember the number four. One primary object plus up to three related objects. If an option implies five or more objects, eliminate it.
- Primary object is permanent. If a question describes a CRT built on the wrong primary object, the solution is to create a new CRT, not to edit the existing one.
- Chain, not tree. Related objects must each be children of the object above them. If a scenario needs Accounts with Cases and Accounts with Opportunities side by side, the answer is a joined report, not a single CRT.
- In Development vs. Deployed. If only the administrator can see the report type, it is probably still In Development. Change the status to Deployed.
- Security still applies. A CRT never grants access to data a user cannot otherwise see. If a question suggests a CRT exposes hidden records or fields, that answer is wrong.
- Distinguish from related tools. Know when the question is really about joined reports (multiple report blocks with different report types), cross filters (filtering a standard report on related object existence, such as Accounts with or without Opportunities using a cross filter on a standard Accounts report), bucket fields, or custom summary formulas. Cross filters are a frequent distractor: they can also find records with or without children on standard report types, but they cannot display the child object's fields as columns. If the requirement is to display child fields alongside parent records that may have none, a CRT is required; if the requirement is only to filter, a cross filter may be the simpler correct answer.
- Renaming and hiding fields for a cleaner user experience is done in the CRT field layout, not through field-level security or page layouts.
- Read for the business goal, not the technical noise. The exam often wraps a simple requirement in a long scenario. Extract the row object, the related objects, the "with or without" need, and the fields required, then match to the answer that configures exactly that.
Quick Review Checklist
- CRT = primary object + up to 3 related objects (4 total), arranged in a parent-child chain.
- Two relationship options per level: must have related records (inner) or may or may not have (outer).
- Field layout controls available fields, sections, labels, defaults; new fields must be added manually; fields via lookup pull in parent-object fields.
- Deployment status: In Development (admins only) or Deployed (all users with access).
- Primary object cannot be changed; CRTs respect all sharing and FLS.
- Use CRTs for "without" reports, unsupported combinations, curated field lists, and custom object relationships; use joined reports for sibling objects; consider cross filters when only filtering is needed.
Mastering these concepts lets you confidently handle any Custom Report Type scenario on the Advanced Administrator exam and, more importantly, design reporting structures that answer real business questions accurately.
Admin II - Custom Report Types Example Questions
Test your knowledge of Custom Report Types
Question 1
Northern Trail Outfitters has a custom report type with Shipments as the primary object and Shipment Lines as the related object. Many existing reports use it. Each Shipment has a lookup to Warehouse, and each Warehouse has a lookup to Region. Logistics managers want Warehouse Capacity and Region Manager to appear on the rows of their existing reports. They also require that no fields be added to the Shipment or Shipment Line objects. What should the administrator do?
Question 2
At Cloud Kicks, Projects are a master-detail child of Account, and Milestones are a master-detail child of Project. Each Project has a lookup to User for the project manager. Sales leaders want one report with these rules: - List only accounts that have at least one project. - Show every project, including projects with no milestones. - Include the project manager's Region. The administrator must design a custom report type for this report. Which design meets every requirement?
Question 3
At Universal Containers, the custom object Project has a lookup to Account and has Allow Activities enabled. Sales operations wants one report that lists tasks, with each task's Project name and the Industry of the Project's Account. The administrator starts a new custom report type, but Activities does not appear in the list of primary objects. What should the administrator do to meet the requirement?