Customizing the Management Console
The user interfaces of every Carbon product allows you to configure, monitor, tune, and maintain the product. The components that formulate the design and style of these user interfaces are defined in resource (JAR) files.Â
The user interface of every Carbon product consists of two layers:
The common product layout/design inherited from the Carbon platform: All the common templates, styles (CSS files), and images are stored in the Carbon core UI bundle, which is namedÂ
org.wso2.carbon.ui-<version-number>.jar
 (<version-number>
 is the particular version of the bundle). This bundle is responsible for the overall look and feel of the entire Carbon platform.- The styles/images unique to each product: Each Carbon product (that is built on Carbon kernel) has another style bundle, which contains all the overriding style sheets and images:Â
org.wso2.<product-name>.styles-<version-number>.jar
.
You can customize the user interfaces by modifying these resource files. You need to create a fragment bundle for the original resource file. Then, you can pack the modified resource files in the required bundle. The files in the required bundle will get precedence and will override the files in the original bundle.
You can use this same technique to customize any aspect of the user interfaces. The advantage of this technique is that you will not lose your customizations when you apply official patches to the product by replacing the original bundles.
For example, when you access the Management Console using the following URL, by default, it has the WSO2 product logo as shown below:Â https://10.100.5.72:9443/carbon/
Note that the images and instructions given on this page are valid for WSO2 products that are based on Carbon 4.4.x.
Follow the steps below to customize the above management console by changing the logo.
Open theÂ
<PRODUCT_HOME>/repository/components/plugins/Â
directory. You need to find the bundle that contains the resource files that you want to modify. In this case, the logo and the related CSS files are contained in theÂorg.wso2.carbon.ui_<version-number>.jar
 file. Copy the org.wso2.carbon.ui_<version-number>.jar
 file to a separate location on your computer, and extract the file. Note the symbolic name of this bundle, which is 'org.wso2.carbon.ui_
<version-number>
'.ÂCreate a new Maven project using your IDE. Be sure to include the symbolic name of the original bundle that you extracted in the previous step (which is '
org.wso2.carbon.ui_<version-number>
') in the Maven project name. For example, you can useÂo
rg.wso2.carbon.ui_<version-number>_patch
 as the Maven project name.ÂAdd the following content to theÂ
pom.xml
 file of the Âorg.wso2.carbon.ui_<version-number>_patch
 project. In thisÂpom.xml
 file, be sure to replace theÂ<version-number>
 ofÂorg.wso2.carbon.ui_<version-number>
_patch
 with the correct version value.<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.wso2.carbon</groupId> <artifactId>org.wso2.carbon.ui_<version-number>_patch</artifactId> <version>1.0.0</version> <packaging>bundle</packaging> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>3.0.1</version> <extensions>true</extensions> <configuration> <instructions> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Bundle-Name>${project.artifactId}</Bundle-Name> <Export-Package>web.admin.*</Export-Package> </instructions> </configuration> </plugin> </plugins> </build> </project>
Create directories in your Maven project as explained below.
Create theÂ
/web
 folder under theÂ/src/main/resources
 directory of theÂo
rg.wso2.carbon.ui_<version-number>_patch
 project.ÂThen, create the /admin directory under /web.Â
Finally, create theÂ
/
css,Â/images
, and /layout
 directories underÂ/admin
.Â
YourÂ
org.wso2.carbon.ui_<version-number>
_patch
 project should now look as shown below.Create a new CSS file (e.g.Â
customizations.css
)Â Â with the following content.#header div#header-div div.left-logo { background-image: url( ../images/new-logo.png ); background-repeat: no-repeat; background-position: left top; background-size: contain; height: 40px; width: 300px; margin-top: 23px; margin-left: 20px; float: left; }
This file includes the logo customization styles.Â
Add theÂ
customizations.css
 file to theÂ<org.wso2.carbon.ui_<version-number>_patch>/src/main/resources/web/admin/css/
 directory. ÂLocate theÂ
template.
jsp file that is in theÂorg.wso2.carbon.ui_<version-number>.jar
 bundle, which you extracted in step 1 above. You will find template.
jsp file inside the Â<org.wso2.carbon.ui_<version-number>.jar>/
web/admin/layout/Â
directory. Then, copy this file to theÂ<org.wso2.carbon.ui_<version-number>_patch>/src/main/resources/web/admin/layout/
 directory.Locate the following line in theÂ
<org.wso2.carbon.ui_<version-number>_patch>/src/main/resources/
web/admin/layout/template.jspÂ
file, which you added in the previous step:<link href="<%=globalCSS%>" rel="stylesheet" type="text/css" media="all"/>
Replace the above line with the following:
<link href="../admin/css/customizations.css" rel="stylesheet" type="text/css" media="all"/>
Add the below image as the new logo (e.g. Â
new-logo.png
) to the <org.wso2.carbon.ui_<version-number>_patch>/src/main/resources/
web/admin/images/
 directory.Create another Maven project using your IDE. Be sure to include the symbolic name of the original bundle that you extracted in step 1 above (which is '
org.wso2.carbon.ui_<version-number>
') in the project name. For example, you can useÂo
rg.wso2.carbon.ui_<version-number>_fragment
 as the Maven project name.ÂThis creates a project for the fragment bundle. Since the symbolic name of the original bundle is ‘
org.wso2.carbon.ui
’, the fragment host value of this bundle should be the same (e.g. org.wso2.carbon.ui_<version-number>_fragment
). This fragment bundle will not contain anything (expect thepom.xml
file) when it is built.Add the following content to theÂ
pom.xml
 file of theÂorg.wso2.carbon.ui_<version-number>_fragment
 project. In thisÂpom.xml
 file, replace theÂ<version-number>
 ofÂorg.wso2.carbon.ui_<version-number>
_patch
 andÂorg.wso2.carbon.ui_<version-number>
_fragment
 with the correct version value. This
pom.xml
file of the fragment bundle defines properties, which includes the required bundle value (i.e. ‘org.wso2.carbon.ui_<version-number>_patch
’).<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.wso2.carbon</groupId> <artifactId>org.wso2.carbon.ui_<version-number>_fragment</artifactId> <version>1.0.0</version> <packaging>bundle</packaging> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>3.0.1</version> <extensions>true</extensions> <configuration> <instructions> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Bundle-Name>${project.artifactId}</Bundle-Name> <Require-Bundle>org.wso2.carbon.ui_<version-number>_patch</Require-Bundle> <Fragment-Host>org.wso2.carbon.ui</Fragment-Host> </instructions> </configuration> </plugin> </plugins> </build> </project>
- Now you can build the two projects. Open a terminal, navigate to the relevant project directory (listed above), and execute the following command: mvn
 clean install.
Âorg.wso2.carbon.ui_<version-number>_fragment
org.wso2.carbon.ui_<version-number>_patch
Â
- Once the project is built, copy the two JAR files listed below (from theÂ
<PROJECT_HOME>/target/
 directory) to theÂ<PRODUCT_HOME>/repository/components/dropins/
 directory.org.wso2.carbon.ui_<version-number>_fragment-1.0.0.jar
org.wso2.carbon.ui_<version-number>_patch-1.0.0.jar
- Restart the WSO2 product server.
Access the management console of your WSO2 product using the following URL: https://10.100.5.12:9443/carbon/. You view the new logo, which the patch bundle contains as shown below.