Vladi Gubler
Vladi Gubler
October 01, 2026
Stay in the know
Get helpful videos

SharePoint lists can hold real many-to-many relationships. Customers relate to many products, products relate to many customers, and the connection between them carries its own data. The recipe takes three lists and two Associated Items columns: the two entities, a junction list holding the connections, and a column on each entity showing its slice of the junction. This guide builds the classic example, customers and products linked through support calls, and explains the modeling idea that makes it work anywhere.

Relationships are the whole point

Relationships between entities are the basis of any information system. Customers relate to products. Projects relate to tasks. Employees relate to the projects they staff.

SharePoint handles the simple direction adequately. A lookup column gives you many-to-one: each support call points at one product. The Associated Items column turns that around into comfortable one-to-many: open the product, see its calls as a table inside the form. Invoice lines on an invoice. Tasks on a project. That covers most needs.

Many-to-many is the step beyond, and the step where most builders stall. A customer has calls about many products. A product has calls from many customers. Neither side owns the other. A multi-select lookup looks like a shortcut here, and it is a trap: it can say that customer and product are connected, but it cannot say anything about the connection. When did they call? About what? Resolved or open?

The real answer is older than SharePoint: a junction list. And the junction's secret is that it is not plumbing. It is data.

The junction is the interesting list

Here is the modeling insight worth keeping. In a many-to-many relationship, the connection itself is an entity with attributes.

A support call is not merely a line linking customer to product. It has a date, a description, a severity, a status. An enrollment linking student to course carries a grade. An assignment linking employee to project carries a role and an allocation. The junction list is where that information lives, and it is usually the list your process cares about most.

So the pattern is: two entity lists, one junction list with a required lookup to each entity, and an Associated Items column on each entity pointing at the junction. Each side then sees its own connections, with all their attributes, inside its own form.

Mechanically, the Associated Items column does the bookkeeping. It automatically adds and maintains the parent item's unique identifier within the child items. When a parent opens in a display or edit form, the column scans the child list for matching items and presents them in a tabular view. Relationships work within one site, and between two sites in the same site collection.

The build: customers, products, support calls

Three lists, any types. The example uses:

  • Customers: a standard contacts list.
  • Products: a custom list.
  • Support Calls: a custom list, the junction.

In Support Calls, add two lookup columns, one to Products and one to Customers, and make both required. These two lookups are the relationship; everything else is presentation:

Support Calls

Next, create two views on Support Calls. Customer Lookup shows Title and Product. Product Lookup shows Title and Customer. The naming logic: when you stand on a customer, you already know the customer, so the view shows everything else.

Views matter more than they look. The Associated Items column uses them to control which columns appear inside the parent form, and you adjust the presentation later by editing the view, not the column. Filters and sorting in the view are respected. You can let users switch between several views from the form. And for large child lists, enable paging, which keeps the parent form loading fast.

Wiring the two sides

On Customers, add an Associated Items column pointing to Support Calls. Set its view to Customer Lookup, and enable adding new items in the Display form:

Associated Tasks Field settings

That display-form option deserves a pause. It means a support agent on the customer's card can log a new call without first putting the customer record into edit mode. The parent stays read-only; the children stay live. For busy reference records, that is exactly the right posture.

On Products, repeat the setup with the Product Lookup view. Two columns, one junction, both directions covered.

What using it feels like

Open a product in its display form and add support calls pointing at specific customers. Notice what you do not do: you never select the product. The system fills the product lookup automatically, because the form knows which parent it belongs to. Add calls from the customer side and the customer fills itself the same way.

The payoff shows everywhere the data appears. Every call lists under its product and under its customer simultaneously. List views expand the related calls inline, here with two products showing their call sub-views open at once:

Product View

Navigation becomes exploration. Which customers struggle with this product? Open the product. What has this customer called about? Open the customer. Same data, both questions, no reports commissioned.

Growing the model

The skeleton extends naturally once it stands.

Summaries put numbers on the relationship: a count of open calls on each product, a latest-call date on each customer, computed automatically by summary columns over the associated items. The product list quietly becomes a reliability report.

