# Overriding tenant branding in Angular apps now that brandingEntry is deprecated

**URL:** <https://community.cumulocity.com/t/overriding-tenant-branding-in-angular-apps-now-that-brandingentry-is-deprecated/12786>\
**Category:** Forum\
**Tags:** app-enablement\
**Created:** [September 25, 2025, 6:56am UTC](https://community.cumulocity.com/t/overriding-tenant-branding-in-angular-apps-now-that-brandingentry-is-deprecated/12786 "2025-09-25T06:56:13Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Harrison\_Pace](https://dub1.discourse-cdn.com/flex005/user_avatar/community.cumulocity.com/harrison_pace/32/2961_2.png) [@Harrison\_Pace](https://community.cumulocity.com/u/Harrison_Pace)\
**Post date:** [September 25, 2025, 6:56am UTC](https://community.cumulocity.com/t/overriding-tenant-branding-in-angular-apps-now-that-brandingentry-is-deprecated/12786/1 "2025-09-25T06:56:13Z")

</div>

Hi Cumulocity team,

We are upgrading our application from Angular 15 to Angular 18 using Web SDK v1021.22.112. We are trying to fully override tenant branding for specific apps.

When following the documentation we find tenant branding supersedes our app’s style. This is the guide we followed (using `styles.less` directly):

> **[Application configuration - Cumulocity documentation](https://cumulocity.com/docs/web/application-configuration/#branding-your-application)**
>
> This documentation offers comprehensive information on the Cumulocity platform both from a user and from a developer perspective. It reflects the latest state of the Cumulocity platform and is continuously updated to align with recent software...

As this didn’t work we tried to resolve this in other ways;

Here’s what we’ve tried so far:

1. **Using `brandingEntry` in `cumulocity.config.ts`:**

```auto
brandingEntry: './src/branding/branding.less',

```

This approach **used to work with the old C8y CLI (using package.json)**, but now it seems to be ignored. None of the variable overrides or styles in `branding.less` are applied. It also seems to be deprecated:

![image](https://europe1.discourse-cdn.com/flex005/uploads/cumulocity/optimized/3X/e/6/e6ea084e57f19701072bd5fa1b7cc5c800e1d65c_2_517x63.png)

1. **Setting `dynamicOptionsUrl` to `false`** in `cumulocity.config.ts`:

```auto
dynamicOptionsUrl: false,

```

Tristan suggested using `dynamicOptionsUrl` to prevent tenant branding overriding app branding; this also didn’t work – See: [How to include branding in Angular 16 with WebSDK - #5 by Tristan\_Bastian](https://community.cumulocity.com/t/how-to-include-branding-in-angular-16-with-websdk/3311/5) . Even with this, the tenant branding still appears and overrides our LESS variables.

1. **Manual CSS variable overrides** in global styles:

```auto
:root,
.c8y-light-theme,
.c8y-dark-theme {
  --brand-primary: #53cd61;
}

```

This works, but it is not using our LESS branding. We want to continue using `branding.less` for:

- Defining LESS variables (e.g., `@brand-primary`)

- Using LESS functions (`lighten`, `darken`)

- Keeping a modular, maintainable style system

We also tried scaffolding a fresh tutorial app using Angular 18 + Web SDK 1021.22.112, importing `@c8y/style/extend.less` and defining our variables in `branding.less` and `styles.less`, but the styles are always overridden by the tenant.

If anyone could explain how we can get branding to override tenant branding it would be greatly appreciated. We have spent several days on this. This is for a production system.

Thanks - Harrison

---

<div class="post-metadata">

**Author:** ![Carlos\_Ceia](https://dub1.discourse-cdn.com/flex005/user_avatar/community.cumulocity.com/carlos_ceia/32/21_2.png) [@Carlos\_Ceia](https://community.cumulocity.com/u/Carlos_Ceia)\
**Post date:** [October 8, 2025, 11:30am UTC](https://community.cumulocity.com/t/overriding-tenant-branding-in-angular-apps-now-that-brandingentry-is-deprecated/12786/2 "2025-10-08T11:30:58Z")

</div>

Hi Harrison — to investigate properly, could you provide the branding files you’re using? With these, we can reproduce the setup, validate load order, and propose a workaround to ensure app branding takes precedence over tenant branding.
