diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..c3ca82a
Binary files /dev/null and b/.DS_Store differ
diff --git a/README.md b/README.md
index b0a999d..8bfcd85 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,184 @@
-# cryptlex-onpremise
+# Cryptlex On-premise
-Cryptlex On-premise offers a self-hosted version of Cryptlex for organizations that need or want to manage their own data. It can be run in your existing environments.
+## Self hosted licensing infrastructure for Cryptlex
-Refer to following for documentation:
+Cryptlex On-premise provides a fully self hosted deployment of Cryptlex for organizations that require complete control over infrastructure, data residency, security, and network environments.
-https://docs.cryptlex.com/cryptlex-on-premise/overview
\ No newline at end of file
+It includes all major Cryptlex platform capabilities, including license management, activations, floating licenses, trials, entitlements, release management, and APIs, while allowing deployment within your own infrastructure.
+
+Cryptlex On-premise can be deployed in:
+
+* private cloud environments
+* enterprise data centers
+* staging and production clusters
+* regulated or compliance sensitive environments
+
+---
+
+## Documentation
+
+| Topic | Description |
+| ---------------------------------------------------------------------------- | ------------------------------------ |
+| [docs/overview.md](docs/000-overview.md) | Overview of Cryptlex On-premise |
+| [docs/system-requirements.md](docs/system-requirements.md) | Hardware and software requirements |
+| [docs/server-layout.md](docs/server-layout.md) | Recommended deployment architectures |
+| [docs/configuring-client-libraries.md](docs/configuring-client-libraries.md) | Configure SDKs for On-premise |
+| [docs/monitoring-your-instance.md](docs/monitoring-your-instance.md) | Monitoring and observability setup |
+
+---
+
+## Architecture Overview
+
+Cryptlex On-premise consists of multiple independently scalable services:
+
+* Cryptlex Web API
+* Cryptlex Release Server
+* PostgreSQL
+* Redis
+* Reverse proxy (Traefik)
+* MinIO or S3 compatible storage
+
+The services can be deployed either:
+
+* on a single server for development/testing
+* across multiple servers for staging and production environments
+
+---
+
+## Deployment Models
+
+### Single Server Deployment
+
+Recommended for:
+
+* development environments
+* testing
+* low volume deployments
+
+Features:
+
+* simple deployment
+* minimal infrastructure requirements
+* all services hosted together
+
+---
+
+### Distributed Deployment
+
+Recommended for:
+
+* production environments
+* high availability deployments
+* scalable enterprise workloads
+
+Features:
+
+* external PostgreSQL
+* external Redis
+* load balancer support
+* horizontal scaling
+* storage redundancy support
+
+---
+
+## System Requirements
+
+### Minimum Requirements
+
+| Resource | Requirement |
+| ---------- | ------------------ |
+| CPU | Dual core |
+| Memory | 1 GB minimum |
+| Storage | 5 GB minimum |
+| Docker | 20.10.22 or higher |
+| PostgreSQL | 13.x or higher |
+
+### Recommended Production Requirements
+
+| Resource | Recommendation |
+| -------- | ----------------------------- |
+| CPU | Quad core or higher |
+| Memory | 4 GB or higher |
+| Storage | SSD backed persistent storage |
+| Database | Managed PostgreSQL cluster |
+| Cache | Dedicated Redis instance |
+
+---
+
+## Configuring Client Libraries
+
+By default, Cryptlex SDKs communicate with `api.cryptlex.com`.
+
+For On-premise deployments, configure your applications to use your self hosted Cryptlex endpoint.
+
+Example using LexActivator:
+
+```c
+status = SetCryptlexHost("https://cryptlex-api.mycompany.com");
+```
+
+See:
+
+* [Confirguring client libraries](docs/025-configuring-client-libraries.md)
+
+---
+
+## Monitoring
+
+Cryptlex supports integrations with:
+
+* New Relic
+* Bugsnag
+
+This allows monitoring of:
+
+* service health
+* application errors
+* infrastructure stability
+* alerting workflows
+
+See:
+* [Monitoring your instance](docs/030-monitoring-your-instance.md)
+
+---
+
+## Storage Components
+
+### PostgreSQL
+
+Primary database service used by Cryptlex Enterprise.
+
+### Redis
+
+Caching service used for performance optimization.
+
+### MinIO / S3 Compatible Storage
+
+Object storage service used for application file storage.
+
+---
+
+## Supported Platforms
+
+Cryptlex On-premise can run on:
+
+* Linux
+* Windows
+* macOS
+
+Provided Docker requirements are met.
+
+---
+
+## Support
+
+For assistance, enterprise inquiries, or deployment guidance:
+
+* [support@cryptlex.com](mailto:support@cryptlex.com)
+
+---
+
+## License
+
+Commercial software.
+Contact Cryptlex for licensing details.
\ No newline at end of file
diff --git a/assets/singleServer.png b/assets/singleServer.png
new file mode 100644
index 0000000..6ffbb80
Binary files /dev/null and b/assets/singleServer.png differ
diff --git a/docs/000-overview.md b/docs/000-overview.md
new file mode 100644
index 0000000..75ba91f
--- /dev/null
+++ b/docs/000-overview.md
@@ -0,0 +1,7 @@
+## Install and manage your on-premise version of Cryptlex
+
+Cryptlex On-premise offers a self-hosted version of Cryptlex for organizations that need or want to manage their own data. It can be run in your existing environments.
+
+Cryptlex On-premise has all the features of SaaS Cryptlex and regular releases ensure you are kept up to date. All client libraries can easily be configured to send license activation requests to your Cryptlex On-premise instance.
+
+To find out more or discuss your requirements please contact [support@cryptlex.com](mailto:support@cryptlex.com).
\ No newline at end of file
diff --git a/docs/010-system-requirements.md b/docs/010-system-requirements.md
new file mode 100644
index 0000000..f83e6b1
--- /dev/null
+++ b/docs/010-system-requirements.md
@@ -0,0 +1,31 @@
+## Operating System
+
+Cryptlex On-premise is deployed using Docker. Hence it can be deployed on any Linux, Mac, and Windows-based servers that can run current versions of Docker (at least version 20.10.22 or higher).
+
+## Storage and Memory
+
+Cryptlex requires a minimum of 5GB to function for its database and docker images. Your exact storage size requirements will vary depending on the volume of licenses and the number of activations.
+
+Cryptlex requires at least 1GB of memory to function. If the database is also installed on the same server then at least 4GB of memory is required.
+
+## CPU
+
+Cryptlex requires at least a dual-core CPU, and that will work for low volume installations. For anything more than that we recommend going with a quad-core CPU.
+
+## Software
+
+### Docker
+
+Cryptlex requires at least version 20.10.22 (or higher) of Docker.
+
+### Database
+
+Cryptlex requires PostgreSQL 13.x (or higher) for storing all the data.
+
+### Cache
+
+Cryptlex uses Redis for storing the cache data. If no Redis database is provided it defaults to memory.
+
+### Filestore
+
+It uses [Minio](https://www.minio.io/), which is an Amazon S3 compatible object storage server, for storing release files. In case you don't want to use the Cryptlex [release management](https://cryptlex.com/docs/release-management/overview) API, this is not required.
diff --git a/docs/015-server-layout.md b/docs/015-server-layout.md
new file mode 100644
index 0000000..9fecde1
--- /dev/null
+++ b/docs/015-server-layout.md
@@ -0,0 +1,25 @@
+To help you determine the best server layout, look over the diagrams below, and determine which layout works best for your dev/testing and production environments.
+
+ Each layout will require the Cryptlex Web API server, Cryptlex Release server, Cryptlex GeoIP server, Postgres, Redis, and a reverse proxy/web server for hosting the Cryptlex dashboard and routing traffic. In the Docker Compose deployment shipped with this repository, that role is provided by Traefik; Nginx is only applicable for alternative deployment models where you choose to use it.
+
+The Cryptlex services are separated because as you will see in the diagrams below they may not all run on the same server, and each component can be horizontally scaled separately.
+
+## Single server
+
+
+
+This configuration uses a single server to host all of the components for Cryptlex including the web dashboard. In this deployment model, there is no service redundancy and there is a risk of resource contention. For this reason, this model should be limited to the following purposes:
+
+* Development servers or workstations
+* Small production deployments
+
+## Multiple servers with an external database
+
+This configuration uses separate servers to host all the services. The method for configuring this database is outside the scope of this guide but a general guideline would be to provide some sort of storage redundancy or clustering capability to ensure a high level of availability and performance. For the file store, it is recommended to use AWS S3.
+
+Each Cryptlex Web API service is redundant and running on a separate server, this configuration provides basic redundancy.
+
+In this scenario, Cryptlex should be placed behind a load balancer to utilize all services equally. Cryptlex doesn't use cookies, so sticky sessions are not required to be configured in the load balancer. This configuration is best suited for the following purposes:
+
+* Staging environments
+* Production deployments
\ No newline at end of file
diff --git a/docs/020-Installation-Guide/0200-docker.md b/docs/020-Installation-Guide/0200-docker.md
new file mode 100644
index 0000000..96699c4
--- /dev/null
+++ b/docs/020-Installation-Guide/0200-docker.md
@@ -0,0 +1,210 @@
+## Before installation
+
+To get started with your Cryptlex On-premise installation, you’ll need the following things prepared in advance:
+
+- If this is your first time installing Cryptlex On-premise, you’ll need to [contact us](mailto:support@cryptlex.com) to schedule a guided installation. We’ll get you set up with a license key, and walk you through the installation process.
+- A server meeting the [minimum system requirements](/docs/010-system-requirements.md).
+
+## Installation
+
+Cryptlex On-premise uses [Docker Compose](https://docs.docker.com/compose/) to perform and manage installations. To install Cryptlex On-premise we first need to install and configure Docker Compose.
+
+### Install Docker Compose
+
+Please refer to following installation guide: [https://docs.docker.com/compose/install/](https://docs.docker.com/compose/install/)
+
+### Using Docker Compose
+
+All of the Cryptlex Docker images are available on [Docker Hub](https://hub.docker.com/u/cryptlex). If you’re looking for a complete configuration to get up and running quickly, use our [Docker Compose](https://github.com/cryptlex/cryptlex-on-premise) example and follow the steps below.
+
+#### Step 1: Create custom A or CNAME records
+
+You will need to create five A or CNAME records for the server machine where you will be deploying Cryptlex. For this tutorial we will choose the following five sub-domains:
+
+`cryptlex-api.mycompany.com` for the Web API Server
+
+`cryptlex-admin-portal.mycompany.com` for the Admin Portal
+
+`cryptlex-customer-portal.mycompany.com` for the Customer Portal
+
+`cryptlex-reseller-portal.mycompany.com` for the Reseller Portal
+
+`cryptlex-releases.mycompany.com` for the Release Server
+
+Now to create the records:
+
+- Go to your DNS provider’s website (e.g. [GoDaddy](https://ie.godaddy.com/help/add-a-cname-record-19236) or [Cloudflare](https://www.cloudflare.com/dns/)).
+- Create A or CNAME records for the above custom domains.
+- Point all of them to the same IP address or hostname of your server.
+
+#### Step 2: Clone the cryptlex-on-premise repository
+
+Next, you need to login into your Linux server machine and clone the [cryptlex-on-premise](https://github.com/cryptlex/cryptlex-on-premise) repository inside any folder and execute the following commands:
+
+```bash
+git clone https://github.com/cryptlex/cryptlex-on-premise
+cd cryptlex-on-premise
+chmod 0600 acme.json
+```
+
+The `acme.json` will store the SSL certificates, which will be generated for the above five sub-domains.
+
+#### Step 3: Update the Postgres version
+
+In the `docker-compose.yml` file change the value of `services.database.image` property to the current stable version of [Postgres](https://hub.docker.com/_/postgres). For example, if the latest version is 14.5 then set the value to `postgres:14.5-alpine`. Once the version is set, it cannot be updated later without migrating the database to a newer major version.
+
+#### Step 4: Update the environment variables
+
+The `cryptlex-on-premise` folder contains the following four files with environment variables that need to be updated with the correct values.
+
+**Update `.env` file**
+
+The `.env` file contains the following environment variables which you may need to update:
+
+| Environment Variables | Description |
+| ------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
+| `POSTGRES_DB` | Name of the database. |
+| `POSTGRES_USER` | Username of the database user. |
+| `POSTGRES_PASSWORD` | The password of the database user. |
+| `EMAIL` | Email required for SSL certificate notifications. |
+| `WEB_API_DOMAIN` | The domain of the web API server. In this case: `cryptlex-api.mycompany.com` |
+| `ADMIN_PORTAL_DOMAIN` | The domain of the Admin Portal. In this case: `cryptlex-admin-portal.mycompany.com` |
+| `RESELLER_PORTAL_DOMAIN` | The domain of the Reseller Portal. In this case: `cryptlex-reseller-portal.mycompany.com` |
+| `CUSTOMER_PORTAL_DOMAIN` | The domain of the Customer Portal. In this case: `cryptlex-customer-portal.mycompany.com` |
+| `RELEASE_SERVER_DOMAIN` | The domain of the release server. In this case: `cryptlex-releases.mycompany.com` |
+| `FILE_STORE_ACCESS_KEY` | Access key for the file store. |
+| `FILE_STORE_SECRET_KEY` | The secret key for the file store. |
+| `GOOGLE_CLIENT_ID` | This is needed in case you want to enable Google SSO. |
+| `TRAEFIK_BASIC_AUTH` | [Traefik](https://traefik.io/) is the reverse proxy. You can set the basic auth credentials for the Traefik dashboard. |
+
+**Update `webapi.env` file**
+
+The `webapi.env` file contains the following environment variables which you **must** update:
+
+| Environment Variables | Description |
+| ------------------------- | ------------------------------------------------------------------------------------------------------------ |
+| `ENCRYPTION_KEY` | Use any random string, this is used to encrypt the private keys and other secrets stored in the database. |
+| `RSA_PASSPHRASE` | Set the same value as `ENCRYPTION_KEY`. This property is deprecated and will be removed in a future release. |
+| `APPLICATION_LICENSE_KEY` | The license key which you get after you purchase the license for the self-hosted Cryptlex server. |
+
+Other than the above three you need to set environment variables for the email provider, and additionally you can configure other monitoring and error reporting services.
+
+**Update `release-server.env` file**
+
+The `release-server.env` file contains the following environment variables which you may need to update:
+
+| Environment Variables | Description |
+| --------------------- | --------------------------------------------------------------------------------------------------------- |
+| `FILE_STORE_BUCKET` | Name of the bucket (folder) where you want to store all your files. |
+| `FILE_STORE_REGION` | This is required in case you are using the AWS S3 file store, otherwise, leave the default value as such. |
+| `FILE_STORE_USE_SSL` | This should only be set to true in case you are using AWS S3. |
+
+#### Step 5: Run Docker Compose
+
+Execute the following commands to start the server:
+
+Ensure you have access to Cryptlex Docker images
+
+```bash
+docker login -u $DOCKER_USERNAME
+```
+
+### Start the Cryptlex services
+
+```bash
+docker compose up -d
+```
+
+### Check the logs for any errors
+
+```bash
+docker compose logs -t -f
+```
+
+The [Traefik](https://traefik.io/) reverse proxy server configured in the `docker-compose.yml` file will automatically generate SSL certificates for the above-mentioned domains and store them in `acme.json`. Additionally, it will automatically route the traffic to the respective containers.
+
+#### Step 6: Signup for the Cryptlex account
+
+Next, you need to open the dashboard in the browser and create your Cryptlex account, which can be done at the following URL: **https://cryptlex-admin-portal.mycompany.com/auth/signup.**
+
+ Only one Cryptlex account can be created in the on-premise version.
+
+### Docker Compose file details
+
+In the [docker-compose.yml](https://github.com/cryptlex/cryptlex-on-premise/blob/master/docker-compose.yml) file you will find the `database`, `filestore`, `cache`, `geoip`, `web-api`, `admin-portal`, `reseller-portal`, `customer-portal`, `release-server`, and `reverseproxy` services. Read below to better understand how each service is configured.
+
+#### Database service
+
+It contains the Postgres database server, which is used to store all the Cryptlex data.
+
+#### Cache service
+
+It uses [Redis](https://redis.io/) to store the cache data. If no Redis database is provided it defaults to memory.
+
+#### Filestore service
+
+It stores release files using Minio, an AWS S3 compatible object storage server. In case you don't want to use Cryptlex [release management](https://cryptlex.com/docs/release-management/creating-releases) API, this service can be commented out in the `docker-compose.yml` file.
+
+#### GeoIP service
+
+This service is used to get location information from the user's IP address.
+
+#### Web API service
+
+It is the core service that runs the Cryptlex web API server.
+
+#### Admin Portal service
+
+This service runs the Cryptlex admin portal.
+
+#### Reseller Portal service
+
+This service runs the Cryptlex reseller portal.
+
+#### Customer Portal service
+
+This service runs the Cryptlex customer portal.
+
+#### Release server service
+
+It handles the upload and download of releases you create in Cryptlex. In case you don't want to use Cryptlex [release management](/docs/release-management/creating-releases) API, this service can be commented out in the `docker-compose.yml` file.
+
+#### Reverse proxy service
+
+It uses [Traefik](https://traefik.io/) reverse proxy server to route the traffic and automatically generates and renews the SSL certificates for the `WEB_API_DOMAIN` , `RELEASE_SERVER_DOMAIN`, `ADMIN_PORTAL_DOMAIN`, `RESELLER_PORTAL_DOMAIN and CUSTOMER_PORTAL_DOMAIN`.
+
+### Traefik admin dashboard
+
+Traefik provides a dashboard that can be used to monitor the health and status of the self-hosted Cryptlex instance. You can access the Traefik dashboard at the following URL: **https://cryptlex-admin-portal.mycompany.com/traefik**
+
+You will need to put in the credentials set in the `.env` file to access the dashboard.
+
+### Checking logs
+
+Docker compose writes the **stdout** and **stderr** logs of each container in a JSON file located in `/var/lib/docker/containers/[container-id]/[container-id]-json.log.`
+
+To prevent logs from taking up the whole disk space, `20MB` limit has been applied to all the containers in the `docker-compose.yml` file. You can change that as per your requirements.
+
+To view the logs in realtime you can execute the following command:
+
+```bash
+docker compose logs -t -f
+```
+
+## Upgrading
+
+First login to your Linux server machine where Cryptlex is deployed and go to the directory where the `cryptlex-on-premise` repository was initially cloned. Then execute the following commands:
+
+### Execute the update script
+
+```bash
+./update.sh
+```
+
+### Check container logs
+
+```bash
+docker compose logs -t -f
+```
+
+ **Note:** The average downtime during the update is less than 1 minute.
diff --git a/docs/020-Installation-Guide/0205-kubernetes.md b/docs/020-Installation-Guide/0205-kubernetes.md
new file mode 100644
index 0000000..a0b927c
--- /dev/null
+++ b/docs/020-Installation-Guide/0205-kubernetes.md
@@ -0,0 +1,210 @@
+### Introduction
+
+In this guide, you'll install the **Cryptlex Enterprise Helm chart** to deploy the application on your Kubernetes cluster. You'll then set up an **Ingress Resource** to route traffic from your domains to the Cryptlex Enterprise back-end services. After configuring the Ingress, you'll install **Cert-Manager** in your cluster to automatically provision **Let's Encrypt** TLS certificates, securing your Ingresses.
+
+**Helm** is a package manager for Kubernetes that simplifies application deployment, upgrade, and lifecycle management using Helm Charts.
+
+***
+
+#### Prerequisites
+
+Before you begin, ensure you have the following:
+
+* A **Kubernetes 1.28+** cluster with `kubectl` configured to connect to it.
+* **Helm 3** installed on your local machine.
+* A fully registered domain name with at least four available **A** or **CNAME** records.
+
+This guide uses the following example domains:
+
+* `license-api.mycompany.com`
+* `license-admin-portal.mycompany.com`
+* `license-customer-portal.mycompany.com`
+* `releases.mycompany.com`
+
+***
+
+#### Step 1 — Installing the NGINX Ingress Controller
+
+Start by installing the **NGINX Ingress Controller** using Helm.
+
+The NGINX Ingress Controller will expose your services to the internet via a Load Balancer.
+
+First, create a file called `ingress.yaml` with the following content:
+
+```yaml
+controller:
+ publishService:
+ enabled: true
+ service:
+ enabled: true
+ externalTrafficPolicy: "Local"
+```
+
+Then, run the following commands:
+
+```bash
+helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
+helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx --values ingress.yaml
+```
+
+To watch the Load Balancer become available:
+
+```bash
+kubectl get services -o wide -w ingress-nginx-controller
+```
+
+Once ready, the Ingress Controller will route HTTP and HTTPS traffic to the appropriate backend services defined in your Ingress Resources.
+
+***
+
+#### Step 2 — Create DNS Records
+
+Create **A** or **CNAME** records for the external IP address of the Ingress Controller you just installed.
+
+To find the external IP:
+
+```bash
+kubectl get services -o wide -w ingress-nginx-controller
+```
+
+Then, go to your DNS provider (e.g., GoDaddy or Cloudflare) and create the following records:
+
+| Subdomain | Purpose |
+| --------------------------------------- | --------------- |
+| `license-api.mycompany.com` | Web API Server |
+| `license-admin-portal.mycompany.com` | Admin Portal |
+| `license-customer-portal.mycompany.com` | Customer Portal |
+| `releases.mycompany.com` | Release Server |
+
+Point all of them to the same external IP.
+
+***
+
+#### Step 3 — Securing the Ingress Using Cert-Manager
+
+To enable HTTPS, install **Cert-Manager** to your Kubernetes cluster.
+
+Run the following commands:
+
+```bash
+helm repo add jetstack https://charts.jetstack.io --force-update
+helm upgrade --install cert-manager jetstack/cert-manager \
+ --create-namespace --namespace cert-manager --atomic \
+ --set crds.enabled=true
+```
+
+Once installed, Cert-Manager will automatically issue and renew Let's Encrypt TLS certificates for your Ingress resources.
+
+***
+
+#### Step 4 — Installing the Cryptlex Enterprise Helm Chart
+
+**Step 4.1 — Choosing a Database**
+
+Cryptlex requires a **PostgreSQL** database.
+
+* For **staging/testing**, the Helm chart can deploy a bundled Postgres instance using a Persistent Volume Claim.
+* For **production**, it's recommended to use an external managed PostgreSQL service for reliability and scalability.
+
+**Step 4.2 — Choosing a File Store**
+
+Cryptlex uses an **AWS S3-compatible** file store for release artifacts.
+
+* The Helm chart includes a bundled **MinIO** instance for staging/testing environments.
+* For **production**, it's best to use a managed S3-compatible storage service (e.g., AWS S3, Wasabi).
+
+ Note: If you're not using Cryptlex's release management API, this service is optional.
+
+**Step 4.3 — Download and Customize the Helm Values File**
+
+Download the default configuration file:
+
+```bash
+curl -O https://raw.githubusercontent.com/cryptlex/helm-charts/master/cryptlex/cryptlex-enterprise/values.yaml
+```
+
+Create separate config files for each environment:
+
+```bash
+cp values.yaml staging.yaml
+cp values.yaml production.yaml
+```
+
+Update these files with environment-specific values (database, file store, domain names, etc.).
+
+**Step 4.4 — Install Cryptlex Enterprise Using Helm**
+
+Add the Cryptlex Helm chart repository:
+
+```bash
+helm repo add cryptlex https://cryptlex.github.io/helm-charts --force-update
+```
+
+Deploy for each environment:
+
+**Staging:**
+
+```bash
+kubectl create namespace cryptlex-stg
+helm upgrade --install cryptlex-enterprise-stg \
+ --values staging.yaml \
+ --namespace cryptlex-stg cryptlex/cryptlex-enterprise
+```
+
+**Production:**
+
+```bash
+kubectl create namespace cryptlex
+helm upgrade --install cryptlex-enterprise \
+ --values production.yaml \
+ --namespace cryptlex cryptlex/cryptlex-enterprise
+```
+
+***
+
+#### Step 5 — Create Your Cryptlex Account
+
+Once deployed, open the admin portal in your browser and create your Cryptlex account:
+
+```
+https://license-admin-portal.mycompany.com/auth/signup
+```
+
+ Note: You can only create **one Cryptlex account** per environment.
+
+***
+
+#### Upgrading Your Deployment
+
+Regularly upgrade the applications in your cluster to receive the latest security patches and features.
+
+Run the following commands to upgrade:
+
+##### Update all helm repos
+```bash
+helm repo update
+```
+
+##### Upgrade NGINX Ingress
+
+```bash
+helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx --values ingress.yaml
+```
+
+##### Upgrade staging environment
+
+```bash
+helm upgrade --install cryptlex-enterprise-stg \
+ --values staging.yaml \
+ --namespace cryptlex-stg cryptlex/cryptlex-enterprise
+```
+
+##### Upgrade production environment
+
+```bash
+helm upgrade --install cryptlex-enterprise \
+ --values production.yaml \
+ --namespace cryptlex cryptlex/cryptlex-enterprise
+```
+
+To upgrade **Cert-Manager**, refer to the official guide: [https://cert-manager.io/docs/installation/upgrading/](https://cert-manager.io/docs/installation/upgrading/)
diff --git a/docs/025-configuring-client-libraries.md b/docs/025-configuring-client-libraries.md
new file mode 100644
index 0000000..c9c6905
--- /dev/null
+++ b/docs/025-configuring-client-libraries.md
@@ -0,0 +1,39 @@
+## LexActivator
+
+By default, LexActivator will send license and trial activation requests to **api.cryptlex.com**
+
+You’ll need to configure your applications to send license and trial activation requests to your On-premise installation, at the hostname:port you configured for the Cryptlex Web API server endpoint.
+
+For example, in C/C++ applications:
+
+```c
+int status;
+status = SetProductData("PASTE_CONTENT_OF_PRODUCT.DAT_FILE");
+if (LA_OK != status)
+{
+ // handle error
+}
+status = SetProductId("PASTE_PRODUCT_ID", LA_USER);
+if (LA_OK != status)
+{
+ // handle error
+}
+status = SetCryptlexHost("https://cryptlex-api.mycompany.com");
+if (LA_OK != status)
+{
+ // handle error
+}
+```
+
+Similarly you can use the `SetCryptlexHost()` LexActivator API function for other programming languages.
+
+## LexFloatServer
+
+By default, LexFloatServer will send its own license activation request to **api.cryptlex.com**
+
+In order to configure LexFloatServer to send the license activation requests to your On-Premise installation, you should update **cryptlexHost** property in the LexFloatServer config.yml file:
+
+```bash
+server:
+ cryptlexHost: https://license-api.example.com
+```
diff --git a/docs/030-monitoring-your-instance.md b/docs/030-monitoring-your-instance.md
new file mode 100644
index 0000000..92bfed5
--- /dev/null
+++ b/docs/030-monitoring-your-instance.md
@@ -0,0 +1,13 @@
+Cryptlex integrates with [New Relic](https://newrelic.com/) and [Bugsnag](https://www.bugsnag.com/) which you can use to monitor the health of your Cryptlex instance, set up alerts and get notified on errors.
+
+### Setting up New Relic
+
+In order to monitor the Cryptlex web API server instance you will need to create a New Relic account. The free plan offered by New Relic would suffice.
+
+To enable New Relic monitoring just set the `NEW_RELIC_LICENSE_KEY` environment variable to the license key provided by New Relic for ASP.NET project.
+
+### Setting up Bugsnag
+
+In order to receive notifications when any error occurs in the Cryptlex web API server instance, you will need to create a Bugsnag account. The free plan offered by Bugsnag would suffice.
+
+To enable Bugsnag error reporting just set the `BUGSNAG_APIKEY` environment variable to the Bugsnag API key.
\ No newline at end of file