> ## Documentation Index
> Fetch the complete documentation index at: https://forest-docs-prd-616-workflow-webhook-trigger.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# BelongsToMany edition through smart collection

**Context:** *A customer success team has to onboard “experts”, and those “experts” can have multiple “skills”, modelled via a belongsToMany relationship between “experts” and “skills” tables through an “experts\_skills” table; the skills table has \~200 records and experts usually have between 5 to 30 of them.*

*Unfortunately this is quite painful to edit in forest admin right now since when you want to add a new item in a belongToMany relationship in forest admin you have to:*

* *click on “add an existing …”*
* *Remember and search for the item using a single search bar*
* *select the desired item*

### Intro

In the following we will see how the choice of `skills` to be added to an expert can be materialized through a searchable smart collection named `otherSkills` displayed as related data of an `expert`. An action applicable on the selected records of this collection will allow to associate new skills to an expert.

**Data models**

The data models we have been working with here (`experts` and `skills`) are the following:

### Step 2: declare a smart relationship between experts and otherSkills

In order to display records from the collection `otherSkills` as related data of an expert, we need to declare a smart relationship between these collections. This is done in the file `experts.js` of the `forest` folder.

### Step 3: implement the logic to retrieve records from the smart relationship

We want to display as related data the `skills` that are not already assigned to an `expert` so we can add them. Therefore when implementing the route called to retrieve records from the collection `otherSkills` through the smart relationship, we need to add this logic. This is done in the file `experts.js` of the `routes` folder.

\<aside> 💡 We've added the logic needed to perform searches in the snippet below.

\</aside>

### Step 4: create the smart action to add skills to an expert

Next step is to declare a smart action that will allow a user to select several records of the `otherSkills` smart collection and associate them to an `expert`. This action is declared in the file `other-skills.js` of the `forest` folder.

The logic to be triggered when a call is made to the route is implemented as follows in the `other-skills.js` file of the `routes` folder.
