There is no single many-to-many setting. You create a junction object and add two master-detail relationships, one to each parent, then relabel the related lists. These steps follow Salesforce Help for creating a many-to-many object relationship.
- Create the junction custom object
In Setup, open Object Manager and create a new custom object to act as the junction. Give it a label that names the pairing, such as Job Application. For the Record Name, choose the Auto Number data type so each pairing gets a unique generated name instead of forcing users to type one.
- Add the first master-detail relationship
On the junction object, create a custom field of type Master-Detail Relationship pointing to the first parent. This first relationship becomes the primary. Pick the parent that users treat as the main owner, since the primary drives sharing and ownership for every junction record.
- Add the second master-detail relationship
Create a second Master-Detail Relationship field on the junction pointing to the other parent. This one becomes the secondary relationship. With both links in place the object is now a working junction, and each record pairs one primary parent with one secondary parent.
- Relabel the related lists on each parent
On each parent page layout, edit the junction related list and rename it after the other parent. On the Position layout, label the list Candidates, and on the Candidate layout, label it Positions, so users read meaningful names instead of the raw junction object name.
- Add attribute fields and confirm reports
Add any fields that describe the pairing, such as Role, Status, or a date range, to the junction. Then confirm the two standard report types appear so you can report from either parent through the junction.
Set this to Auto Number on the junction so each pairing gets a system-generated name like JA-{0000}.
The first master-detail you create. Controls junction ownership and sharing and becomes the lead in the standard report types.
The second master-detail you create. Becomes primary automatically if the primary relationship is deleted or converted to a lookup.
The name shown on each parent layout for the junction list. Rename it to the opposite parent so users see Candidates and Positions, not the junction name.
- Create both master-detail relationships before the junction object holds data; master-detail fields are hard to add to a populated object.
- The first master-detail you add is the primary; if you need a different primary parent, create that relationship first.
- Junction records inherit sharing from the primary master and have no separate owner, so plan access around that parent.
- A custom object allows at most two master-detail relationships, which is exactly what a junction uses, leaving no room for a third.