> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/harness-solutions-factory/3.0/troubleshooting-and-resources/hands-on-labs/project-customizations-lab.md).

# Customize Your Harness Project Configuration

{% hint style="info" %}
*Before proceeding, ensure that the Harness Solutions Factory has been deployed into your account*
{% endhint %}

#### Modify the Harness Project Setup workflow to source from the Custom Template Library <a href="#modify-the-harness-project-setup-workflow-to-source-from-the-custom-template-library" id="modify-the-harness-project-setup-workflow-to-source-from-the-custom-template-library"></a>

{% hint style="info" %}
If you have deployed HSF after February 2026, a copy of harness-project and harness-organization should be already in your custom-harness-template-library and therefore steps 1-14 can be skipped. If you are looking to customize a different workflow follow steps 1-14 but use the desired folder.
{% endhint %}

1. Log into your Harness Account and select `Code Repository`
2. Change your scope to the organization named `Harness Platform Management`
3. Select the repository - `harness-template-library` and clone this locally to your machine
4. Select the repository - `custom-harness-template-library` and clone this locally to your machine
5. Open both repositories in separate VSCode windows. *When prompted, **do not click*** *`Reopen in Container`. This is done after the initial copy process*
6. Locally, in the `harness-template-library` repository, find the folder named `harness-project`
7. Copy the folder to the root of the `custom-harness-template-library`
8. Prepare the IDP Resource Manager file
   * Open the `idp_registration_mgr.yaml` in the repository `harness-template-library`
   * Find the `harness-project` entry

     ```yaml
     - org: Harness_Platform_Management
         project: Solutions_Factory
         workflows:
         - name: harness-project
     ```
   * Open the `idp_registration_mgr.yaml` in the repository `custom-harness-template-library`
   * Paste the above code snippet entry under the `entities` key.

     <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>You will need to remove the <code>[]</code> at the end of this line <code>entities: []</code></p></div>

     <figure><img src="/files/apfC51YtMnP36qZIfM2E" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>
9. Reopen the `custom-harness-template-library` in the container
   * On the bottom left corner of VSCode is a blue box `><`, click on this icon to open the DevContainers management panel and choose `Reopen in Container`
10. Modify the Harness IDP workflow for the `harness-project` template: open the file `harness-project/.harness/catalog_template.yaml` in VSCode

    <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>There are account level variables that manage the configuration of the Custom Template Library Connector and Repositories. You can access these variables and adjust them by updating the variable in the Account Settings for the platform.</p><p><img src="/files/SgHLDjiVvFSXZ6yb50bp" alt="Click to view full size image" data-size="original"></p></div>
11. Find and Modify the following `Solutions Factory Details` parameters to match the following values

```yaml
            template_library_connector:
              type: string
              default: <+variable.account.custom_template_library_connector>
              ui:widget: hidden
            template_library_repo:
              type: string
              default: <+variable.account.custom_template_library_repo>
              ui:widget: hidden
            template_library_branch:
              type: string
              default: main
              ui:widget: hidden
```

<figure><img src="/files/wb8LZUtIi7vxnky2wSSg" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

12\. Find and Modify the following \`Solutions Factory Options\` parameters to match the following values

```yaml
repo_source: 
        type: string 
        # Used to group by source the workspaces for bulk actions 
        default: custom 
        ui:widget: hidden
```

<figure><img src="/files/OtWsXt4nExNx9RCKjQm9" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

13\. Save and Commit your changes.

{% hint style="info" %}
For this workshop, commit directly to `main`. In a different workshop, you will work through a feature branch upgrade process
{% endhint %}

14\. Push your changes to Harness Code 15. Find and Execute the pipeline named `Register Custom IDP Templates`: - Navigate to the `Solutions Factory` project in your Harness Account - Filter your pipelines by typing `idp` in the pipeline search bar

{% hint style="info" %}
For this execution, make no changes to the inputs and accept the default details
{% endhint %}

<figure><img src="/files/k6iLhL22Hbpk4AobxLJ6" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

16\. Navigate to IDP, Workflows, `Harness Project Setup` and click the three dots to choose `View Raw YAML` to verify that the change has been made.

```yaml
annotations:
    is_harness_official: "False"
    source: custom-template-library
    created_by: custom
```

<figure><img src="/files/lf3RA8cPlQd10z7NnkqX" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>

17\. Create a new Project with the name `Custom Project` - Wait for the execution to complete. 18. Review the IACM Workspace `Lab_Custom-Project` in the `Solutions Factory` project - Select the Configuration Tab - Notice the Tags `source:custom` and `type:harness-project` - Verify that the Repository Git Connector is `Custom Harness Template Library Repo`

#### Customize your Harness Project template <a href="#customize-your-harness-project-template" id="customize-your-harness-project-template"></a>

1. Open the `custom-harness-template-library` in VSCode. Make sure you `Reopen in Container`
2. Create the file `harness-project/templates/roles/Security_Champions.yaml`
3. Sample permission sets are included under the `permission_sets` directory. Copy the contents from this file `harness-project/templates/roles/permission_sets/Security_Orchestration.yaml` into the new role file created.

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>Multiple permissions could be added and interspersed from other permission sets. For the purposes of this exercise, copy the entire set.</p></div>

   <figure><img src="/files/HALxEI9zyBybm4uIhVuT" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>
4. Create the file `harness-project/templates/groups/Security_Champions.yaml`
5. Copy the contents from this file `harness-project/templates/groups/Project_Viewers.yaml` into the new group file created.
6. Add a new role binding to include the new role.

   ```yaml
   - role: Security_Champions 
     resource_group: _all_project_level_resources
   ```

   <figure><img src="/files/amtgPNVE7uzWLhJbCT0e" alt=""><figcaption><p>Click to view full size image</p></figcaption></figure>
7. Save and commit your changes.

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>For this workshop, commit directly to main. In a different workshop, you will work through a feature branch upgrade process</p></div>
8. Push your changes to Harness Code
9. Apply customizations to the custom project
   * Navigate to the `Solutions Factory` project in your Harness Account
   * Open the IACM Workspaces and select the workspace `Lab_Custom-Project`
   * Click Provision and Run the pipeline

     <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>This pipeline will require a review to verify the changes to be applied. Based on the changes included, you should see four resources Added</p></div>
   * Approve the change and wait for the pipeline to finish
10. Navigate to the `Custom Project` project and look at the new RBAC configuration that was added
11. Apply the change to all the existing workspaces
    * Navigate to the `Solutions Factory` project in your Harness Account
    * Filter your pipelines by typing `iacm` in the pipeline search bar
    * Run the pipeline `Bulk Workspace Management`

      * WORKSPACE\_SOURCE = `official`
      * WORKSPACE\_TYPE = `harness-project`
      * WORKSPACE\_STATUS = `any`
      * WORKSPACE\_CHANGE\_SOURCE = `yes`
      * WORKSPACE\_ACTION = `apply`

      <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>This pipeline will migrate the original two projects created to use the new custom-template-library changes.</p></div>
    * After the `Bulk Workspace Management` completes, it will have started new executions of the `Provision Workspace` pipeline for each matching IACM Workspace
    * Approve the changes to the existing workspaces
12. Verify the changes have been applied.
    * The projects should include the new changes
    * The Workspaces will now be `source:custom` and the Repository Git Connector is `Custom Harness Template Library Repo`
