# Project Connector

The platform GUI provides the **Project Connector** utility which allows data to be linked automatically between projects. This creates a **one-way dynamic link** for files and samples from source to destination, meaning that additions and deletions of data in the source project also affect the destination project. This differs from [copying](https://help.ica.illumina.com/project/p-data#copy-data) or [moving](https://help.ica.illumina.com/project/p-data#move-data) which create editable copies of the data. In the destination project, you can delete data which has been moved or copied and unlink data which has been linked.

|                   | one-way | files | folders | erases source data | propagate source edits | editable on destination |
| ----------------- | :-----: | :---: | :-----: | :----------------: | :--------------------: | :---------------------: |
| move              |    x    |   x   |    x    |          x         |                        |            x            |
| copy              |    x    |   x   |    x    |                    |                        |            x            |
| manual link       |    x    |   x   |    x    |                    |                        |                         |
| project connector |    x    |   x   |         |                    |            x           |                         |

{% embed url="<https://www.youtube.com/watch?v=tRWdRCWaPU4&ab_channel=Illumina>" %}
Project Connector Setup
{% endembed %}

## Prepare Source Project

1. Select the *source* project (project that will own the data to be linked) from the Projects page (**Projects > your\_source\_project**).
2. Select **Project Settings > Details**.
3. Select **Edit**
4. Under **Data Sharing** ensure the value is set to **Yes**
5. Select **Save**

## Creating a New Project Connector

1. Select the *destination* project (the project to which data from the source project will be linked) from the Projects page (**Projects > your\_destination\_project**).
2. From the projects menu, select **Project Settings > Connectivity > Project Connector**
3. Select **+ Create** and complete the necessary fields.
   * Check the box next to **Active** to ensure the connector will be active.
   * **Name** (*required*) — Provide a unique name for the connector.
   * **Type** (*required*) — Select the data type that will be linked (either **File** or **Sample**)
   * **Source Project** - Select the source poject whose data will be linked to.
   * **Filter Expression** (*optional*) — Enter an expression to restrict which files will be linked via the connector (see [Filter Expression Examples](#filter-expression-examples) below)
   * **Tags** (*optional*) — Add tags to restrict what data will be linked via the connector. Any data in the source project with matching tags will be linked to the destination project.

### Filter Expression Examples

The examples below will restrict linking **Files** based on the **Format** field.

* Only Files with Format of FASTQ will be linked:

  `[?($.details.format.code == 'FASTQ')]`
* Only Files with Format of VCF will be linked:

  `[?($.details.format.code == 'VCF')]`

The examples below will restrict linked **Files** based on a filenames.

* Exact match to 'Sample-1\_S1\_L001\_R1\_001.fastq.gz':

  `[?($.details.name == 'Sample-1_S1_L001_R1_001.fastq.gz')]`
* Ends with '.fastq.gz':

  `[?($.details.name =~ /.*\.fastq.gz/)]`
* Starts with 'Sample-':

  `[?($.details.name =~ /Sample-.*/)]`
* Contains '\_R1\_':

  `[?($.details.name =~ /.*_R1_.*/)]`

The examples below will restrict linking **Samples** based on User Tags and Sample name, respectively.

* Only Samples with the User Tag 'WGS-Project-1'

  `[?('WGS-Project-1' in $.tags.userTags)]`
* Link a Sample with the name 'BSSH\_Sample\_1':

  `[?($.name == 'BSSH_Sample_1')]`