The junction records can flow values from their parents when creating them, as covered in passing values to related forms. And the same three-list shape serves every domain where two entities meet through an event: students and courses through enrollments, employees and projects through assignments, vendors and contracts through engagements, products and suppliers through price agreements. Name the connection, give it a list, hang an Associated Items column on each side.

For the full relationship toolkit, hierarchies, repeating sections, and cross-list design, see Create Relationships in SharePoint Forms. The many-to-many case is the one that makes SharePoint feel like a real application platform, because it is the case where lists stop being tables and start being a model.

Three habits that keep the model healthy

A few practices separate a junction list that ages well from one that decays.

Name the junction for what it means, not how it works. Support Calls beats CustomerProductLink forever. If the connection has a business name, your users already know it, and the list should wear it. When no name comes to mind, that is a hint the relationship may not deserve a list yet.

Keep both lookups required, always. An orphaned junction item, a call with no customer, or no product, is a row that answers no question from either side. Required lookups make orphans impossible at entry, which is far cheaper than cleaning them up at reporting time.

And let the views do the presentation work. When someone asks for extra columns in the related-items table, resist editing the Associated Items column. Edit the view. The column's configuration stays stable for years while the views evolve freely, and different audiences can get different views of the same junction without anyone rebuilding anything.

Follow those three and the model scales quietly. Ten entities and four junction lists later, the pattern still reads the same way it did with three lists, which is exactly what a data model is supposed to do.

Frequently asked questions

Q: Can SharePoint lists have many-to-many relationships?
A: Yes. Two entity lists link through a junction list that holds a required lookup to each, and an Associated Items column on each entity displays its related junction items inside its forms.
Q: Why not use a multi-select lookup instead?
A: A multi-select lookup records that two items connect, but nothing about the connection. A junction list carries the relationship's own data: dates, status, severity, grades, roles.
Q: How do the parent forms show the related items?
A: The Associated Items column scans the junction list for items matching the parent's identifier and displays them as a table, using a view you choose to control the columns, filters, and sorting.
Q: Can users add related items without editing the parent?
A: Yes. Enable adding in the Display form, and new junction items are created from the parent's read-only card, with the parent lookup filled in automatically.
Q: Does this work across sites?
A: Yes, within one site or between two sites in the same site collection.
Q: What happens with very large child lists?
A: Enable paging on the Associated Items column, and the parent form loads quickly regardless of how many related items exist.
Loading...

Add your comment

Comments are not meant for support. If you experiencing an issue, please open a support request.
Products
Vladi Gubler | October 24, 2026
SharePoint items can carry true electronic signatures: tamper-evident, identity-verified, and bound to the data they sign. The Signature component of Ultimate Forms is a column you add to any list or library, attach to the columns whose values it should protect, and sign in one of three ways, real-time username and password validation against your...
Products
InfoPath reached the end of its road on July 14, 2026, and Ultimate Forms is its natural successor for SharePoint forms: browser-based design instead of a client application, data stored as real SharePoint items instead of XML, all column types supported, and permissions, validation, automation, and printing built in. This comparison walks the two...
Products
Vladi Gubler | April 30, 2025
If you’ve ever used Survey lists in SharePoint, you’re likely familiar with a powerful and often underappreciated feature: the Rating Scale column. This special column type presents a matrix of statements or questions alongside a numeric scale, typically used for gathering structured feedback. The idea is simple but incredibly effective - allow...
Build powerful business applications in SharePoint using only your browser.
100% No-Code Solution
It’s never been easier to create, innovate, and share. All you need is your web browser!
Cost-Effective
Address business process pain points immediately. Save time and money.
Fantastic Support Team
In addition to our responsive support team, a wide variety of resources, documentations, tutorials, blogs and webinars is available to you
Popular Solution Templates
Lead Management
A complete lead management system — contact details, deal qualification, event tracking, and communication preferences — inside SharePoint
Employee Termination
Structured offboarding with automatically generated task checklists
Home Office Request Tracker
Centralized system for submitting, managing, and automating work-from-home requests
Microsoft partner logo
© 2005-2026 Infowise Solutions Ltd. All rights reserved.
Privacy | Cookie Policy | Accessibility | Cloud SLA