# Managing the ecosystem

Source: https://cumulocity.com/docs/standard-tenant/ecosystem/
Sector: Platform administration
Release: Latest

The Cumulocity platform distinguishes between applications and microservices:

* [Applications](https://cumulocity.com/docs/standard-tenant/ecosystem/#managing-applications) -  all web applications either subscribed to the tenant or owned by the tenant.

* [Microservices](https://cumulocity.com/docs/standard-tenant/ecosystem/#managing-microservices) - server-side applications used to develop further functionality on top of Cumulocity.

Both can be accessed via the **Ecosystem** menu in the navigator.

Additionally, in Enterprise tenants, it is possible to configure **Default subscriptions**, that means you can specify a list of applications that are subscribed by default to every new tenant on creation and/or to all existing tenants on platform upgrade. For details, see [Default subscriptions](https://cumulocity.com/docs/enterprise-tenant/managing-tenants/#default-subscriptions).


> **Requirements:**
> ROLES & PERMISSIONS:
>
> * To view applications and microservices: READ permission for the "Application management" permission type
> * To manage applications and microservices (create, update, copy, delete): ADMIN permission for the "Application management" permission type
>
> On tenant creation there are default roles available that can be used as sample configuration for the above mentioned permissions:
> * Tenant Manager - manages tenant-wide configurations like applications, tenant options and business rules.
>
> Note that for complete application management some additional permission types with different permission levels might be required per feature, for example:
> * [Default subscriptions](https://cumulocity.com/docs/enterprise-tenant/managing-tenants/#default-subscriptions) for the Enterprise tenant additionally requires READ and ADMIN permissions for the "Option management" permission type.
> * [Subscribing applications](https://cumulocity.com/docs/enterprise-tenant/managing-tenants/#subscribing-applications) for the Enterprise tenant additionally requires READ and ADMIN permissions for the "Tenant management" permission type.





> **Related topics:**
> - [Platform administration > Standard tenant administration > Managing permissions](https://cumulocity.com/docs/standard-tenant/managing-permissions) for details on assigning roles and permissions for the usage of Cumulocity applications.
> - [Platform administration > Standard tenant administration > Changing settings > Application](https://cumulocity.com/docs/standard-tenant/changing-settings/#application) for information on changing the application settings for your account.
> - [Platform administration > Enterprise tenant administration > Managing tenants > Subscribing applications](https://cumulocity.com/docs/enterprise-tenant/managing-tenants/#subscribing-applications) for information on application subscriptions on tenant level.
> - [Application enablement & solutions > Introduction > Application enablement](https://cumulocity.com/docs/app-intro/applications/) for an overview on the basic concepts of applications in Cumulocity.
> - [Cumulocity Web developer codex](https://cumulocity.com/codex/) for information on how to develop web applications on top of Cumulocity and how to customize existing applications.
> - Refer to the [Cumulocity Tech Community](https://community.cumulocity.com/) for a tutorial on how to extend an existing application using the Web SDK.
> - [Application enablement & solutions > Microservice SDK](https://cumulocity.com/docs/microservice-sdk/microservice-sdk-introduction/) for general aspects of using microservices on top of Cumulocity and information on developing and deploying microservices using our SDKs or the REST interface.
> - [Applications](https://cumulocity.com/api/core/#tag/Applications) in the Cumulocity OpenAPI Specification for managing applications via REST.




## Managing applications

There are two types of availability for applications:

- [Subscribed](https://cumulocity.com/docs/standard-tenant/ecosystem/#subscribed-applications) - applications subscribed to the tenant, either provided by the platform (as default applications) or by a service provider.
- [Custom](https://cumulocity.com/docs/standard-tenant/ecosystem/#custom-applications) - applications owned by the tenant. You can [add custom applications](https://cumulocity.com/docs/standard-tenant/ecosystem/#custom-applications) in various ways as own applications.

Your applications are available through the application switcher in the top bar.

<img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-app-switcher.png" alt="App switcher">

### To view applications {#to-view-applications}

Click **Applications** in the **Ecosystem** menu in the navigator to display a list or grid of all applications in your account.

<img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-all-applications.png" alt="All applications" style="max-width: 100%">

In the **Applications** tab, you can see all applications available in your tenant.

Applications can be filtered by name or by availability.


### To edit an application {#to-edit-an-application}

Click the application or click the menu icon <i class="dlt-c8y-icon-menu-vertical text-muted icon-20"></i> at the right of an entry and then click **Edit**.

In the **Properties** tab, several fields can be modified, depending on the application type (see [Application properties](https://cumulocity.com/docs/standard-tenant/ecosystem/#application-properties)).


> **Important:**
> Never change the system application names (such as "Device Management", "Cockpit"). Otherwise, tenant initialization will fail.



### To delete an application {#to-delete-an-application}

Click the menu icon <i class="dlt-c8y-icon-menu-vertical text-muted icon-20"></i> at the right of an entry and then click **Delete**. You can also delete an application directly from the **Properties** tab in the application details.

If you delete an application that overwrites a subscribed application, the currently subscribed application becomes available to all users. Additionally, the users will then also benefit from future upgrades of the subscribed application.

It is not possible to delete subscribed applications. This can only be done by the owner of the subscribed application.


### Features {#features}

Features are applications which are built-in and not represented by an explicit artifact (like microservices or web applications).

In the **Features** tab, you will find a list of all features subscribed in your tenant. In an Enterprise tenant, the following features are available by default:

<table>
<col width="200">
<col width="350">
<col width="200">
<thead>
<tr>
<th style="text-align:left">Name in the UI</th>
<th style="text-align:left">Functionality</th>
<th style="text-align:left">Identification in the API</th>
<th style="text-align:left">Availability</th>
</tr>
</thead>
<tbody>

<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/enterprise-tenant/customization/#branding" class="no-ajaxy">Feature-branding</a></td>
<td style="text-align:left">Customize the look of your tenants to your own preferences</td>
<td style="text-align:left">feature-branding</td>
<td style="text-align:left">Enterprise tenant</td>

</tr>
<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/data-broker/" class="no-ajaxy">Feature-broker</a></td>
<td style="text-align:left">Share data selectively with other tenants</td>
<td style="text-align:left">feature-broker</td>
<td style="text-align:left">Enterprise tenant</td>
</tr>

<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/enterprise-tenant/managing-user-hierarchies/" class="no-ajaxy">Feature-user-hierarchy</a></td>
<td style="text-align:left">Reflect independent organizational entities in Cumulocity that share the same database</td>
<td style="text-align:left">feature-user-hierarchy</td>
<td style="text-align:left">Enterprise tenant</td>
</tr>
</tbody>
</table>


> **Info:**
> All applications listed here are of the type "Feature".



Other features may show up, depending on the individual subscriptions of your tenant.

## Subscribed applications

Cumulocity provides a variety of applications for different purposes. Depending on your installation and/or optional services your tenant will show a selection of the potentially available applications.


> **Info:**
> In the **Applications** tab, subscribed applications are labeled as "Subscribed". Subscribed applications may not be added, modified or removed by the user but only by a tenant administrator.



Below all applications are listed which are by default available in the Standard tenant or Enterprise tenant. In addition, numerous optional applications might be subscribed to your tenant.

### Applications subscribed by default {#applications-subscribed-by-default}

<table>
<col width="150">
<col width="250">
<col width="200">
<col width="150">
<col width="220">
<thead>
<tr>
<th style="text-align:left">Name in the UI</th>
<th style="text-align:left">Functionality</th>
<th style="text-align:left">Identification in the API</th>
<th style="text-align:left">Technical type</th>
<th style="text-align:left">Availability</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/standard-tenant/" class="no-ajaxy">Administration</a></td>
<td style="text-align:left">Lets account administrators manage users, roles, tenants and applications</td>
<td style="text-align:left">administration</td>
<td style="text-align:left">Web application</td>
<td style="text-align:left">Standard tenant, Enterprise tenant</td>
</tr>

<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/cockpit/cockpit-introduction/" class="no-ajaxy">Cockpit</a></td>
<td style="text-align:left">Manage and monitor IoT assets and data from a business perspective</td>
<td style="text-align:left">cockpit</td>
<td style="text-align:left">Web application</td>
<td style="text-align:left">Standard tenant, Enterprise tenant</td>
</tr>

<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/device-management-application/" class="no-ajaxy">Device Management</a></td>
<td style="text-align:left">Manage and monitor devices, and control and troubleshoot devices remotely</td>
<td style="text-align:left">devicemanagement</td>
<td style="text-align:left">Web application</td>
<td style="text-align:left">Standard tenant, Enterprise tenant</td>
</tr>

<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/streaming-analytics/introduction-analytics/" class="no-ajaxy">Streaming Analytics</a></td>
<td style="text-align:left">Manage and edit Analytics Builder models and EPL apps (if enabled)</td>
<td style="text-align:left">Streaming Analytics</td>
<td style="text-align:left">Web application</td>
<td style="text-align:left">Standard tenant (limited version for Analytics Builder), Enterprise tenant (full version)</td>
</tr>

<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/dtm/dtm-introduction/" class="no-ajaxy">Digital Twin Manager</a></td>
<td style="text-align:left">Create and manage basic building blocks for Digital twins: Assets, Asset models and Asset properties </td>
<td style="text-align:left">digital-twin-manager</td>
<td style="text-align:left">Web application</td>
<td style="text-align:left">Standard tenant, Enterprise tenant</td>
</tr>

<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/standard-tenant/enhanced-time-series-support/#migration-process-description" class="no-ajaxy">Time Series Migration</a></td>
<td style="text-align:left">The application facilitates the migration of tenant data from legacy measurements to the new time series storage </td>
<td style="text-align:left">timeseries-migration</td>
<td style="text-align:left">Microservice</td>
<td style="text-align:left">Standard tenant, Enterprise tenant</td>
</tr>

</tbody>
</table>

## Custom applications

**Custom applications** may be:

* Web-based UI applications, either deployed as standalone applications or as plugins deployed into a specific application (for example, a widget to the Cockpit dashboard).
* Links to an application running elsewhere.
* Duplicates of subscribed applications (in order to be able to customize them).


> **Info:**
> In the **Applications** tab, custom applications are labeled as "Custom".



Click **Add application** at the top right of the **Applications** tab to add a custom application.

In the resulting dialog box, select one of the following methods:

* [Upload web application](https://cumulocity.com/docs/standard-tenant/ecosystem/#to-upload-a-web-application) - drop a ZIP file or browse for it in your file system.
* [External application](https://cumulocity.com/docs/standard-tenant/ecosystem/#to-link-to-an-external-application) - link to an application running elsewhere.
* [Install from available packages](https://cumulocity.com/docs/standard-tenant/ecosystem/#to-install-an-application-from-a-blueprint) - select a package blueprint.
* [Duplicate existing application](https://cumulocity.com/docs/standard-tenant/ecosystem/#to-duplicate-an-application) - create a copy of an existing application.



### To upload a web application {#to-upload-a-web-application}

1. Click **Add application** at the top right of the **Applications** tab.
2. Select **Upload web application**.
3. In the resulting dialog box, drop a ZIP file or browse for it in your file system.

The application is created once the ZIP file has been successfully uploaded.


> **Important:**
> The ZIP file must contain the *index.html* and *cumulocity.json* in its root directory, otherwise the application will not work.




### To link to an external application {#to-link-to-an-external-application}

1. Click **Add application** at the top right of the **Applications** tab.
2. Select **External application**.
3. In the resulting dialog box, enter the name of the application. The name will be shown as title of the application.
5. Enter an application key, used to identify this application.
6. Enter the external URL where the application can be reached.
7. Click **Save** to create the application.

For details on the fields, see also [Application properties](https://cumulocity.com/docs/standard-tenant/ecosystem/#application-properties) below.


### To install an application from a blueprint {#to-install-an-application-from-a-blueprint}

1. Click **Add application** at the top right of the **Applications** tab.
2. Select **Install from available packages**.
3. Select the desired package.
4. In the resulting dialog box, enter the name of the application. The name will be shown as title of the application.
5. Enter an application key, used to identify this application.
6. Enter the path where the application can be reached.
7. Click **Save** to create the application.

For details on the fields, see also [Application properties](https://cumulocity.com/docs/standard-tenant/ecosystem/#application-properties) below.


### To duplicate an application {#to-duplicate-an-application}

Duplicating an application might be useful if you want to customize a subscribed application according to your needs. Duplicating a subscribed application creates a copy of the application as an own application, with a link to the original application.

1. Click **Add application** at the top right of the **Applications** tab.
2. In the upcoming dialog, select **Duplicate existing application**.
3. Select the desired application from the dropdown list, for example "Cockpit".
4. In the next window, provide a name for the application, an application key to identify the application, and a path as part of the URL to invoke the application.  Finally select an icon for the new application from the available icons. Per default, the values of the original application are provided, extended by a number. If you set the path to the path of the original subscribed application, your own application will overrule the subscribed application.
    
> **Info:**
> The platform restricts the use of the prefix "feature-" in the **Name** field. You cannot create applications using this prefix in the application name. This also applies to existing applications in cases where the duplicate application feature is used.


5. Finally, click **Duplicate** to create the application.


> **Info:**
> In case the application has been subscribed to the tenant, there is an additional toggle **Overrule subscribed application**. If you turn this toggle on, the values for name, key and path will be inherited from the original application and your duplicated application will overrule the subscribed application. Turn it off, to modify the values.<br><br><img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-application-duplicate-3.png" alt="Duplicate application">



For details on the fields, see also [Application properties](https://cumulocity.com/docs/standard-tenant/ecosystem/#application-properties) below.

## Application properties

To display further details on an application, click it to open its **Properties** tab.

<img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-application-properties.png" alt="Application properties" style="max-width: 100%">

In the **Properties** tab, each application will show the following information, depending on the application type (hosted or external):

<table>
<col width="150">
<col width="350">
<col width="200">
<col width="300">
<thead>
<tr>
<th style="text-align:left">Field</th>
<th style="text-align:left">Description</th>
<th style="text-align:left">Hosted (web application)</th>
<th style="text-align:left">External</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">ID</td>
<td style="text-align:left">Unique ID to identify the application</td>
<td style="text-align:left">Automatically provided</td>
<td style="text-align:left">Automatically provided</td>
</tr>
<tr>
<td style="text-align:left">Name</td>
<td style="text-align:left">Application name; will be shown as title of the application in the top bar and in the application switcher</td>
<td style="text-align:left">Automatically created</td>
<td style="text-align:left">Specified by the user</td>
</tr>
<tr>
<td style="text-align:left">Application key</td>
<td style="text-align:left">Used to identify the application and to make it available for <a href="https://cumulocity.com/docs/enterprise-tenant/managing-tenants/#subscribing-applications" class="no-ajaxy">subscription</a></td>
<td style="text-align:left">Automatically created</td>
<td style="text-align:left">Specified by the user</td>
</tr>
<tr>
<td style="text-align:left">Type</td>
<td style="text-align:left">Application type</td>
<td style="text-align:left">Hosted</td>
<td style="text-align:left">External</td>
</tr>
<tr>
<td style="text-align:left">Path</td>
<td style="text-align:left">Part of the URL invoking the application</td>
<td style="text-align:left">Automatically created</td>
<td style="text-align:left">Specified by the user; for example, if you use "hello" as application path, the URL of the application will be "/apps/hello"</td>
</tr>
<tr>
<td style="text-align:left">Select icon</td>
<td style="text-align:left">Provides a variety of icons from which an icon for the application can be selected.</td>
<td style="text-align:left">Automatically created</td>
<td style="text-align:left">Specified by the user</td>
</tr>
</tbody>
</table>


> **Info:**
> The icon selector is only available for custom application.

## Extensions

### Extensions {#extensions}

Extension packages are combinations of plugins and blueprints which can be packed together into a single file and then be deployed to the platform. Thus, they offer better shareability and reusability of UI features across different applications and allow to add UI features to applications without coding knowledge.

Extension packages can contain two types of content:

- [**Plugins**](https://cumulocity.com/docs/standard-tenant/ecosystem/#plugins) can be used to extend existing applications without the need of re-building the application.
- **Blueprints** are combinations of multiple UI functionalities which can be hosted by the platform and can be used to create a new application from scratch.

Blueprint applications must be deployed, while plugins are added to other applications. This allows you to scaffold entire solutions or to extend existing ones. Due to the micro frontend technology, this can happen at runtime without rebuilding.

Packages can be located on the **Extensions** page.

<img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-application-packages.png" alt="Packages view">

Packages can be filtered by name, creator type, availability and type of content.

To add a new extension package, click **Add extension package** at the top right. Like for applications, the availability of extension packages can either be `subscribed` or `custom`. While `subscribed` extensions are mostly shared from the management tenant, `custom` ones are private to the current tenant. On upload, the availability of the extension can be selected:
 - PRIVATE: This extension package is only available on the current tenant.
 - MARKET: Allows to create a subscription model for the extension. Only the current tenant and tenants to which the extension is subscribed can use the extension.
 - SHARED: Every subtenant and the current tenant can install the extension.

In general, you provide an extension as SHARED to make it available across the tenant hierarchy. However, it is important to "scope" such applications, that is, prefix the application name, context path, and key with a company shortcode. For example, Cumulocity packages are always prefixed with `c8y-` as Cumulocity might automatically deploy an extension, which will fail if you upload your own package to the management tenant.

By clicking on a package, you can see the package details such as **Extension package overview** which includes a description and images as well as some meta information which is taken from the *package.json*.

Additionally, it is possible to view all available plugins within the selected package at the right. To install a plugin click **Install plugin** and select the desired application.  

<img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-application-packages-info.png" alt="Packages overview">

In the **Versions** tab, you see all previously uploaded binaries related to the current package. The binaries displayed on this tab can be downloaded via the context menu next to each package version entry.

<img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-application-packages-versions.png" alt="Versions view">

You can select or upload different versions. Versions indicate the state of the package. They can be used to verify whether a certain package is outdated and must be updated. By clicking on a version additional information is provided such as package contents, applications or plugins. Tags can be used to give versions meaningful names. The "latest" tag is used to indicate the default version which will be selected in case no tag is provided. The "latest" tag is set by default to the latest version whenever a version is uploaded without a given tag.

To switch to a different version open the context menu for the desired version and click **Set as latest**. To delete a version click **Delete**.

### Plugins {#plugins}

Switch to the **Plugins** tab of an application to view all plugins installed on an application.

<img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-application-plugins-grid.png" alt="Plugins grid" style="max-width: 100%">

In the **Plugins** tab you can add and remove plugins. Additionally, you can install plugins to an application.

## Uploading archives

For custom applications, multiple file versions can be stored in Cumulocity when they were created by uploading either a ZIP file or a MON file. Each version is called an archive. You can upload different versions at the same time and switch between these versions.

### To upload an archive {#to-upload-an-archive}

1. Open the application properties for the respective application by clicking on it.
2. Click the plus button at the bottom of the **Activity log** section and browse for the archive in your file system or simply drop the archive file.
3. Click **Upload** to upload the archive to your Cumulocity account.

<img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-application-archive.png" alt="Application archive">

Once uploaded, the recently uploaded version is automatically the active version, that is the version of the application that is currently being served to the users of your account. This version cannot be deleted.


> **Info:**
> The archive functionality is not available for subscribed applications, as only the owner of the application can perform these actions.



### To restore an older application version {#to-restore-an-older-application-version}

Users can restore previous versions of an application from an archive.

1. Open the application properties for the respective application by clicking on it.
2. In the **Activity log** section, open the context menu for the desired version by clicking the menu icon <i class="dlt-c8y-icon-menu-vertical text-muted icon-20"></i> and select **Set as active** to make it the active version.

### To reactivate a single application {#to-reactivate-a-single-application}

If a hosted application is not deployed correctly, users may reactivate it.

1. Open the application properties for the respective application by clicking on it.
3. In the **Activity log** section, open the context menu for the desired version by clicking the menu icon <i class="dlt-c8y-icon-menu-vertical text-muted icon-20"></i> and select **Reactivate archive**.

The selected application will be reactivated by removing the respective files from the application directory and unpacking the web application package again.

## Managing microservices

Click **Microservices** in the **Ecosystem** menu in the navigator to display a list or grid of all  microservices subscribed to your account.

<img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-microservices.png" alt="Microservices list">

Microservices can be filtered by name and availability.

A microservice is a specific type of application, that is a server-side application used to develop further functionality on top of Cumulocity. As web applications, microservices can either be subscribed to your tenant by the platform or by a service provider, or they can be owned by you as custom applications, see [Custom microservices](https://cumulocity.com/docs/standard-tenant/ecosystem/#custom-microservices).

### Subscribed microservices {#subscribed-microservices}

Cumulocity provides a variety of microservice applications for different purposes. Depending on your installation and/or optional services your tenant will show a selection of the potentially available applications.

Below you find a list of all microservices which are by default subscribed in a Standard tenant and/or Enterprise tenant. In addition, numerous optional microservices might be subscribed to your tenant.

#### Microservices subscribed by default {#microservices-subscribed-by-default}

<table>
<col width="200">
<col width="400">
<col width="200">
<col width="200">
<thead>
<tr>
<th style="text-align:left">Name in the UI</th>
<th style="text-align:left">Functionality</th>
<th style="text-align:left">Identification in the API</th>
<th style="text-align:left">Availability</th>
</tr>
</thead>
<tbody>

<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/streaming-analytics/introduction-analytics/#microservice-and-applications" class="no-ajaxy">Apama-ctrl-*</a></td>
<td style="text-align:left">Streaming Analytics microservices, including runtime for Analytics Builder, EPL apps and smart rules. Capabilities and resources vary depending on the microservice variant used</td>
<td style="text-align:left">apama-ctrl-*</td>
<td style="text-align:left">Standard tenant, Enterprise tenant</td>
</tr>

<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/device-management-application/working-with-simulators/" class="no-ajaxy">Device-simulator</a></td>
<td style="text-align:left">Simulate all aspects of IoT devices</td>
<td style="text-align:left">device-simulator</td>
<td style="text-align:left">Standard tenant, Enterprise tenant</td>
</tr>

<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/cockpit/working-with-reports/" class="no-ajaxy">Report agent</a></td>
<td style="text-align:left">Schedule data exports from within the Cockpit application</td>
<td style="text-align:left">report agent</td>
<td style="text-align:left">Standard tenant, Enterprise tenant</td>
</tr>

<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/cockpit/smart-rules" class="no-ajaxy">Smartrule</a></td>
<td style="text-align:left">Use the smart rules engine and create smart rules to perform actions based on realtime data. Requires a variant of the Apama-ctrl microservice</td>
<td style="text-align:left">smartrule</td>
<td style="text-align:left">Standard tenant, Enterprise tenant</td>
</tr>

<tr>
<td style="text-align:left"><a href="https://cumulocity.com/docs/enterprise-tenant/customization" class="no-ajaxy">Sslmanagement</a></td>
<td style="text-align:left">Activate your own custom domain name by using an SSL certificate</td>
<td style="text-align:left">sslmanagement</td>
<td style="text-align:left">Enterprise tenant</td>
</tr>

</tbody>
</table>


> **Info:**
> All applications listed here are of the type "Microservice".




### Custom microservices {#custom-microservices}

#### To add a microservice as custom application {#to-add-a-microservice-as-custom-application}

1. Click **Add microservice** at the top right.
2. In the resulting dialog box, drop a ZIP file or browse for it in your file system. Note that the size limit of the file to be uploaded is 500 MB.
3. The microservice application is created once the ZIP file has been successfully uploaded.


> **Important:**
> The ZIP file must contain the application manifest and the Docker image of the microservice. Refer to [General aspects](https://cumulocity.com/docs/microservice-sdk/general-aspects) for information on preparing and deploying the microservice package. You can provide the name of the microservice in its manifest file. If no name is provided in the file, the platform will derive it from the ZIP file name by removing the recognized version suffix. In any case the length of the resulting name must not exceed 23 characters.




### Microservice properties {#microservice-properties}

To display further details on a microservice, click it to open its **Properties** tab.

<img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-microservice-properties.png" alt="Microservice properties" style="max-width: 100%">

In the **Properties** tab, each microservice will show the following information:

<table>
<col width="250">
<col width="450">
<col width="300">
<thead>
<tr>
<th style="text-align:left">Field</th>
<th style="text-align:left">Description</th>
<th style="text-align:left">Comment</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">ID</td>
<td style="text-align:left">Unique ID to identify the microservice</td>
<td style="text-align:left">Automatically provided</td>
</tr>
<tr>
<td style="text-align:left">Name</td>
<td style="text-align:left">Application name; will be shown as title of the microservice application in the top bar</td>
<td style="text-align:left">Automatically inferred from the ZIP file name (recognized version number is dropped), unless provided in the microservice's manifest file</td>
</tr>
<tr>
<td style="text-align:left">Application key</td>
<td style="text-align:left">Used to identify the microservice application and to make it available for <a href="https://cumulocity.com/docs/enterprise-tenant/managing-tenants/#subscribing-applications" class="no-ajaxy">subscription</a></td>
<td style="text-align:left">Automatically created, based on the ZIP file name</td>
</tr>
<tr>
<td style="text-align:left">Type</td>
<td style="text-align:left">Application type</td>
<td style="text-align:left">Microservice</td>
</tr>
<tr>
<td style="text-align:left">Path</td>
<td style="text-align:left">Part of the URL invoking the application</td>
<td style="text-align:left">Automatically created as /service/&lt;microservice-name&gt;</td>
</tr>
</tbody>
</table>

Below, you will additionally find information on the microservice version, as well as on its isolation level and billing mode, see [Microservice usage](https://cumulocity.com/docs/enterprise-tenant/usage-and-billing/#microservice-usage) for details on these parameters.

#### Microservice subscription {#microservice-subscription}

At the top right of the **Properties** tab, you find a toggle to subscribe to or unsubcribe from a microservice.

Changing the subscription is only possible for custom microservices, that is microservices being owned by you.

### Microservice permissions {#microservice-permissions}

In the **Permissions** tab you can view the permissions required for the respective microservice, and the roles provided for it.

## Monitoring microservices

You can monitor microservices hosted by Cumulocity in two ways.

### Status information {#status-information}

The status of the microservice can be checked in the **Status** tab of the respective microservice application.

<img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-microservice-status.png" alt="Microservice status" style="max-width: 100%">

To view the status you need the following permissions: READ permission for "Application management" and "Inventory".

The following information is provided on the **Status** tab:

* Instances - number of active, unhealthy and desired microservice instances for the current tenant.
* Subscriptions - number of active, unhealthy and desired microservice instances for all subtenants subscribed to the microservice.
* Alarms - alarms for given application, provided in realtime.
* Events - events for given application, provided in realtime.
* Smart rules - list of applicable smart rules.

#### Alarms and events {#alarms-and-events}

Most of the alarms and events visible in the **Status** tab are strictly technical descriptions of what's going on with the microservice.

There are two user-friendly alarm types:

* `c8y_Application_Down` - critical alarm which is created when no microservice instance is available.
* `c8y_Application_Unhealthy` - major alarm which is created when there is at least one microservice instance working properly, but not all of them are fully operating.

User-friendly alarms are created for the microservice owner tenant only. They are also automatically cleared when the situation gets back to normal, that is all the microservice instances are working properly.

User-friendly alarms can be used to create smart rules. For details on creating smart rules of various types, see [Smart rules](https://cumulocity.com/docs/cockpit/smart-rules/).

For example, to send an email, if a microservice is down, create an "On alarm send email" smart rule.

In the **On alarm matching** section, use `c8y_Application_Down` as an alarm type. As a target asset select the microservice which you would like to monitor, for example "echo-agent-server".

### Log files {#log-files}

Cumulocity offers viewing logs which provide more details on the status of microservices owned by the tenant.

To view logs, open the **Logs** tab of the respective microservice.

At the top of the page, you can select the instance of the microservice, for which you want to view the logs.


> **Info:**
> If your microservice was re-scaled into two instances you should be able to switch between them, but it is not possible to see the logs from both instances at once.



Next to the instance dropdown you can select the time range for the log entries to be shown by selecting a date from the calendar and entering a time.


> **Info:**
> The time entered here may differ from the server time due to different time zones.



At the top right, additional functionality is provided:

* **Download** - to download the log data for a specified time range.
* **Dark theme** - to turn dark theme on or off.
* **Auto refresh** - to activate the auto refresh functionality. If activated, the displayed log data will automatically be refreshed every 10 seconds.

Initially, the **Logs** tab shows the latest logs of the microservice instance.

At the bottom right you find navigation buttons:

* **First** - directly navigates to the oldest available log entries for the microservice after its restart (maximum capacity 35 MB of logs).
* **Previous** - increases the time range in 10 minutes steps.
* **Next** - reduces the time range in 10 minutes steps.
* **Last** - directly navigates to the latest available log entries.

If no logs are available in the selected time range, a message is shown accordingly:

<img src="https://cumulocity.com/docs/images/users-guide/Administration/admin-microservice-no-logs.png" alt="Microservice log">


> **Info:**
> There is no possibility to see the logs from the previously running instances or from previously rotated logs exceeding 35 MB. However, inside the instance there is a Docker container running, and if only this one was restarted (not the whole instance) you should see the logs from the currently running and also lately terminated Docker container.
>
> Logs are always loaded from the Docker container using both `stdout` and `stderr` sources, and there is no possibility to distinguish/filter by the source.
