vCloud Director 9 introduces brand new HTML5 tenant user interface. It currently provides only limited set of operations:
- simplified workflow to create VMs without the need to create vApps
- view and modify (but not create) vApps
- create and configure networks and networking services
- configure multisite organization associations
The legacy (flex) UI is still available and the user can jump to it if needed which is useful especially for Org Administrators.
The new UI can be modified – in the initial release with the following elements:
- Portal name
- Portal color (in RGB HEX format e.g. #EE00EE)
- Portal theme (default/dark)
- Logo (png file of max size 512 KB)
This will expand in the future with tenant granularity, custom themes and custom links, but for now we have only these four elements.
The configuration must be done with new CloudAPI which is JSON based. At the time of writing its documentation has not been yet published.
- Retrieve authentication token with vCloud API or UI
- Use the following call to change logo:
Body: <binary image file>
- Use the following call to change other elements:
“portalName”: “vCloud Director 9.0”,
“name”: “Dark” },
21 thoughts on “vCloud Director 9: Customize Tenant UI”
Hi Tom, i have an error message “ACCESS_TO_RESOURCE_IS_FORBIDDEN” when i want to change the logo. i’m logged in as “Organization administrator”.
That API is available only to System Admins.
Thanks Tomas it work for me! Do you know if there is also a possibility to change the picture on the login page?
Yes, with the PUT /cloudapi/branding/logo command.
There you can only change the logo. What I mean is the login screen of the tenant.
You can change only the picture on the login screen.
I am trying to change a picture with cloudapi.
I converted png to base64 format and put data:image/png;base64,….. to body.
But every time I have not logo. When I look at web page code, I see different base64 code.
Maybe I use wrong syntax.
Please describe more details.
I used Postman and the binary upload option for the body.
Thank you for help with logo. With postman I uploaded logo successfully.
Then I set branding
And received an permanent errors which are show for all users
Current user is locked out. Please contact your administrator.
In code debug I found an error
Uncaught TypeError: Cannot read property ‘style’ of null
at onPageLoad (login:165)
onPageLoad @ login:165
Then I returned portalColor back to “”
and problem has gone.
I also raised ticket in VMware.
I think that is a known issue.
I confirm updating body can be performed without confusion.
Relating to updating picture, you can get a message “ressource forbidden”. However, even if you get this message, refresh your browser to your tenant portal, the picture may be updated correctly.
After upgrade vCloud Director from version 9.1 to 9.5 the interface is still like in old (flash). How to switch the UI to html5?
The URL is /tenant/org-name
Specifically: https://vcloud.domain.com/cloud/tenant/org-name/login ..for Integrated (LDAP/SAML) Authentication or you are simply logging in with a Local Org Account you can omit: /login from the URL. Also worth mentioning after our recent vCD 9.1 upgrade we found we had to update our SSL certificates for this to work.
Can you provide us a passtrought of how doing this using postman, pass by pass since login ?
Check this article, with more step by step description how to use VCD with Postman: https://fojta.wordpress.com/2018/10/18/postman-and-vcloud-director-9-5-access-token-authentication/
How do I apply this, only to a specific tenant?
You need VCD 9.7: https://vdc-download.vmware.com/vmwb-repository/dcr-public/5f403ebf-b14c-4a1c-be10-1539c02415d6/0101cd7b-ae5f-4db8-bda1-23318a5e7a48/vcd-openapi-docs.html#api-Branding-putTenantBranding
thanks, I check it
Great post Tomas, I’m using VCD 10 in virtual apliance mode
I used the bearer token method to authenticate without issues making the call to /api/sessions
Accept Header: application/*+xml;version=33.0
This is my body:
I’m getting the following error, any ideas?
“message”: “The request accept header is invalid.”,
Use JSON in your accept header.