diff --git a/vuepress/docs/next/docs/curate/hub-details.md b/vuepress/docs/next/docs/curate/hub-details.md
index b46e805043..1b495f1a47 100644
--- a/vuepress/docs/next/docs/curate/hub-details.md
+++ b/vuepress/docs/next/docs/curate/hub-details.md
@@ -42,7 +42,7 @@ Three roles are available for the Enterprise Hub UI to manage its catalog. All r
- `eh-manager`: A manager has all the capabilities of an author, but also has the job of approving bundle groups for publication.
- `eh-admin`: An admin has full access to create, update, approve, and delete bundle groups, and manage users for the entire Hub instance. An admin can create categories, organizations and private catalogs, assign users to organizations, and generate API keys for private catalogs.
- `guest`: Any user without one of the preceding roles is considered a guest in the Enterprise Hub and is given a read-only view of a public catalog. This is also true for unauthenticated users.
-To assign roles to a new Hub user, see the [Entando Hub Installation and User Guide](../../tutorials/solution/entando-hub.md#user-management)
+To assign roles to a new Hub user, see the [Entando Hub Installation and User Guide](../../tutorials/solution/entando-hub.md#using-the-enterprise-hub)
## Bundle Group Versions
Available bundle group versions can be viewed or edited from the kebab-dropdown menu of an entry as seen here:
diff --git a/vuepress/docs/next/tutorials/solution/customer-portal.md b/vuepress/docs/next/tutorials/solution/customer-portal.md
index ce4ed3bbe2..526d47a719 100644
--- a/vuepress/docs/next/tutorials/solution/customer-portal.md
+++ b/vuepress/docs/next/tutorials/solution/customer-portal.md
@@ -4,7 +4,7 @@ sidebarDepth: 2
# Entando Customer Portal
## Overview
-The Entando Customer Portal enables an organization to quickly provide a modern, self-service, customer-facing application for managing subscriptions. It includes a lightweight integration to Jira Service Management for access to service tickets and a role based access control (RBAC) design for granting users varying levels of access.
+The Entando Customer Portal enables an organization to quickly provide a modern, self-service, customer-facing application for managing subscriptions. It includes lightweight integration to Jira Service Management for service ticket tracking and role based access control (RBAC) for a collaborative environment.
Key Features:
@@ -28,32 +28,36 @@ This tutorial covers:
### Automatic Install via the Entando Hub
-#### Integrate the Entando Hub into your App Builder
-1. Log in to your `App Builder` and go to `Hub` → `Select Registry`
-2. Choose `Entando Hub` if it has been configured, otherwise:
+#### A. Integrate the Entando Hub into your App Builder
+1. Log in to your App Builder and go to `Hub` → `Select Registry`
+2. Select `Entando Cloud Hub` if it has been configured, otherwise:
1. Choose `New Registry`
- 2. In the pop-up window, enter `Entando Hub` and `https://auth.entando.com/entando-hub-api/appbuilder/api` for the URL, then `Save`
- 3. Click on the Hub in the Registry
+ 2. In the pop-up window, enter the following:
+ -Name: `Entando Cloud Hub`
+ -URL: `https://auth.entando.com/entando-hub-api/appbuilder/api`
+ then click `Save`
+ 3. Click on the Cloud Hub in the Registry
-#### Install the Customer Portal
-From the Hub Catalog, `Deploy` and `Install` the Customer Portal application first, then the content bundle
+#### B. Install the Customer Portal
+1. From the Hub Catalog, click the `Customer Portal Application Bundle`, and `Deploy` and `Install` it in the pop-up window.
+2. Repeat for the `Content Bundle`. The order is important because the Content Bundle cannot be installed without the Application Bundle.
-#### Assign Roles to Configure the Service
+#### C. Assign Roles to Configure the Service
1. [Log in to your Keycloak instance](../../docs/consume/identity-management.md#logging-into-your-keycloak-instance) as an admin
2. Give at least one user the ability to manage the Customer Portal:
- - Assign the user the `cp-admin` role for the `pn-a71d68dd-166dc0f4-entandodemo-customerportal-server` client.
- - See [Role Assignment in ID Management](../../docs/consume/identity-management.md#authorization) for more details.
+ - Assign the user the `cp-admin` role for the `pn-a71d68dd-166dc0f4-entandodemo-customerportal-server` client. (See [Role Assignment in ID Management](../../docs/consume/identity-management.md#authorization) for more details.)
- Assign the user the `view-users` role for the `realm-management` client. This role is necessary when assigning users to a Customer Portal project.
-#### Navigate to Your Customer Portal
-1. From the sidebar, go to `Page` → `Management`
-2. Find the `Customer Portal` folder
-3. From the `Actions` pull-down menu, go to `View Published Page`
+#### D. Navigate to Your Customer Portal
+1. From the App Builder sidebar, go to `Page` → `Management`.
+2. Find the `Customer Portal` folder.
+3. From the corresponding `Actions` drop-down menu, go to `View Published Page`.
+You can set this as your homepage by going to `Page` → `Settings`, and choosing Customer Portal from the Homepage pull-down options.

### Manual Install
-1. To install the Customer Portal manually, run the following commands:
+1. To install the Customer Portal manually, run the following commands in this order:
``` bash
ent ecr deploy --repo="https://github.com/entando-samples/customerportal-application-bundle.git"
@@ -64,63 +68,61 @@ ent ecr deploy --repo="https://github.com/entando-samples/customerportal-content
```
2. Log in to the App Builder
-3. Go to the `Hub` in the left sidebar to view the two Customer Portal bundles. `Install` the `customerportal-application-bundle` first, then the `customerportal-content-bundle`.
+3. Go to the `Hub` from the left sidebar. The bundles should be displayed in the Local Hub as `Deployed`. Click the `customerportal-application-bundle` and then `Install`. Repeat for the `customerportal-content-bundle`.
-4. To navigate to your Customer Portal:
+4. Navigate to your Customer Portal:
1. From the sidebar, go to `Page` → `Management`
2. Find the `Customer Portal` folder
3. From the `Actions` pull-down menu, go to `View Published Page`
## Configuration
### Administrators
-In order to configure the Customer Portal and its users, the administrator needs Jira Service Management and Entando Identity Management System credentials. The admin can then connect the Customer Portal to Jira and customize its features.
+To configure the Customer Portal and its users, the administrator needs Jira Service Management and Entando Identity Management System credentials. The admin can then connect the Customer Portal to Jira and customize its features.
->Note: The built-in mapper for email must be enabled on the server client so that user accounts can be retrieved from Jira and new tickets can use that account information.
+::: tip
+The built-in mapper for email must be enabled on the server client so that user accounts can be retrieved from Jira and service tickets can use that account information.
+:::
### Jira Service Management
-Users who need access to the Customer Portal, beyond subscription and project information, must have a Jira Service Management account. The administrator utilizes Jira Service Management to create users and projects, define the organization, and configure the service ticket system.
+Users who need access to the Customer Portal, beyond subscription and project information, must also have a Jira Service Management account. The administrator utilizes Jira Service Management to create users and projects, define the organization, and configure the service ticket system.
::: tip
-The password for Jira Service Management must be an [API token generated by Jira](https://id.atlassian.com/manage-profile/security/api-tokens). For more information, go to [Manange API tokens at Atlassian Support](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/).
+The password for the Ticketing System Connection is requested by the Customer Portal administrator and must be an [API token generated by Jira](https://id.atlassian.com/manage-profile/security/api-tokens). For more information, go to [Manange API tokens at Atlassian Support](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/).
:::
-The JIRA Service Management REST API should follow the pattern https://YOUR-JIRA-SERVICE-MANAGEMENT-URL/rest/api/latest/. For reference, see [Jira Service Management Cloud REST APIs](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/).
+The Jira Service Management REST API should follow the pattern https://YOUR-JIRA-SERVICE-MANAGEMENT-URL/rest/api/latest/. For reference, see [Jira Service Management Cloud REST APIs](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/).
-#### Add Organizations and Projects in Jira:
+#### A. Add Organizations and Projects in Jira:
1. Go to Customers
-2. Add organizations and projects as needed
-3. Click on the name of each added organization to retrieve its ID from the URL. This is required to [create](#create-a-project) and [assign](#assign-a-project) projects in the Customer Portal
- - e.g. example.com/jira/servicedesk/projects/ECS/organization/3 → the Organization ID is “3”
+2. Add organizations and projects by completing the required fields
+3. Click on the name of each added organization to retrieve its ID from the URL. This is required to [create](#b-create-a-project) and [assign](#c-assign-a-project) projects in the Customer Portal
+ - e.g. example.com/jira/servicedesk/projects/ECS/organization/3 → the organization ID is “3”
### Configure the Customer Portal
The Customer Portal must be configured for a specific Jira Service Management instance. The `CP Admin Config` page is where you establish the Jira connection, manage product versions, define subscription levels, and customize ticket types.
-To access the `CP Admin Config` page, you must be given the `cp-admin` role in the [Entando Identity Management System](#entando-identity-management-system) as [described above](#assign-roles-to-configure-the-service).
+To access the `CP Admin Config` page, you must be given the `cp-admin` role in the [Entando Identity Management System](#entando-identity-management-system) as [described above](#d-assign-roles-to-users).
-#### View the `CP Admin Config` Page
-1. In the App Builder, go to `Pages` and select `Management`
-2. Open the Customer Portal folder and find `CP Admin Config`
-3. From the `Action` drop-down menu on the right, go to `View Published Page`
+#### A. View the `CP Admin Config` Page
+1. Go to `Pages` → `Management`
+2. Expand the Customer Portal folder and find `CP Admin Config`
+3. From the corresponding `Action` drop-down, go to `View Published Page`

-Once the Ticketing System Connection is set up with Jira and the correct URL, default parameters such as product versions and ticket types will be displayed. Open each section with the down arrow to add and edit the fields as needed.
-
-::: tip
-The password for the Ticketing System Connection is requested by the Customer Portal administrator and must be an [API token generated by Jira](https://id.atlassian.com/manage-profile/security/api-tokens). For more information, go to [Manange API tokens at Atlassian Support](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/).
-:::
+Once the Ticketing System Connection is set up with Jira and the correct URL, default parameters such as product versions and ticket types will be displayed. Expand each section with the down arrow to add and edit the fields as needed.
### Entando Identity Management System
Log in to the Entando Identity Management System to arrive at the landing page shown here. Use the left navigation bar to manage users, groups, and roles. Using the RBAC model, define what access users have by the roles and groups they are assigned. Some important information is noted below.

-#### The Realm Setting
+#### A. The Realm Setting
The `Realm` is a set of users, credentials, roles, and groups. A user belongs to and logs in to a `Realm`.
-#### Default Roles
+#### B. Default Roles
You can use the default roles by clicking on `Client Roles` and choosing `entandodemo-customerportal-server`. Access for each role is defined as follows:
* `cp-customer`: Assigned directly to specific projects of a single customer
@@ -128,10 +130,10 @@ You can use the default roles by clicking on `Client Roles` and choosing `entand
* `cp-support`: Read only view of all customer projects
* `cp-admin`: Admin access to the Customer Portal
-#### Create New User
+#### C. Create New User
1. From the sidebar, go to `Users`
2. Click `Add User` on the right
-3. Complete the form as needed, but note the requirements for these fields:
+3. Complete the form as needed, but these fields are required:
- `Username`: A unique name
- `Email`: Must use the same address used in Jira
- `User Enabled`: Set to On
@@ -141,8 +143,8 @@ You can use the default roles by clicking on `Client Roles` and choosing `entand
2. Under `Credential Reset`, go to `Reset Actions` → `Update Password`
3. Click `Send Email`
-#### Assign Roles to Users
-1. Click on the `Role Mapping` tab
+#### D. Assign Roles to Users
+1. Click the `Role Mapping` tab on top
2. Select the appropriate role(s) from `Available Roles` and assign them to a user by clicking `Add Selected`:
* To assign default roles, choose `entandodemo-customerportal-server` from the `Client Roles` pull-down
* To manage users in the Customer Portal, a user will need the `view-users` role under `Client Roles` → `realm-management`
@@ -150,7 +152,7 @@ You can use the default roles by clicking on `Client Roles` and choosing `entand

-#### Assign Roles to Groups
+#### E. Assign Roles to Groups
Under `Groups`, assign roles to groups as needed. Multiple roles can be assigned to a single group.
## Managing the Customer Portal
@@ -159,7 +161,7 @@ As administrator for the Customer Portal, you can create and manage users, custo

-#### Create a Customer or Partner
+#### A. Create a Customer or Partner
The processes to create customers and partners are similar. Below are the steps to add a `Customer`. A `Partner` is added the same way.
1. Click `Add a Customer`
2. Fill in the customer details. Note:
@@ -168,7 +170,7 @@ The processes to create customers and partners are similar. Below are the steps

-#### Create a Project
+#### B. Create a Project
1. Go to the Customer Portal landing page
2. Click on a customer to see the associated project list
@@ -177,7 +179,7 @@ The processes to create customers and partners are similar. Below are the steps
5. Provide the [Organization ID](#jira-service-management) retrieved from Jira. Each project must have a unique Organization ID.
6. Click `Save`
-#### Assign a Project
+#### C. Assign a Project
1. Go to the Customer Portal landing page
2. Click on a customer to see the associated project list
@@ -185,7 +187,7 @@ The processes to create customers and partners are similar. Below are the steps
4. Select the user for the `Project`
5. Click `Submit`
-#### Manage Partners and Subscriptions
+#### D. Manage Partners and Subscriptions
Use the `Action` drop-down menu to manage Partners or request and manage subscriptions.
## Using the Customer Portal
diff --git a/vuepress/docs/next/tutorials/solution/entando-hub.md b/vuepress/docs/next/tutorials/solution/entando-hub.md
index 50b1fe923c..e4712d3287 100644
--- a/vuepress/docs/next/tutorials/solution/entando-hub.md
+++ b/vuepress/docs/next/tutorials/solution/entando-hub.md
@@ -4,39 +4,46 @@ sidebarDepth: 2
# Entando Hub Installation and User Guide
-An Entando Hub enables teams to share components across their organization and between Entando Applications. It can be installed in any Entando 7+ instance and includes API-level integration with the App Builder.
+An Entando Hub enables teams to share components across their organization to build composable applications with ease and speed. This catalog management software bundle can be installed in any Entando 7+ instance and includes API-level integration with the App Builder.
+
+The Entando Platform comes built in with a local Hub for independent development, but additional registries can be connected, including an enterprise Hub where you can share and collaborate on modular components, through a private or public catalog. This tutorial describes the steps to install and access the enterprise version of the Entando Hub.
-This tutorial describes the steps to install and utilize an enterprise Entando Hub:
1. [Installation](#installation)
2. [Configuration](#configuration)
-3. [Using an Enterprise Hub](#using-an-enterprise-hub)
+3. [Using an Enterprise Hub](#using-the-enterprise-hub)
4. [Resources](#resources)
-For details on Hub features, definitions, user roles, component status and versioning process, see the [Entando Hub information page](../../docs/curate/hub-details.md).
+For details on Hub features, definitions, and other details, see the [Entando Hub information page](../../docs/curate/hub-details.md).
## Installation
-An enterprise Entando Hub is installed with two Entando Bundles. One bundle contains the micro frontends and microservices, which needs to be installed first, while the second sets up the initial content and pages for the Hub UI.
+An enterprise Entando Hub is installed with two Entando Bundles. One bundle contains the micro frontends and microservices, and should be installed first, while the second sets up the UI content and pages.
### Prerequisites
-- An Entando Application on any Kubernetes provider. Follow the [tutorials](../#operations) appropriate to your environment to install the Entando Platform.
+- An Entando Application on any Kubernetes provider. Follow the [tutorial](../#operations) appropriate for your environment to install the Platform.
- The [ent command line tool](../../docs/getting-started/entando-cli.md), installed and connected to your Kubernetes instance.
### Install the Hub from the Entando Cloud Hub
-Add the Entando Cloud Hub as a registry, directly accessible at any time from your App Builder:
+Connect the Entando Cloud Hub to your Local Hub so you can access the Hub bundles directly from your App Builder:
1. Log in to your App Builder
-2. Go to `Hub` → `Select Registry`
+2. Go to `Hub` from the sidebar and click `Select Registry`
3. Choose `New Registry`
-4. In the pop-up window, enter `Entando Cloud Hub` and `https://auth.entando.com/entando-hub-api/appbuilder/api` for the URL. Click `Save`
-5. Select the Cloud Hub in the Registry and find the Entando Hub bundles
-6. Deploy and install `entando-hub-application` bundle by clicking `UNDEPLOYED` and then following the instructions in the pop-up window. Note that you can choose the version by clicking the down arrow in the install button. The `application` bundle must be installed first because it provides the `entando-hub-content` with the necessary frontend components.
-7. Repeat the steps for `entando-hub-content` bundle. These bundles will now appear in your Local Hub. Continue with the [Configuration steps](#configuration) below.
+4. In the pop-up window, enter the following:
+ ``` bash
+ Name: Entando Cloud Hub
+ URL: https://auth.entando.com/entando-hub-api/appbuilder/api
+ ```
+The API Key is required only for private enterprise Hubs. Click `Save.
+
+5. Select the Cloud Hub in the Registry drop-down and find the Entando Hub bundles
+6. Deploy and install `entando-hub-application` bundle by clicking it and following the instructions in the pop-up window. Note that you can choose the version by clicking the down arrow in the install button. The `application` bundle must be installed first because it sets up the necessary frontend components for the `entando-hub-content` bundle.
+7. Repeat the steps for `entando-hub-content`. They should now appear in your Local Hub. Continue with the [Configuration steps](#configuration) below.
### Manual Installation Steps
-1. Apply the custom resource definitions for the Hub component bundles:
+1. Apply the custom resource definitions in this order to deploy the Hub bundles:
```
ent bundle generate-cr -t prod --image=docker://registry.hub.docker.com/entando/entando-hub-application | kubectl apply -f -
@@ -47,12 +54,12 @@ ent bundle generate-cr -t prod --image=docker://registry.hub.docker.com/entando/
2. Log into your App Builder instance.
-3. Select `Hub` from the menu on the left. The Hub bundles will be visible in the Local Hub as shown:
+3. Select `Hub` from the left menu. The Hub bundles are listed as Deployed in the local Hub catalog:
-
+
-4. Click each bundle icon and `Install` the bundle, where order of installation is important. The `entando-hub-application` bundle must be installed first because it provides the `entando-hub-content` bundle with MFEs. It may take several minutes to download the Docker images for the microservices and install the related assets.
->For multi-bundle components or PBCs, you need to follow the same order of installation for upgrades. For uninstalling the group, follow the reverse order of installation.
+4. Click each bundle icon and `Install` the bundle, starting with the `entando-hub-application`. Again the order of installation is crucial. It may take several minutes to download the Docker images for the microservices and install the related assets.
+>For multi-bundle components or PBCs, you need to follow the same order of installation for upgrades. For uninstalling the group bundles, follow the reverse order of installation.
## Configuration
1. Set up permissions to configure the service for the Hub administrator:
@@ -63,75 +70,77 @@ ent bundle generate-cr -t prod --image=docker://registry.hub.docker.com/entando/
2. Click the `Service Account Roles` tab at the top of the page and select `realm-management` from the `Client Roles` field.
3. Choose `realm-admin` from `Available Roles` and click `Add selected`. It should now appear as an `Assigned Role`.
-2. Access your enterprise Hub from the App Builder by navigating to `Pages → Management`. Find `Entando Hub` in the page tree, and click `View Published Page` from its Actions.
+2. To access your enterprise Hub:
+ - Navigate to `Pages` → `Management` in the App Builder
+ - Find `Entando Hub` in the page tree, and click `View Published Page` from its `Actions` drop-down options
-## Using an Enterprise Hub
+## Using the Enterprise Hub
### The Hub UI
-The enterprise Entando Hub UI is where users, entries, and catalogs are managed. Private and public catalogs can also be configured here.
-* Administrators can create and manage users, categories, and organizations.
-* Authors and managers have varying [levels of access](../../docs/curate/hub-details.md#roles) to create and manage entries, called Bundle Groups.
-* Each catalog can be [connected directly to an App Builder](#add-a-catalog-registry) instance for easy access.
+The enterprise Entando Hub provides a UI where users, entries, and catalogs are managed. Private and public catalogs are also configured there.
+* Administrators create and manage users, categories, and organizations.
+* Authors and managers create and manage the components organized there called Bundle Groups. They are assigned varying [levels of access](../../docs/curate/hub-details.md#roles) to perform their tasks.
+* Public or private catalogs can be configured, both [directly accessible from the App Builder](#add-a-catalog-registry).

-### User Management
+### Create Users
Only a Hub administrator has the authorization to create and manage users.
-1. Log into your Keycloak admin console
-2. Go to the `Users` section from the left navigation bar and add a new user. Enter the relevant identity information.
-3. Once saved, go to the `Role Mapping` tab and assign the correct role under `Client Roles` `pn-152edaba-0a2ba8fb-entando-entando-hub-catalog-ms-server`
+1. Log in to your Keycloak admin console.
+2. To create a new user, go to `Users` from the left sidebar and click `Add User`. Enter the relevant identity information. `Save`
+3. Go to the `Role Mapping` tab and assign these roles for `Client Roles` `pn-152edaba-0a2ba8fb-entando-entando-hub-catalog-ms-server`:
* for an author, assign `eh-author`
* for a manager, assign `eh-manager`
[See role definitions](../../docs/curate/hub-details.md#roles)
4. Log in to the Hub UI as an admin
5. Go to `User Management` and click `Add User`
-6. Choose the desired user and select an organization from the drop-down list. If the organization is not available, go to Organization Management to add it. **Note:** the admin user needs to belong to an organization as well, especially for private catalogs that require an API key.
-
+6. Choose the desired user and select an organization from the drop-down list. If the organization is not available, go to Organization Management to add it. **Note:** the administrator needs to belong to the same organization(s) as well, especially for private catalogs that require an API key.
### Create New Entries/Bundle Groups
-Click the `Add +` button at the top of the Hub UI home page to create a new [Bundle Group](../../docs/curate/hub-details.md#bundle-group-definitions). In the pop-up window, enter the details for the entry.
+At the top of the Hub UI, click the `Add +` button to create a new [Bundle Group](../../docs/curate/hub-details.md#bundle-group-definitions). This is what a component entry is called on Entando. In the pop-up window, enter the details for the entry.
-
+
-1. Upload a file for the thumbnail of the Bundle Group.
-2. Fill in the documentation address, version and organization as needed.
-3. Add one or more bundle URIs using the `Add +` button next to the field. For multi-bundle entries, it is recommended that the URIs be entered in the order they should be installed so they will be listed in that order in the Hub.
+1. Upload a thumbnail to represent the Bundle Group.
+2. Enter the documentation address, version and organization name (e.g., a team or business unit) as required.
+3. Add one or more bundle URI(s) using the `Add +` button beside the field. For multi-bundle entries, it is recommended that the URIs be entered in the order they should be installed so they will be listed in that order in the Hub.
>Should a multi-bundle entry need to be uninstalled, bundles will need to be removed in the reverse order so dependencies can be cleared without issue.
-4. Check the `Display Contact Us button` box and enter the `Contact URL` to gather more information from the viewer/visitor and manage access to the entry. Typically, the contact URL points to a web form on the owner's web site with a request for access.
+4. Check the `Display Contact Us button` and enter the `Contact URL` to gather more information from the visitor and manage access to the Bundle Group. Typically the contact URL points to a request form on the owner's web site.
Find more information on [Bundle Group publishing status](../../docs/curate/hub-details.md#bundle-group-status) and [versioning rules](../../docs/curate/hub-details.md#bundle-group-versions).
### Create a Private Catalog
-A private catalog can be configured in the Hub UI when creating a new organization. There can be many organizations in a single Hub instance, but each organization is allowed one private catalog. Only the Hub admin can create an organization, and provision a private catalog for it.
+A private catalog can be configured when creating a new organization. There can be many organizations in a single Hub instance, but each organization is allowed one private catalog. Only the Hub admin can create an organization and provision a private catalog for it.
1. Go to `Organization Management` from the top menu.
-2. Click `Add Organization +`, enter the relevant information in the pop-up window, and click `Save`.
-3. The new organization will appear in the current list. Click on the kebab menu on the right and select `Create Private Catalog`.
-A key icon will appear next to the private catalog. To go directly to this catalog, use the link under the same kebab menu.
+2. Click `Add Organization +`, enter the required information in the pop-up window, and click `Save`.
+3. The new organization will appear in the current list. Click the kebab menu to the right and select `Create Private Catalog`.
+A key icon appears next to the private catalog to confirm it. To go directly to this catalog, use the link in the same menu.
### Generate an API Key
-API access to private catalogs requires the use of an API key instead of user credentials. When connecting a registry from the App Builder, the API key is required to configure a private catalog.
-1. API Keys are attached to a specific user account so log in as a user assigned to the organization of the private catalog.
-2. From the Hub UI homepage, click on the gear icon right of the `Add +` button, and select `API Key Management`.
-3. Click `Generate API Key`, enter a name, and confirm with the blue generate button. Save the key for future reference.
+API access to private catalogs requires the use of an API key instead of user credentials. When configuring access to the private registry from the App Builder, the API key is required.
+
+1. API Keys are attached to a specific user account so log in as a user assigned to the organization connected to the private catalog.
+2. From the Hub UI homepage, click on the gear icon at the top and select `API Key Management`.
+3. Click `Generate API Key`, enter a name and confirm with the blue generate button. Save the key for future reference.
-The API key is required to access the bundles and PBCs in a private Entando Hub catalog. Bundles can be initialized directly from there using the [ent bundle init command](../../docs/getting-started/ent-bundle.md#initialization) or by adding the registry in your App Builder and deploying it from that catalog as described below.
+The API key is required to share the bundles and PBCs in a private Entando Hub catalog. Bundles can be initialized directly from the catalog by using the [ent bundle init command](../../docs/getting-started/ent-bundle.md#initialization) or by adding the registry in your App Builder and deploying it from that catalog as described below.
### Add a Catalog Registry
-Any enterprise Hub instance can be accessed from the Entando App Builder of any Entando Application.
+Any enterprise Hub instance can be accessed from the Entando App Builder, with the right credentials.
-1. Go to the Hub from the left navigation bar in the App Builder and click `Select Registry`
+1. In the App Builder, go to the Hub from the left navigation bar and click `Select Registry`
2. Choose `New Registry` from the drop-down menu
-3. Enter the registry name and the API endpoint for the catalog:
- * The API endpoint is `https://YOUR-BASEURL/entando-hub-application-152edaba/entando-hub-catalog-ms/appbuilder/api` where `YOUR-BASEURL` is the hostname of your Entando Application
+3. Enter the Hub name and the API endpoint for the catalog:
+ * The API endpoint is `https://YOUR-BASEURL/entando-hub-application-152edaba/entando-hub-catalog-ms/appbuilder/api` where `YOUR-BASEURL` is the hostname of your Entando instance.
* **Private Catalog**
- For a private catalog, the URL has an added catalog ID number from the catalog's HTTP address. Go to the published catalog page from the App Builder and find the address in the browser. The number after `/catalog/` is YOUR-CATALOG-ID#.
- * The endpoint to access the catalog is `https://YOUR-BASEURL/entando-hub-application-152edaba/entando-hub-catalog-ms/appbuilder/api/?catalogId=YOUR-CATALOG-ID#`
+ For a private Hub, the URL has an added catalog ID number from its HTTP address. Go to the published Hub page from the App Builder and find the address in the browser. The number after `/catalog/` is `YOUR-CATALOG-ID#`.
+ * The URL to access the catalog is `https://YOUR-BASEURL/entando-hub-application-152edaba/entando-hub-catalog-ms/appbuilder/api/?catalogId=YOUR-CATALOG-ID#`
- **E.g.**, The catalog address: `https://quickstart.k8s-entando.org/entando-de-app/en/entando_hub.page#/catalog/1/` → `1` is YOUR-CATALOG-ID#
+ **E.g.**, If your catalog web address is `https://quickstart.k8s-entando.org/entando-de-app/en/entando_hub.page#/catalog/1/` → `1` is YOUR-CATALOG-ID#
- The URL to enter: `https://quickstart.k8s-entando.org/entando-hub-application-152edaba/entando-hub-catalog-ms/appbuilder/api?catalogId=1`
+ The URL to enter: `https://quickstart.k8s-entando.org/entando-hub-application-152edaba/entando-hub-catalog-ms/appbuilder/api/?catalogId=1`
-4. If an API key is required, ask your Hub administrator or [generate a key](#generate-an-api-key) if you have a Hub user account.
+4. If an API key is required, ask your Hub administrator or [generate a key](#generate-an-api-key) if you have a Hub user account.
## Resources
diff --git a/vuepress/docs/next/tutorials/solution/hub-images/added-roles.png b/vuepress/docs/next/tutorials/solution/hub-images/added-roles.png
deleted file mode 100644
index f6be8ad559..0000000000
Binary files a/vuepress/docs/next/tutorials/solution/hub-images/added-roles.png and /dev/null differ
diff --git a/vuepress/docs/next/tutorials/solution/hub-images/clear-cache.png b/vuepress/docs/next/tutorials/solution/hub-images/clear-cache.png
deleted file mode 100644
index 995a6f4049..0000000000
Binary files a/vuepress/docs/next/tutorials/solution/hub-images/clear-cache.png and /dev/null differ
diff --git a/vuepress/docs/next/tutorials/solution/hub-images/default-start.png b/vuepress/docs/next/tutorials/solution/hub-images/default-start.png
deleted file mode 100644
index 99333b4a4d..0000000000
Binary files a/vuepress/docs/next/tutorials/solution/hub-images/default-start.png and /dev/null differ
diff --git a/vuepress/docs/next/tutorials/solution/hub-images/hub-home.png b/vuepress/docs/next/tutorials/solution/hub-images/hub-home.png
deleted file mode 100644
index b383f021b7..0000000000
Binary files a/vuepress/docs/next/tutorials/solution/hub-images/hub-home.png and /dev/null differ
diff --git a/vuepress/docs/next/tutorials/solution/hub-images/hub-roles.png b/vuepress/docs/next/tutorials/solution/hub-images/hub-roles.png
deleted file mode 100644
index ec3d34cb06..0000000000
Binary files a/vuepress/docs/next/tutorials/solution/hub-images/hub-roles.png and /dev/null differ
diff --git a/vuepress/docs/next/tutorials/solution/hub-images/kc-admin.png b/vuepress/docs/next/tutorials/solution/hub-images/kc-admin.png
deleted file mode 100644
index ed575ba5be..0000000000
Binary files a/vuepress/docs/next/tutorials/solution/hub-images/kc-admin.png and /dev/null differ
diff --git a/vuepress/docs/next/tutorials/solution/hub-images/kc-users.png b/vuepress/docs/next/tutorials/solution/hub-images/kc-users.png
deleted file mode 100644
index ebe05dfba5..0000000000
Binary files a/vuepress/docs/next/tutorials/solution/hub-images/kc-users.png and /dev/null differ
diff --git a/vuepress/docs/next/tutorials/solution/images/cp-admin.png b/vuepress/docs/next/tutorials/solution/images/cp-admin.png
index b3b508a3ec..54fbacf53f 100644
Binary files a/vuepress/docs/next/tutorials/solution/images/cp-admin.png and b/vuepress/docs/next/tutorials/solution/images/cp-admin.png differ
diff --git a/vuepress/docs/next/tutorials/solution/images/cp-identity-userrole.png b/vuepress/docs/next/tutorials/solution/images/cp-identity-userrole.png
index 68c50570fc..c2d54cd671 100644
Binary files a/vuepress/docs/next/tutorials/solution/images/cp-identity-userrole.png and b/vuepress/docs/next/tutorials/solution/images/cp-identity-userrole.png differ
diff --git a/vuepress/docs/next/tutorials/solution/images/cp-idmanagement-main.png b/vuepress/docs/next/tutorials/solution/images/cp-idmanagement-main.png
index 089bcc601d..d15443038a 100644
Binary files a/vuepress/docs/next/tutorials/solution/images/cp-idmanagement-main.png and b/vuepress/docs/next/tutorials/solution/images/cp-idmanagement-main.png differ
diff --git a/vuepress/docs/next/tutorials/solution/install-standard-demo.md b/vuepress/docs/next/tutorials/solution/install-standard-demo.md
index d35e7d0ab8..2603df5bdb 100644
--- a/vuepress/docs/next/tutorials/solution/install-standard-demo.md
+++ b/vuepress/docs/next/tutorials/solution/install-standard-demo.md
@@ -12,17 +12,17 @@ Bundles and the Entando Hub. The solution template includes:
- Multiple pages
- CMS content
-The goal of this exercise is to showcase how Entando Bundles can be used to:
+This exercise showcases how Entando Bundles can be used to:
- Quickly install and create functionality in an Entando Application
- Enable packaged business capabilities (PBCs)
- Allow developers to reuse full-stack operations via bundles
-Several key elements of this template are reviewed in the [Application Details section](#application-details) below.
+Several key elements of this solution package are reviewed in the [Application Details section](#application-details) below.
## Installation
-The Standard Banking Demo installs bundles containing multiple assets. Entando Bundles should contain the number and types of components necessary to satisfy business and developer objectives.
+The Standard Banking Demo installs bundles containing multiple assets. Entando Bundles should contain the number and types of components necessary to satisfy business and developer objectives, making it easier to reuse.
### Prerequisites
@@ -30,48 +30,46 @@ The Standard Banking Demo installs bundles containing multiple assets. Entando B
- The [Entando CLI](../../docs/getting-started/entando-cli.md), installed and connected to your Kubernetes cluster.
### Automatic Installation
-Install the Standard Banking Demo by integrating the Entando Cloud Hub into your App Builder:
+Install the Standard Banking Demo by accessing the Entando Cloud Hub from your App Builder:
1. **Log in to your App Builder**
2. **Go to `Hub` → `Select Registry`**
3. **Choose `Entando Hub` if it has been configured. If not:**
- 1. Choose `New Registry`
+ 1. Select `New Registry`
2. In the pop-up window, enter: \
Name: Entando Cloud Hub \
URL: https://auth.entando.com/entando-hub-api/appbuilder/api
3. Click `Save`
4. In `Select Registry`, choose `Entando Cloud Hub`
-4. **From the Hub Catalog, `Deploy` and `Install` each of the four Standard Banking Demo bundles:**
-
- ::: warning
- **The order of installation is important.** `sd-content-bundle` must be installed last, as it relies on micro frontends (MFEs) from the other bundles to set up each page. To uninstall the Banking demo, `sd-content-bundle` must be uninstalled first to resolve dependencies before other bundles can be be removed.
- :::
+4. **From the catalog, deploy and install each of the four Standard Banking Demo Bundles in this order:**
`sd-banking-bundle` \
`sd-customer-bundle` \
`sd-manage-users-bundle` \
`sd-content-bundle`
- 1. Click on the bundle thumbnail
- 2. In the pop-up window, click "Deploy"
- 3. In the same pop-up window, click "Install"
- >Note: It may take several minutes to download Linux images for the microservices and install related assets. Container initialization for the `sd-banking-ms` and `sd-customer-ms` microservices are the most time-consuming.
- 4. Close the pop-up window
- 5. Repeat steps 1-4 for each bundle
+ ::: warning
+ **The order of installation is important.** `sd-content-bundle` must be installed last, as it relies on micro frontends (MFEs) from the other bundles to set up each page. To uninstall the Banking demo, `sd-content-bundle` must be uninstalled first to resolve dependencies before other bundles can be be removed.
+ :::
- 
+ 1. Click on the `sd-banking-bundle` thumbnail
+ 1. In the pop-up window, click `Deploy` and `Install`. \
+ It may take several minutes to download the Linux images for the microservices, and install and initialize the assets.
+ 1. Close the pop-up window
+ 1. Repeat for the remaining three bundles
- ::: tip
- The four bundles should be listed in your Local Hub following the deploy and install:
+ 
+
+The four bundles should now be listed in your Local Hub for use in any application.
+
+
- 
- :::
### Manual Installation
-1. **Apply the definitions for the four bundles that comprise the Standard Banking Demo:**
+1. **Apply the definitions for the four bundles that comprise the Standard Banking Demo, in the order listed:**
```
ent ecr deploy --repo="docker://registry.hub.docker.com/entandodemo/sd-banking-bundle"
ent ecr deploy --repo="docker://registry.hub.docker.com/entandodemo/sd-customer-bundle"
@@ -89,43 +87,50 @@ Install the Standard Banking Demo by integrating the Entando Cloud Hub into your
**The order of installation is important.** `sd-content-bundle` must be installed last, as it relies on micro frontends (MFEs) from the other bundles to set up each page. To uninstall the Banking demo, `sd-content-bundle` must be uninstalled first to resolve dependencies before other bundles can be be removed.
:::
- 1. Click on the bundle entry
- 2. In the pop-up window, click "Install"
- >Note: It may take several minutes to download Linux images for the microservices and install related assets. Container initialization for the `sd-banking-ms` and `sd-customer-ms` microservices are the most time-consuming.
+ 1. Click on the `sd-banking-bundle` entry
+ 2. In the pop-up window, click "Install" \
+ It may take several minutes to download the Linux images for the microservices, and install and initialize the assets.
3. Close the pop-up window
- 4. Repeat steps 1-3 for each bundle
+ 4. Repeat steps 1-3 for the remaining three bundles
- 
+ 
::: tip
- Conflicts during the initial installation will generate an Installation Plan like the one shown below. After making your selections, click `Update All` in the upper right corner.
- 
+ Conflicts during the initial installation will generate an Installation Plan like the one shown below. After making your selections, click `Ok` in the lower right corner. You can also choose `Update All` or `Skip All` as needed.
+ 
:::
## Access the Standard Banking Demo
-Access the Standard Banking Demo via one of the following options:
+Access the Standard Banking Demo through one of the following options:
**Option 1: Make the Standard Banking Demo your default homepage**
1. Go to `App Builder` → `Pages` → `Settings`
- 2. In the drop-down menu for Home Page, select `Home / Home SD`
+ 2. In the drop-down menu for Home Page, select `Home/Home SD`
3. Click `Save`
- 
- 4. Click the home icon in the upper right corner of the App Builder to find your new homepage
+ 
+ 4. Click the home icon in the upper right corner of the App Builder to see your new homepage
**Option 2: Navigate to the Demo homepage from the App Builder page tree**
1. Go to `App Builder` → `Pages` → `Management`
2. Find `Home SD` in the page tree
3. From the `Actions` drop-down menu, go to `View Published Page`
- 
+
+ ::: tip Congratulations!
+
+ You have just installed a reusable Entando Bundle.
+ :::
+
+ 
## Application Details
-The Entando Standard Banking Demo application demonstrates a number of the major features of the Entando Platform:
+The Entando Standard Banking application demonstrates a number of major features of the Entando Platform:
+* Modular and Composable components architecture
* Keycloak integration for role based access controls
-* React and Angular micro frontends that coexist on the same dashboard
+* React and Angular micro frontends that coexist in the same application
* Micro frontend communication techniques
* Spring Boot Microservices
* Entando Content Management
@@ -136,23 +141,23 @@ The application includes six micro frontends (MFEs) showcasing complementary fea
#### 1. Card MFE
-
+
-- The Card MFE is a React micro frontend located on the My Dashboard page.
+- This is a React MFE found on the My Dashboard page.
- It makes an API call to the banking microservice to fetch a numeric result dependent on the current card selection. The displayed value updates with changes to the card configuration.
- It is authorization-aware and passes the bearer token to the microservice. If an unauthenticated user renders the dashboard page, the widget displays an error message.
- This MFE emits events that are consumed by the Transaction Table widget.
#### 2. Card NG MFE
-
+
-- The Card NG MFE is an Angular widget that is similar to the Card widget above, except for the choice of frontend technology.
+- This is an Angular widget that is similar to the Card widget above, except for the choice of frontend technology.
- It communicates with the Transaction Table widget, which is built with React.
#### 3. Manage Users MFE
-- The Manage Users MFE makes an API call to Keycloak to fetch user information.
+- This MFE makes an API call to Keycloak to fetch user information.
- It is visible from the username drop-down menu when the user is logged in to the app.
- By default, application users are not granted Keycloak user management privileges.
- To use Keycloak to apply role based access controls for an MFE:
@@ -161,37 +166,37 @@ The application includes six micro frontends (MFEs) showcasing complementary fea
- See the [Entando Identity Management System](../../docs/consume/identity-management.md) page for details.
Authorized View
-
+
Unauthorized View
-
+
#### 4. Transaction Table MFE
-- The Transaction Table MFE is a React micro frontend that consumes events from the Card MFEs.
+- This is a React micro frontend that consumes events from the Card MFEs.
- It makes an API call to the banking microservice to fetch transaction data.
-
+
#### 5. Sign Up MFE
-- The Sign Up MFE is a form widget located on the sign up page.
+- This is a form widget located on the sign up page.
- It makes an API call to the customer microservice to create a new user.
- Unauthenticated users can access this widget from any page.
-
+
#### 6. Alert Icon MFE
-- The Alert Icon MFE displays an icon on the dashboard page.
+- This MFE displays an icon on the dashboard page.
- It includes a configuration MFE for the user to select the icon's appearance and datatype.
- By default, it makes an API call to the banking microservice to fetch data.
-
+
### Configuration Micro Frontends
-When placed on a page, many of the Standard Banking Demo MFEs include configuration screens. These are visible in the App Builder at `Components` → `Micro frontends & Widgets`. To view a rendered configuration screen, place the MFE on a new page.
+Many of the Standard Banking Demo MFEs include configuration screens. These are visible in the App Builder at `Components` → `Micro frontends & Widgets`. To view a rendered configuration screen, place the MFE on a new page.
### Microservices
diff --git a/vuepress/docs/next/tutorials/solution/landing-images/standard_demo2.jpg b/vuepress/docs/next/tutorials/solution/landing-images/standard_demo2.jpg
new file mode 100644
index 0000000000..05b8041ad5
Binary files /dev/null and b/vuepress/docs/next/tutorials/solution/landing-images/standard_demo2.jpg differ
diff --git a/vuepress/docs/next/tutorials/solution/landing-images/standard_demo2.png b/vuepress/docs/next/tutorials/solution/landing-images/standard_demo2.png
deleted file mode 100644
index 997d96de8b..0000000000
Binary files a/vuepress/docs/next/tutorials/solution/landing-images/standard_demo2.png and /dev/null differ
diff --git a/vuepress/docs/next/tutorials/solution/landing-page.md b/vuepress/docs/next/tutorials/solution/landing-page.md
index e04b6fd882..43b4b6e33d 100644
--- a/vuepress/docs/next/tutorials/solution/landing-page.md
+++ b/vuepress/docs/next/tutorials/solution/landing-page.md
@@ -11,21 +11,20 @@ The Entando Application Composition Platform offers several Solution Templates t
- [**Entando Process Driven Applications Plugin**](pda-tutorial.md)
- [**Entando Standard Banking Demo**](install-standard-demo.md)
-Each open source Solution Template was built with Entando and can be used as-is, reviewed for common development practices, or leveraged as a useful starting point for a related application.
+Each open source Solution Template was built with Entando and can be used as-is, reviewed for common development practices, or leveraged as a starting point for similar applications.
-The following Solution Templates and other sets of components are available in the [public Entando Hub](https://entando.com/composable-platform/packaged-business-capabilities/) for installation in a user environment, where turnkey functionality can be customized and extended.
+These and other components are available in the [Entando Cloud Hub](https://entando.com/composable-platform/packaged-business-capabilities/) for installation in any environment, with turnkey functionality that can be customized or extended.
## Entando Customer Portal
-The [Entando Customer Portal](customer-portal.md) streamlines development of a customer-facing, self-service subscription management application. The platform integrates Keycloak role based access control and Jira Service Management as a ticket tracking system.
-
-
+The [Entando Customer Portal](customer-portal.md) is a customer-facing, self-service subscription management application. The Portal integrates Keycloak for role based access control and Jira Project Management for the service ticket tracking system.
+
## Entando Hub
-The [Entando Hub](entando-hub.md) empowers a team to share and collaborate on proprietary or Entando open source components. Capabilities, versions and metadata can be transparently analyzed, managed and published.
+The [Entando Hub](entando-hub.md) is a catalog management package that empowers teams to share and collaborate on the building blocks that make up a composable application. These modular components can be organised, developed and published on the Hub. This solution template extends the Entando Application Composition Platform (ACP) with direct connectivity between the component catalog and the App Builder, to accelerate innovation and rapidly pivot the business capabilities of your online applications.
-
+
[Entando Hub Details](../../docs/curate/hub-details.md)
[Entando Hub Installation and User Guide](./entando-hub.md)
@@ -34,16 +33,16 @@ The [Entando Hub](entando-hub.md) empowers a team to share and collaborate on pr
The [Entando Process Driven Applications Plugin](pda-tutorial.md) provides a comprehensive and versatile automation scheme for Business Process Management. It comprises a custom UX layer, a Spring Boot Backend for Frontend microservice interface, and integration with the [Red Hat Process Automation Manager](https://www.redhat.com/en/technologies/jboss-middleware/process-automation-manager).
-
+
## Entando Standard Banking Demo
-The [Entando Standard Banking Demo](install-standard-demo.md) showcases the benefits and possibilities of a composable application built from modular components. The example banking environment integrates a transaction table, sign up form, alert icon, and summary cards to demonstrate MFE communication and capabilities. Prominent features include Keycloak role based access control, coexistence of React and Angular MFEs, and pluggable Spring Boot microservices.
+The [Entando Standard Banking Demo](install-standard-demo.md) showcases the benefits and possibilities of a composable application built from modular components. The example banking environment integrates a transaction table, sign up form, alert icon, and summary cards to demonstrate the variable components that can be built on Entando ACP. Prominent features include Keycloak role based access control, coexistence of React and Angular MFEs, and pluggable Spring Boot microservices.
-
+
::: tip
-Check out our [Concepts](../../docs/getting-started/concepts-overview) page to explore Entando's approach to composability, or visit [Getting Started](../../docs/getting-started/) to put these components and capabilities in action!
+Check out our [Concepts](../../docs/getting-started/concepts-overview) page to explore Entando's approach to composability, or visit [Getting Started](../../docs/getting-started/) to put these capabilities into action!
:::
diff --git a/vuepress/docs/next/tutorials/solution/pda-architecture.md b/vuepress/docs/next/tutorials/solution/pda-architecture.md
index ad5e4b94be..d8e5b37fcc 100644
--- a/vuepress/docs/next/tutorials/solution/pda-architecture.md
+++ b/vuepress/docs/next/tutorials/solution/pda-architecture.md
@@ -1,7 +1,6 @@
# PDA Architecture
-This document describes the components that comprise the Process Driven Applications (PDA) plugin architecture with respect to
-deployment, as well as how they interact with each other.
+This document describes the components that comprise the Process Driven Applications (PDA) plugin architecture in deployment and how they interact with each other.
The image below shows the high level components.
@@ -15,36 +14,33 @@ components the user interacts with. These components are written in React and fe
The MFEs also make calls to the Entando Core API to retrieve the
settings required for the UI configuration. These components are available to assist with page creation after the PDA plugin bundle is installed.
-The source code for this component:
+Source code:
## PDA API
-The PDA API is a Spring Boot application that communicates with the BPM engine, and BPM engine data is made available in a Rest API. Subject to deployment configuration, the PDA API interacts with Keycloak to validate the token, retrieving the connection and sensitive data. Instead of calling specific engine classes directly, the application calls the abstractions defined in the PDA Core library.
+The PDA API is a Spring Boot application that communicates with the Business Process Management (BPM) engine, with the engine data made available through a REST API. Subject to the deployment configuration, the PDA API interacts with Keycloak to validate the token, retrieving the connection and sensitive data. Instead of calling specific engine classes directly, the application calls the abstraction defined in the PDA Core library.
-The engine implementation is determined at runtime based on the connection details provided. It is important to note that the PDA API does not have a database and is therefore stateless. All data available in the API are retrieved
-from the BPM engine. After bundle installation, the API is deployed as a
-microservice in the Kubernetes infrastructure. An Ingress is also created to
-make the API available to the MFEs, as described by the Entando Plugin custom
-resource.
+The engine implementation is determined at runtime based on the connection details provided. It is important to note that the PDA API does not have a database and is therefore stateless. All data available to it are retrieved from the BPM engine. After bundle installation, it is deployed as a microservice in the Kubernetes infrastructure. An ingress is also created to
+make it available to the MFEs, as described by the Entando Plugin custom resource.
-The source code for this component:
+Source code:
## PDA Core
-The PDA Core is the library that defines the interface and abstraction implementations that interact with specific BPM engines. It allows multiple engine implementations to exist simultaneously.
+The PDA Core is the library that defines the interface and abstraction implementations for interacting with specific BPM engines. It allows multiple engine implementations to exist simultaneously.
-The source code for this component:
+Source code:
## PAM Impl
The PAM Impl is the Red Hat PAM implementation for the PDA Core library. If the connection maps
to a PAM engine, these are the classes that are executed when the
-PDA API requests engine operations. This implementation communicates with
+PDA API requests engine operations. This component communicates with
the Kie Server, which executes the defined process operations.
-The source code for this component:
+Source code:
diff --git a/vuepress/docs/next/tutorials/solution/pda-images/task-list.png b/vuepress/docs/next/tutorials/solution/pda-images/task-list.png
index 0ef18de0f6..86048f8ad5 100644
Binary files a/vuepress/docs/next/tutorials/solution/pda-images/task-list.png and b/vuepress/docs/next/tutorials/solution/pda-images/task-list.png differ
diff --git a/vuepress/docs/next/tutorials/solution/pda-technical-guide.md b/vuepress/docs/next/tutorials/solution/pda-technical-guide.md
index 120a73bd5d..5d5a12314b 100644
--- a/vuepress/docs/next/tutorials/solution/pda-technical-guide.md
+++ b/vuepress/docs/next/tutorials/solution/pda-technical-guide.md
@@ -9,7 +9,7 @@ This page explores PDA plugin structure and functionality in greater detail. The
## Task Forms
-Widgets employ JSON schema to dynamically create any forms they contain. The JSON schemas are converted into React components using the `react-jsonshema-form` library. Entando's initial implementation utilizes Material UI components derived from the Material UI theme library (`rjsf-material-ui`) as a baseline, and includes templates, widgets and fields (`react-jsonshema-form` terms for forms components) that are specific to Entando.
+Widgets employ JSON Schema to dynamically create any forms they contain. JSON schemas are converted into React components using the `react-jsonshema-form` library. Entando's initial implementation utilizes Material UI components derived from the Material UI theme library (`rjsf-material-ui`) as a baseline, and includes templates, widgets and fields (`react-jsonshema-form` terms for forms components) that are specific to Entando.
This section will introduce the basic form configuration, but if you would like to learn more, please refer to the `react-jsonshema-form` [documentation](https://react-jsonschema-form.readthedocs.io/en/latest/).
@@ -38,17 +38,17 @@ The themed JSON Form is created using the `withTheme()` method from the `react-j
export default JSONForm;
-A form schema provides the JSON definition of the form’s structure and is mandatory for a JSON Form to function. Users can supply form data via the `formData` variable, which should follow the structure of JSON schema. UI schema can be supplied via the `uiSchema` variable, which allows users to customize the form’s UI (e.g. components, rules, types).
+A form schema provides the JSON definition of the form’s structure and is mandatory for a JSON Form to function. Users can supply form data via the `formData` variable, which should follow JSON Schema structure. UI schema can be supplied via the `uiSchema` variable, which allows users to customize the form’s UI (components, rules, types, etc).
-You can test the JSON schema, UI schema and form data in the `react-jsonschema-form` sandbox environment. Entando templates, widgets, and fields allow customization of form layout using Grid components. The size parameter in the UI schema’s `ui:options` object specifies the fill area of a field or subform.
+You can test the JSON Schema blueprint, UI schema and form data in the `react-jsonschema-form` sandbox environment. Entando templates, widgets, and fields allow customization of form layout using grid components. The size parameter in the UI schema’s `ui:options` object specifies the fill area of a field or subform.
-Size refers to the Material UI’s grid column widths (see the Material UI documentation), where the area the form can occupy is divided into 12 columns. A value of 12 (the default value if size is not provided) means the field or subform should take up all 12 columns. If two adjacent fields have size values of 8 and 4, respectively, they will share one row and the first field will be twice as wide as the second.
+Size refers to the Material UI’s grid column widths (see the [Material UI documentation](https://mui.com/material-ui/react-grid2/?srsltid=AfmBOooQau1xI3vb4gvlq9PkW82YfdZbZfqbqY1pMoOkGCepu-2DbSt9)), where the area the form occupies is divided into 12 columns. A value of 12 (the default value) means the field or subform should take up all 12 columns. If two adjacent fields have size values of 8 and 4, respectively, they will share one row and the first field will be twice as wide as the second.
-In addition, the user can provide an innerSize parameter to scale the input fields inside the columns. This helps with formatting when a user wants to make nonuniform adjustments to sizing.
-
-Multicolumn layout can also be achieved via `generateColumnedOFT` (`columnSize`) functionality, which assigns the default `columnSize` to the created form. The function `generateColumnedOFT` returns an `ObjectFieldTemplate` that is used as a template for all object fields (fields that contain properties).
+In addition, the user can provide an innerSize parameter to scale the input fields inside the columns. This is useful when formatting non-uniform sizing within a column.
+
+A multi-column layout can also be achieved via the `generateColumnedOFT` (`columnSize`) functionality, which assigns the default `columnSize` to the created form. The function `generateColumnedOFT` returns an `ObjectFieldTemplate` that is used as a framework for all object fields (fields that contain properties).
-To explain the mapping between JSON schema and UI schema let's define an example
+To explain the mapping between JSON Schema and UI schema, let's define an example
schema:
{
@@ -117,20 +117,18 @@ schema:
}
}
-From this JSON (you can copy & paste it into the `react-jsonschema-form`
-sandbox) we can see that there is a main form with a title “Mortgage
+In this JSON (you can copy & paste it into the `react-jsonschema-form`
+sandbox), there is a main form with the title “Mortgage
Application Form." The root form `Mortgage Application Form` has two
properties: one is a subform called `Application` and the other is a
-checkbox field (field ID is `inlimit`).
+checkbox field with ID `inlimit`.
-The `Application` subform contains two fields: `Mortgage Amount` with field ID `mortgageamount` and `Down Payment` with field ID `downpayment`. It also contains two subforms: `Applicant` with field ID `applicant` and `Property` with field ID `property`.
+The `Application` subform contains two fields: `Mortgage Amount` with field ID `mortgageamount`, and `Down Payment` with ID `downpayment`. It also contains two subforms: `Applicant` with ID `applicant` and `Property` with ID `property`.
-The `Applicant` subform contains two fields: `Name` with field ID `name` and `Annual Income` with field ID `annualincome`. The `Property` subform also contains two fields: `Age of property` with field ID `age` and `Address of property` with field ID `address`.
+The `Applicant` subform contains two fields: `Name` with field ID `name` and `Annual Income` with ID `annualincome`. The `Property` subform also contains two fields: `Age of property` with ID `age` and `Address of property` with ID `address`.
-By default (without providing UI schema), these are listed as one field per row. To use Entando’s implementation of Grid layout, users have to
-provide UI schema with details about each field. For example, if we
-would like to have a layout that looks like this (fields are marked
-`[ field name ]`):
+Without a specified UI schema, these are listed as one field per row by default. To use Entando’s implementation of a Grid layout, users have to
+provide a UI schema with details about each field. For example, to achieve a layout that looks like this (fields are marked with brackets):
+----------------------------------------------------------------------------+
| Mortgage Application Form |
@@ -146,7 +144,7 @@ would like to have a layout that looks like this (fields are marked
| | [Address of property] |
+----------------------------------------------------+-----------------------+
-To set up the UI schema, you need to use field IDs to define each field you want to customize. For example, to add options to the `Name` field, create an object tree beginning at the root: `Application` —\> `Applicant` —\> `Name` (equivalent to `Application.Applicant.Name`). The UI schema for the table layout defined above looks like this:
+To set up the UI schema, you need to use field IDs to define each field to customize. For example, to add options to the `Name` field, create an object tree beginning at the root: `Application` —\> `Applicant` —\> `Name` (equivalent to `Application.Applicant.Name`). The UI schema for the table layout defined above looks like this:
{
Application: {
@@ -187,8 +185,8 @@ To set up the UI schema, you need to use field IDs to define each field you want
},
},
};
-
-As Material UI components are used for field templates, there might be a need to pass some Material UI options into the field. This can be done by adding the `muiProps` object to `ui:options`.
+
+When using Material UI components for field templates, additional options can be passed into the object by adding `muiProps` to the `ui:options` property.
For example, if you would like to make the down payment field resizable, you can add `multiline: true` to the `muiProps` option. If you want the field to take up multiple rows by default, add the fields `rows` and `rowsMax`. The latter limits how many rows can be added until the scroll bar is shown.
@@ -208,7 +206,8 @@ For example, if you would like to make the down payment field resizable, you can
Different types of widgets can be applied by passing the type via
`ui:widget`. This property specifies the widget to use when the form
-renders a UI field. See the documentation to learn about widgets supported by the `react-jsonschema-form`.
+renders a UI field. See the [documentation](https://rjsf-team.github.io/react-jsonschema-form/docs/usage/widgets/) to learn about widgets supported by the `react-jsonschema-form`.
+
## Code Style
Refer to:
diff --git a/vuepress/docs/next/tutorials/solution/pda-tutorial.md b/vuepress/docs/next/tutorials/solution/pda-tutorial.md
index c3f7df528f..f5dcbafecd 100644
--- a/vuepress/docs/next/tutorials/solution/pda-tutorial.md
+++ b/vuepress/docs/next/tutorials/solution/pda-tutorial.md
@@ -6,12 +6,12 @@ sidebarDepth: 2
## Introduction
-The Entando Process Driven Applications (PDA) plugin is engineered to provide a rich and full-featured user experience while facilitating the management and implementation of business processes and automation. This solution template includes:
+The Entando Process Driven Applications (PDA) plugin provides a rich and full-featured user experience for the management and implementation of business process automation. This solution template includes:
-- A general purpose UX layer created from micro frontends that can be implemented for any business process or task engine. The UX layer can serve data via the included Entando integration adapter or by implementing a set of interfaces on the server side.
+- A general purpose UX layer created from micro frontends that can be implemented for any business process or task engine. It serves data through the included Entando integration adapter or via a set of interfaces on the server side.
- A Spring Boot microservice backend providing a pluggable interface for the injection of underlying processes or automation toolkits. The interfaces and steps for creating a new PDA backend implementation are described in further detail [here](./pda-technical-guide.md).
-The following tutorial installs the PDA plugin via the Local Hub and an Entando Bundle. It demonstrates the scope of process automation enabled by integrating:
+The following tutorial installs the PDA plugin via the Local Hub and an Entando Bundle. It demonstrates the process automation enabled by integrating:
- Custom Micro Frontends (MFEs)
- Backend for Frontend (BFF) microservice
@@ -21,38 +21,38 @@ Key elements of the template are reviewed in the [Application Details section](#
## Installation
-There are numerous assets installed as part of the Entando PDA plugin. Entando Bundles can include more or less components, depending on objectives. It is recommended that organizations develop guidelines for bundle sizing that fit the goals of their applications and teams.
+There are many assets installed as part of the Entando PDA bundle. Entando Bundles can include more or less components, depending on objectives. It is recommended that organizations develop guidelines for bundle sizing that fit their goals.
### Prerequisites
-- An Entando Application on any Kubernetes provider. Follow one of the [tutorials](../#operations) appropriate to your environment to install the Entando platform.
+- An Entando Application on any Kubernetes provider. Follow one of the [tutorials](../#operations) appropriate to your environment to install the Entando Platform.
- The ent command line tool, installed and connected to your Kubernetes instance.
- Red Hat PAM
### Automatic Install via the Entando Hub
-1. Log into your `App Builder` → `Hub` → `Select Registry` → choose `Entando Hub` if it has been configured.
+1. Log in to your `App Builder`. Go to `Hub` → `Select Registry` → choose `Entando Hub` if it has been configured.
1. If not, choose `New Registry`
2. In the pop-up window, enter `Entando Hub` and `https://auth.entando.com/entando-hub-api/appbuilder/api` for the URL, then `Save`
- 3. Click on the Hub in the Registry
+ 3. Select Entando Hub in the Registry
-2. From the Hub Catalog, `Deploy` and `Install` the PDA bundle. The installation may take several minutes while the application downloads the Linux image for the microservice and installs the related assets.
+2. Click the PDA bundle icon and `Deploy` and `Install` it in the pop-up window. The installation may take several minutes while the application downloads the Linux image for the microservice and installs the related assets.
3. To finish the tutorial, skip to the [Configuration Steps](#configuration) below.
### Manual Install
-1. Apply the Custom Resource Definition for the PDA plugin component bundle.
+1. Apply the Custom Resource Definition for the PDA Bundle.
```
ent ecr deploy --repo="https://github.com/entando-samples/entando-process-driven-plugin-bundle.git"
```
-2. Log into your App Builder instance.
+2. Log in to your App Builder instance.
-3. Select `Hub` from the menu on the left. Your bundles will be visible in the repository as shown in the screenshot below.
+3. Select `Hub` from the left sidebar. Your bundles will be visible in the repository as shown here.
-
+
-4. Select `Deployed` and `Install`. The installation may take several minutes while the application downloads the Linux image for the microservice and installs the related assets.
+4. Click the PDA bundle icon and `Install` it in the pop-up window. The installation may take several minutes while the application downloads the Linux image for the microservice and installs the related assets.
## Configuration
@@ -98,116 +98,114 @@ Follow the steps below to configure service permissions and connections.
- [Log in to your Keycloak instance](../../docs/consume/identity-management.md#logging-into-your-keycloak-instance) as an admin.
- Give at least one user the ability to configure and manage the PDA plugin by assigning all roles for the `pn-efbd66b6-b0ceabd7-entando-pda-plugin-server` client. See [Role Assignment in ID Management](../../docs/consume/identity-management.md#authorization) for more details.
-2. Log in to the App Builder and configure the PDA connection.
-- Go to `Pages` → `Management`, find `PDA Connections` in the page tree and select `View Published Page` from the Actions. This redirects you to the browser tab opened for PDA Connections.
-- Click on `Create new connection` in the upper right corner. The `Name*`, `Engine*` and `Timeout*` fields are prepopulated with base values.
- - The default name value `pam-demo` may be edited, but the datasource names of other widgets must match your edit. Go to `Pages` → `Management` and select `Design` from the Actions of each page below. The Actions of affected widgets will include a `Settings` option, from which you can update the `Knowledge Source` field.
+2. Log in to the App Builder and configure the PDA connection:
+- Go to `Pages` → `Management`, find `PDA Connections` in the page tree, and select `View Published Page` from `Actions`.
+- Click `Create new connection` in the upper right corner. The `Name*`, `Engine*` and `Timeout*` fields are prepopulated with default values. The default name `pam-demo` may be edited, but the datasource names of other widgets must match your settings.
+
- PDA Dashboard
- PDA Process Definition
- PDA Smart Inbox
- PDA Task Details
+ > To change the datasource, go to `Pages` → `Management` and select `Design` from the Actions menu for a page. Each component in the frames has a kebab drop-down menu to make changes. For the relevant widget, you can update the `Knowledge Source` field by selecting the `Settings` option.
- Leave `pam` as the engine name. This value is appropriate for jBPM or PAM.
- - Leave the timeout as `60000`, which is in milliseconds.
+ - Leave the timeout as `60000`msec.
- Provide your connection URL to the KIE Server rest services, e.g. 'http://my.server.net:8080/kie-server/services/rest/server'.
- Username/password should be for a jBPM or PAM service account user, e.g. 'krisv'.
-
-Go to the Smart Inbox to begin working with the PDA plugin. It can be accessed from the App Builder by navigating to `Pages → Management`, finding `PDA Smart Inbox` in the page tree and clicking `View Published Page` from its Actions.
+3. Go to the Smart Inbox to begin working with the PDA plugin:
+- Go to `Pages → Management`, find `PDA Smart Inbox` in the page tree and click `View Published Page` from its `Actions`.
## Application Details
-The Entando PDA plugin demonstrates several of the major features of the Entando platform, the configuration and capabilities of which are summarized below. For a discussion of these components in the context of deployment, see [PDA Deployment Architecture](./pda-architecture.md).
+The Entando PDA plugin demonstrates several important features of the Entando Platform summarized below. For a discussion of these components in deployment, see [PDA Deployment Architecture](./pda-architecture.md).
+
### Micro Frontends (MFEs)
-This section provides a brief description of each MFE available to the PDA plugin. Details specific to the PAM implementation of an MFE are included where appropriate. MFE behavior and datasources must be defined if the integration layer is extended to other engines or custom implementations.
-#### Task List
+This section provides a brief description of every MFE in the PDA plugin. Details specific to the PAM implementation of an MFE are included where applicable. MFE behavior and datasources must be defined if the integration layer is extended to other engines or customizations.
+
+#### A. Task List
-The Task List MFE provides the user with a list of visible tasks that are
-either assigned to or could be claimed by that user. In the default implementation, the visible tasks are limited to a
-single process instance. At configuration time, the application designer
-is given the option to select a set of columns that will be visible in
-the task list for that page.
+The Task List MFE provides the user a list of visible tasks that are
+either assigned to or could be claimed by them.
+In the default implementation, the visible tasks are limited to a single process instance.
+At configuration time, the application designer is given the option to select a set of columns that are visible in the task list for that page.
-
+![Task List in Table Format with create date, status, owner, etc.]](./pda-images/task-list.png)
-The default PAM implementation exposes the top level task fields in the task list for selection. It is possible to fetch task and process variables from the task list for rendering, but this is disabled by default to optimize performance.
+The default PAM implementation exposes the top level task fields in the list for selection. It is possible to fetch task and process variables from the list for rendering, but this is disabled by default to optimize performance.
-#### Task Details
+#### B. Task Details
-The Task Details MFE renders detailed information about a task in a read only grid. It is intended to give the end user the information necessary to process the task. See the Styling section below to customize the layout.
+The Task Details MFE renders detailed information about a task in a read only grid. It gives the end user the information necessary to process the task. See the [Styling](#styling) section below to customize the layout.
-
+
-The PAM implementation renders task variables in the task details widget.
+The PAM implementation renders task variables in the details widget.
-#### Task Comments
+#### C. Task Comments
-The Task Comments MFE enables the user to view and add the notes attached
+The Task Comments MFE enables the user to view and add notes attached
to a task.
-
+
The PAM implementation reads and publishes notes to the comments endpoint.
-#### Task Form
-
-The Task Form can be accessed by clicking on the Task Overview link found in the Task Details MFE. Its implementation renders a form specific to a task and enables
-the user to complete that form. It is a
-wrapper around a JSON schema that describes the layout, style and
-content of the form. The backend implementation provides the mapping
-to the schema and default UX layout needed to render the form. See the
-[technical documentation](./pda-technical-guide.md) for more on the JSON schema
-implementation.
+#### D. Task Form
-The PAM implementation of forms depends on the presence of a form definition for the PAM task. The Entando PAM engine implementation transforms the PAM format to the JSON schema to render the form. It also transforms the API format back to the PAM format. There are some limitations on form customization due to the format required to return data to PAM. See the Task Forms section in the technical documentation for more information.
+The Task Form can be accessed by clicking on the Task Overview link found in the Task Details MFE. It is a form specific to a task completed by the user to define the way it is displayed.
+
+A wrapper for the JSON Schema blueprint, it describes the layout, style and content of the form.
+The backend implementation provides the mapping to the schema and default UX layout needed to render the form. See the
+[technical documentation](./pda-technical-guide.md) for more on the JSON Schema implementation.
-#### Attachments
+The PAM implementation of forms relies on the presence of a form definition for the PAM task. The Entando PAM engine implementation transforms the format to JSON Schema to render the form. It also transforms the API format back to the PAM format. There are some limitations on form customization due to the format required to return the data to PAM. See the [Task Forms](pda-technical-guide.md#task-forms) section in the technical documentation for more information.
-The Attachments MFE enables the user to view and add documents attached to a task, case or process. After selecting an entry in the Smart Inbox task list, use the App Builder to add the Attachment MFE to that entry's page by navigating to `Pages → Management`; select `Design` from the `PDA Smart Inbox` actions and drag the "PDA - Task Attachments" widget into its placeholder.
+#### E. Attachments
+
+The Attachments MFE enables the user to view and add documents attached to a task, case or process. To add this capability to a page, go to `Pages` → `Management` in the App Builder, select `Design` from the desired page's Actions drop-down, and drag the "PDA - Task Attachments" widget into an empty frame.
-
+
The PAM implementation posts the documents to the PAM endpoints for storage.
-#### New Process Form
+#### F. New Process Form
-The New Process Form renders a form enabling the end user to instantiate a new business process instance. The same technology is used to generate a New Process Form and the JSON schema definition for a Task Form.
+The New Process Form MFE renders a form enabling the end user to instantiate a new business process instance. The same technology is used to generate a New Process Form and the JSON Schema definition for a Task Form.
-
+
-The PAM implementation relies on a form definition attached to the process definition. Entando transforms the PAM representation into a JSON schema form that can be rendered to the end user.
+The PAM implementation relies on a form definition attached to the process definition. Entando transforms the PAM representation into a JSON Schema form that can be rendered to the end user.
-#### Summary Cards
+#### G. Summary Cards
-The Summary Card MFEs provide a view into aggregate data for the process
+The Summary Cards MFE provides a view into the aggregate data for the process
implementation. The rendered information includes a total value, a trend
-value, and a timeframe selector. The Summary Card provides the
-the option to request rendering information. This request maps to a call in the underlying engine and provides the summarized data.
+value, and a time frame selector. The MFE provides the option to request rendering information. This request maps to a call in the underlying engine and provides the summarized data.
-
+
-The PAM implementation of the Summary Card widget relies on the PAM custom query functionality. The PAM PDA engine exposes a configuration file where the custom query can be defined. This allows user customization of the data rendered on the summary cards. The application contains a "properties" file where the user can submit a custom query for each of the cards.
+The PAM implementation of the widget relies on the PAM custom query functionality. The PAM PDA engine exposes a configuration file where the custom query can be defined. This allows the user to customize the data rendered on the summary cards. The application contains a "properties" file where the user can submit a custom query for each of the cards.
-#### Totals Over Time
+#### H. Totals Over Time
The Totals Over Time MFE provides a dual axis line/bar graph displaying
trend information about the process environment. Three summary values can be compared over a single time period.
-
+
-The PAM implementation of the Totals Over Time MFE utilizes custom queries to fetch the summary data rendered in the chart. The queries used in the implementation are defined in configuration files in the MFE and can be updated to render implementation specific data.
+The PAM implementation of this MFE utilizes custom queries to fetch the summary data rendered for the chart. The queries used in the implementation are defined in configuration files in the MFE and can be updated to render specific data.
### Process Automation Manager (PAM)
-The Entando PDA is built on Process Automation Manager, which is a business process automation engine built and maintained by Red Hat.
+The Entando PDA is built on Red Hat Process Automation Manager, a business process automation engine with the following special features.
### Backend for Frontend (BFF)
-A microservice architecture allows teams to iterate quickly and
-develop technology to scale rapidly. Backend for Frontend
-is an architecture pattern built with microservices. The key
-component of this pattern is an application connecting the frontend
-of an application with the backend. The BFF Code Pattern helps to build that component according to IBM’s best practices.
+A microservice architecture allows teams to rapidly iterate and
+develop technology to scale. Backend for Frontend
+is an architecture pattern built with microservices. The BFF is the key
+of this pattern, connecting the frontend of an application with the backend.
## Customization and Extension
@@ -221,29 +219,24 @@ For an in-depth discussion of the PDA architecture, refer to the [PDA Technical
### Styling
-The Entando PDA MFEs are styled via a Material UI theme. That theme can
+The MFEs of the Entando PDA are styled with a Material UI theme. That theme can
be downloaded and updated [here](https://github.com/entando/frontend-libraries/tree/master/packages/entando-ui).
### Implementing a New Engine or Integrating a New Task Source
-
-Implementing a new engine for Process Driven Applications means
+
+Emloying a new engine for Process Driven Applications means
creating a new Java project and implementing the interfaces defined in the
`pda-core-engine` project. The new project should therefore include the
`pda-core-engine` as a dependency.
-To see an implementation in action, consider the `pda-redhatpam-engine` project, which implements the Red Hat PAM engine integration. The resultant JAR file should be available in the classpath for the `entando-process-driven-plugin`, which is the project that
-is ultimately executed and exposes the Rest APIs for the frontend
-application.
+To see an example in action, consider the `pda-redhatpam-engine` project, which applies the Red Hat PAM engine as an integrated dependency. The resultant JAR file should be available in the classpath for the `entando-process-driven-plugin`, which is the project that is ultimately executed, exposing the REST APIs for the frontend components.
-One way to achieve this is by publishing the engine
-implementation to a Maven repository and adding it as a dependency to
-the `entando-process-driven-plugin` project. Below are the descriptions of
-the engine class and key interfaces in the `pda-core-engine` project that must be inherited or implemented when creating a new engine
-implementation.
+One way to achieve this is by publishing the engine implementation to a Maven repository and adding it as a dependency to the `entando-process-driven-plugin` project. Below are the descriptions of
+the engine class and key interfaces in the `pda-core-engine` project that must be inherited or applied when a new engine is created.
#### Classes
-`Engine`: represents a Business Process Management (BPM) engine and exposes the services that are available for that specific implementation. It is intended to be inherited, and the subclass should provide the implementation for each service by calling the superclass constructor with the service implementations as arguments. If any service is not supported, a null value should be passed to the corresponding constructor argument. The engine can provide implementations for service interfaces.
+`Engine`: represents a Business Process Management (BPM) engine and exposes the services that are available for that specific implementation. It is intended to be inherited, and the subclass should be provided for each service by calling the superclass constructor with its implementation as an argument. If any service is not supported, a null value should be passed to the corresponding constructor argument. The engine can also establish functionality for service interfaces.
#### Interfaces
@@ -253,9 +246,9 @@ implementation.
`TaskCommentService`: defines service methods related to task comment manipulation. It should be implemented if the task comment is supported by the engine.
-`TaskAttachmentService`: defines service methods to operate on task attachments. It should be implemented if the engine supports file attachment on the task.
+`TaskAttachmentService`: defines service methods to operate on task attachments. It should be used if the engine supports file attachments on the task.
-`TaskFormService`: defines service methods for task form operations, like retrieving the form definition and submitting a form. The Form object can be used to render a form dynamically.
+`TaskFormService`: defines service methods for task form operations, like retrieving the form definitions and submitting a form. The Form object can be used to render a form dynamically.
`TaskLifecycleService`: defines service methods related to the task lifecycle. The lifecycle operations move the task from one state to another.
@@ -263,20 +256,20 @@ implementation.
`ProcessService`: defines service methods for process definitions operations.
-`ProcessFormService`: defines service methods for process form operations, like retrieving the form definition and submitting a form. The Form object can be used to render a form dynamically.
+`ProcessFormService`: defines service methods for process form operations, like retrieving the form definitions and submitting a form. The Form object can be used to render a form dynamically.
`GroupService`: defines service methods related to groups in the BPM engine.
## Troubleshooting
-1. Reinstallation after an uninstall will not progress
-If the PDA plugin is uninstalled and then reinstalled, an issue may prevent the process due to the secret containing the connection configuration names does not get updated upon reinstallation. To prevent this issue, an upgrade of the plugin is recommended instead of uninstalling, following best practices.
+1. Reinstallation after an uninstall that will not progress
+If the PDA plugin is uninstalled and then reinstalled, an issue may stop the process due to the secret containing the connection configuration names does not get updated upon reinstallation. To prevent this issue, an upgrade of the plugin is recommended instead of uninstalling, following best practices.
If removing the plugin bundle is required, create a backup of the EntandoPlugin custom resource, `metadata.name: pn-efbd66b6-b0ceabd7-entando-pda-plugin` before removing it, and copy the list of `connectionConfigNames` to the new installation's plugin custom resource.
## Resources
### Source Code
-The source code for the Entando PDA plugin can be found on GitHub, along with our other open source examples and tutorials. Reference the component projects for instructions to build from source code:
+The source code for the Entando PDA plugin can be found on GitHub, along with our other open source examples and tutorials. Reference the component projects for instructions on how to build from source code:
-
-
diff --git a/vuepress/docs/next/tutorials/solution/sd-images/sd-cloud-hub.jpg b/vuepress/docs/next/tutorials/solution/sd-images/sd-cloud-hub.jpg
new file mode 100644
index 0000000000..bf4a9f23cc
Binary files /dev/null and b/vuepress/docs/next/tutorials/solution/sd-images/sd-cloud-hub.jpg differ
diff --git a/vuepress/docs/next/tutorials/solution/sd-images/sd-cloud-hub.png b/vuepress/docs/next/tutorials/solution/sd-images/sd-cloud-hub.png
deleted file mode 100644
index d56e2e20a1..0000000000
Binary files a/vuepress/docs/next/tutorials/solution/sd-images/sd-cloud-hub.png and /dev/null differ
diff --git a/vuepress/docs/next/tutorials/solution/sd-images/sd-homepage.jpg b/vuepress/docs/next/tutorials/solution/sd-images/sd-homepage.jpg
new file mode 100644
index 0000000000..05b8041ad5
Binary files /dev/null and b/vuepress/docs/next/tutorials/solution/sd-images/sd-homepage.jpg differ
diff --git a/vuepress/docs/next/tutorials/solution/sd-images/sd-homepage.png b/vuepress/docs/next/tutorials/solution/sd-images/sd-homepage.png
deleted file mode 100644
index 749b8fb784..0000000000
Binary files a/vuepress/docs/next/tutorials/solution/sd-images/sd-homepage.png and /dev/null differ
diff --git a/vuepress/docs/next/tutorials/solution/sd-images/sd-local-hub1.jpg b/vuepress/docs/next/tutorials/solution/sd-images/sd-local-hub1.jpg
new file mode 100644
index 0000000000..91090d4af1
Binary files /dev/null and b/vuepress/docs/next/tutorials/solution/sd-images/sd-local-hub1.jpg differ
diff --git a/vuepress/docs/next/tutorials/solution/sd-images/sd-local-hub1.png b/vuepress/docs/next/tutorials/solution/sd-images/sd-local-hub1.png
deleted file mode 100644
index 3c23bd1e06..0000000000
Binary files a/vuepress/docs/next/tutorials/solution/sd-images/sd-local-hub1.png and /dev/null differ
diff --git a/vuepress/docs/next/tutorials/solution/sd-images/sd-local-hub2.png b/vuepress/docs/next/tutorials/solution/sd-images/sd-local-hub2.png
index a94ce2b8df..93192ade24 100644
Binary files a/vuepress/docs/next/tutorials/solution/sd-images/sd-local-hub2.png and b/vuepress/docs/next/tutorials/solution/sd-images/sd-local-hub2.png differ
diff --git a/vuepress/docs/next/tutorials/solution/sd-images/sd-signup.png b/vuepress/docs/next/tutorials/solution/sd-images/sd-signup.png
index 60f317deb6..3e340852be 100644
Binary files a/vuepress/docs/next/tutorials/solution/sd-images/sd-signup.png and b/vuepress/docs/next/tutorials/solution/sd-images/sd-signup.png differ
diff --git a/vuepress/docs/v7.3/docs/curate/hub-details.md b/vuepress/docs/v7.3/docs/curate/hub-details.md
index b46e805043..1b495f1a47 100644
--- a/vuepress/docs/v7.3/docs/curate/hub-details.md
+++ b/vuepress/docs/v7.3/docs/curate/hub-details.md
@@ -42,7 +42,7 @@ Three roles are available for the Enterprise Hub UI to manage its catalog. All r
- `eh-manager`: A manager has all the capabilities of an author, but also has the job of approving bundle groups for publication.
- `eh-admin`: An admin has full access to create, update, approve, and delete bundle groups, and manage users for the entire Hub instance. An admin can create categories, organizations and private catalogs, assign users to organizations, and generate API keys for private catalogs.
- `guest`: Any user without one of the preceding roles is considered a guest in the Enterprise Hub and is given a read-only view of a public catalog. This is also true for unauthenticated users.
-To assign roles to a new Hub user, see the [Entando Hub Installation and User Guide](../../tutorials/solution/entando-hub.md#user-management)
+To assign roles to a new Hub user, see the [Entando Hub Installation and User Guide](../../tutorials/solution/entando-hub.md#using-the-enterprise-hub)
## Bundle Group Versions
Available bundle group versions can be viewed or edited from the kebab-dropdown menu of an entry as seen here:
diff --git a/vuepress/docs/v7.3/tutorials/solution/customer-portal.md b/vuepress/docs/v7.3/tutorials/solution/customer-portal.md
index ce4ed3bbe2..46bb9f434f 100644
--- a/vuepress/docs/v7.3/tutorials/solution/customer-portal.md
+++ b/vuepress/docs/v7.3/tutorials/solution/customer-portal.md
@@ -4,7 +4,7 @@ sidebarDepth: 2
# Entando Customer Portal
## Overview
-The Entando Customer Portal enables an organization to quickly provide a modern, self-service, customer-facing application for managing subscriptions. It includes a lightweight integration to Jira Service Management for access to service tickets and a role based access control (RBAC) design for granting users varying levels of access.
+The Entando Customer Portal enables an organization to quickly provide a modern, self-service, customer-facing application for managing subscriptions. It includes lightweight integration to Jira Service Management for service ticket tracking and role based access control (RBAC) for a collaborative environment.
Key Features:
@@ -28,32 +28,36 @@ This tutorial covers:
### Automatic Install via the Entando Hub
-#### Integrate the Entando Hub into your App Builder
-1. Log in to your `App Builder` and go to `Hub` → `Select Registry`
-2. Choose `Entando Hub` if it has been configured, otherwise:
+#### A. Integrate the Entando Hub into your App Builder
+1. Log in to your App Builder and go to `Hub` → `Select Registry`
+2. Select `Entando Cloud Hub` if it has been configured, otherwise:
1. Choose `New Registry`
- 2. In the pop-up window, enter `Entando Hub` and `https://auth.entando.com/entando-hub-api/appbuilder/api` for the URL, then `Save`
- 3. Click on the Hub in the Registry
+ 2. In the pop-up window, enter the following:
+ -Name: `Entando Cloud Hub`
+ -URL: `https://auth.entando.com/entando-hub-api/appbuilder/api`
+ then click `Save`
+ 3. Click on the Cloud Hub in the Registry
-#### Install the Customer Portal
-From the Hub Catalog, `Deploy` and `Install` the Customer Portal application first, then the content bundle
+#### B. Install the Customer Portal
+1. From the Hub Catalog, click the `Customer Portal Application Bundle`, and `Deploy` and `Install` it in the pop-up window.
+2. Repeat for the `Content Bundle`. The order is important because the Content Bundle cannot be installed without the Application Bundle.
-#### Assign Roles to Configure the Service
+#### C. Assign Roles to Configure the Service
1. [Log in to your Keycloak instance](../../docs/consume/identity-management.md#logging-into-your-keycloak-instance) as an admin
2. Give at least one user the ability to manage the Customer Portal:
- - Assign the user the `cp-admin` role for the `pn-a71d68dd-166dc0f4-entandodemo-customerportal-server` client.
- - See [Role Assignment in ID Management](../../docs/consume/identity-management.md#authorization) for more details.
+ - Assign the user the `cp-admin` role for the `pn-a71d68dd-166dc0f4-entandodemo-customerportal-server` client. (See [Role Assignment in ID Management](../../docs/consume/identity-management.md#authorization) for more details.)
- Assign the user the `view-users` role for the `realm-management` client. This role is necessary when assigning users to a Customer Portal project.
-#### Navigate to Your Customer Portal
-1. From the sidebar, go to `Page` → `Management`
-2. Find the `Customer Portal` folder
-3. From the `Actions` pull-down menu, go to `View Published Page`
+#### D. Navigate to Your Customer Portal
+1. From the App Builder sidebar, go to `Page` → `Management`.
+2. Find the `Customer Portal` folder.
+3. From the corresponding `Actions` drop-down menu, go to `View Published Page`.
+You can set this as your homepage by going to `Page` → `Settings`, and choosing Customer Portal from the Homepage pull-down options.

### Manual Install
-1. To install the Customer Portal manually, run the following commands:
+1. To install the Customer Portal manually, run the following commands in this order:
``` bash
ent ecr deploy --repo="https://github.com/entando-samples/customerportal-application-bundle.git"
@@ -64,63 +68,61 @@ ent ecr deploy --repo="https://github.com/entando-samples/customerportal-content
```
2. Log in to the App Builder
-3. Go to the `Hub` in the left sidebar to view the two Customer Portal bundles. `Install` the `customerportal-application-bundle` first, then the `customerportal-content-bundle`.
+3. Go to the `Hub` from the left sidebar. The bundles should be displayed in the Local Hub as `Deployed`. Click the `customerportal-application-bundle` and then `Install`. Repeat for the `customerportal-content-bundle`.
-4. To navigate to your Customer Portal:
+4. Navigate to your Customer Portal:
1. From the sidebar, go to `Page` → `Management`
2. Find the `Customer Portal` folder
3. From the `Actions` pull-down menu, go to `View Published Page`
## Configuration
### Administrators
-In order to configure the Customer Portal and its users, the administrator needs Jira Service Management and Entando Identity Management System credentials. The admin can then connect the Customer Portal to Jira and customize its features.
+To configure the Customer Portal and its users, the administrator needs Jira Service Management and Entando Identity Management System credentials. The admin can then connect the Customer Portal to Jira and customize its features.
->Note: The built-in mapper for email must be enabled on the server client so that user accounts can be retrieved from Jira and new tickets can use that account information.
+::: tip
+The built-in mapper for email must be enabled on the server client so that user accounts can be retrieved from Jira and service tickets can use that account information.
+:::
### Jira Service Management
-Users who need access to the Customer Portal, beyond subscription and project information, must have a Jira Service Management account. The administrator utilizes Jira Service Management to create users and projects, define the organization, and configure the service ticket system.
+Users who need access to the Customer Portal, beyond subscription and project information, must also have a Jira Service Management account. The administrator utilizes Jira Service Management to create users and projects, define the organization, and configure the service ticket system.
::: tip
-The password for Jira Service Management must be an [API token generated by Jira](https://id.atlassian.com/manage-profile/security/api-tokens). For more information, go to [Manange API tokens at Atlassian Support](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/).
+The password for the Ticketing System Connection is requested by the Customer Portal administrator and must be an [API token generated by Jira](https://id.atlassian.com/manage-profile/security/api-tokens). For more information, go to [Manange API tokens at Atlassian Support](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/).
:::
-The JIRA Service Management REST API should follow the pattern https://YOUR-JIRA-SERVICE-MANAGEMENT-URL/rest/api/latest/. For reference, see [Jira Service Management Cloud REST APIs](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/).
+The Jira Service Management REST API should follow the pattern https://YOUR-JIRA-SERVICE-MANAGEMENT-URL/rest/api/latest/. For reference, see [Jira Service Management Cloud REST APIs](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/).
-#### Add Organizations and Projects in Jira:
+#### A. Add Organizations and Projects in Jira:
1. Go to Customers
-2. Add organizations and projects as needed
-3. Click on the name of each added organization to retrieve its ID from the URL. This is required to [create](#create-a-project) and [assign](#assign-a-project) projects in the Customer Portal
- - e.g. example.com/jira/servicedesk/projects/ECS/organization/3 → the Organization ID is “3”
+2. Add organizations and projects by completing the required fields
+3. Click on the name of each added organization to retrieve its ID from the URL. This is required to [create](#b-create-a-project) and [assign](#c-assign-a-project) projects in the Customer Portal
+ - e.g. example.com/jira/servicedesk/projects/ECS/organization/3 → the organization ID is “3”
### Configure the Customer Portal
The Customer Portal must be configured for a specific Jira Service Management instance. The `CP Admin Config` page is where you establish the Jira connection, manage product versions, define subscription levels, and customize ticket types.
-To access the `CP Admin Config` page, you must be given the `cp-admin` role in the [Entando Identity Management System](#entando-identity-management-system) as [described above](#assign-roles-to-configure-the-service).
+To access the `CP Admin Config` page, you must be given the `cp-admin` role in the [Entando Identity Management System](#entando-identity-management-system) as [described above](#c-assign-roles-to-configure-the-service).
-#### View the `CP Admin Config` Page
-1. In the App Builder, go to `Pages` and select `Management`
-2. Open the Customer Portal folder and find `CP Admin Config`
-3. From the `Action` drop-down menu on the right, go to `View Published Page`
+#### A. View the `CP Admin Config` Page
+1. Go to `Pages` → `Management`
+2. Expand the Customer Portal folder and find `CP Admin Config`
+3. From the corresponding `Action` drop-down, go to `View Published Page`

-Once the Ticketing System Connection is set up with Jira and the correct URL, default parameters such as product versions and ticket types will be displayed. Open each section with the down arrow to add and edit the fields as needed.
-
-::: tip
-The password for the Ticketing System Connection is requested by the Customer Portal administrator and must be an [API token generated by Jira](https://id.atlassian.com/manage-profile/security/api-tokens). For more information, go to [Manange API tokens at Atlassian Support](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/).
-:::
+Once the Ticketing System Connection is set up with Jira and the correct URL, default parameters such as product versions and ticket types will be displayed. Expand each section with the down arrow to add and edit the fields as needed.
### Entando Identity Management System
Log in to the Entando Identity Management System to arrive at the landing page shown here. Use the left navigation bar to manage users, groups, and roles. Using the RBAC model, define what access users have by the roles and groups they are assigned. Some important information is noted below.

-#### The Realm Setting
+#### A. The Realm Setting
The `Realm` is a set of users, credentials, roles, and groups. A user belongs to and logs in to a `Realm`.
-#### Default Roles
+#### B. Default Roles
You can use the default roles by clicking on `Client Roles` and choosing `entandodemo-customerportal-server`. Access for each role is defined as follows:
* `cp-customer`: Assigned directly to specific projects of a single customer
@@ -128,10 +130,10 @@ You can use the default roles by clicking on `Client Roles` and choosing `entand
* `cp-support`: Read only view of all customer projects
* `cp-admin`: Admin access to the Customer Portal
-#### Create New User
+#### C. Create New User
1. From the sidebar, go to `Users`
2. Click `Add User` on the right
-3. Complete the form as needed, but note the requirements for these fields:
+3. Complete the form as needed, but these fields are required:
- `Username`: A unique name
- `Email`: Must use the same address used in Jira
- `User Enabled`: Set to On
@@ -141,8 +143,8 @@ You can use the default roles by clicking on `Client Roles` and choosing `entand
2. Under `Credential Reset`, go to `Reset Actions` → `Update Password`
3. Click `Send Email`
-#### Assign Roles to Users
-1. Click on the `Role Mapping` tab
+#### D. Assign Roles to Users
+1. Click the `Role Mapping` tab on top
2. Select the appropriate role(s) from `Available Roles` and assign them to a user by clicking `Add Selected`:
* To assign default roles, choose `entandodemo-customerportal-server` from the `Client Roles` pull-down
* To manage users in the Customer Portal, a user will need the `view-users` role under `Client Roles` → `realm-management`
@@ -150,7 +152,7 @@ You can use the default roles by clicking on `Client Roles` and choosing `entand

-#### Assign Roles to Groups
+#### E. Assign Roles to Groups
Under `Groups`, assign roles to groups as needed. Multiple roles can be assigned to a single group.
## Managing the Customer Portal
@@ -159,7 +161,7 @@ As administrator for the Customer Portal, you can create and manage users, custo

-#### Create a Customer or Partner
+#### A. Create a Customer or Partner
The processes to create customers and partners are similar. Below are the steps to add a `Customer`. A `Partner` is added the same way.
1. Click `Add a Customer`
2. Fill in the customer details. Note:
@@ -168,7 +170,7 @@ The processes to create customers and partners are similar. Below are the steps

-#### Create a Project
+#### B. Create a Project
1. Go to the Customer Portal landing page
2. Click on a customer to see the associated project list
@@ -177,7 +179,7 @@ The processes to create customers and partners are similar. Below are the steps
5. Provide the [Organization ID](#jira-service-management) retrieved from Jira. Each project must have a unique Organization ID.
6. Click `Save`
-#### Assign a Project
+#### C. Assign a Project
1. Go to the Customer Portal landing page
2. Click on a customer to see the associated project list
@@ -185,7 +187,7 @@ The processes to create customers and partners are similar. Below are the steps
4. Select the user for the `Project`
5. Click `Submit`
-#### Manage Partners and Subscriptions
+#### D. Manage Partners and Subscriptions
Use the `Action` drop-down menu to manage Partners or request and manage subscriptions.
## Using the Customer Portal
diff --git a/vuepress/docs/v7.3/tutorials/solution/entando-hub.md b/vuepress/docs/v7.3/tutorials/solution/entando-hub.md
index 50b1fe923c..e4712d3287 100644
--- a/vuepress/docs/v7.3/tutorials/solution/entando-hub.md
+++ b/vuepress/docs/v7.3/tutorials/solution/entando-hub.md
@@ -4,39 +4,46 @@ sidebarDepth: 2
# Entando Hub Installation and User Guide
-An Entando Hub enables teams to share components across their organization and between Entando Applications. It can be installed in any Entando 7+ instance and includes API-level integration with the App Builder.
+An Entando Hub enables teams to share components across their organization to build composable applications with ease and speed. This catalog management software bundle can be installed in any Entando 7+ instance and includes API-level integration with the App Builder.
+
+The Entando Platform comes built in with a local Hub for independent development, but additional registries can be connected, including an enterprise Hub where you can share and collaborate on modular components, through a private or public catalog. This tutorial describes the steps to install and access the enterprise version of the Entando Hub.
-This tutorial describes the steps to install and utilize an enterprise Entando Hub:
1. [Installation](#installation)
2. [Configuration](#configuration)
-3. [Using an Enterprise Hub](#using-an-enterprise-hub)
+3. [Using an Enterprise Hub](#using-the-enterprise-hub)
4. [Resources](#resources)
-For details on Hub features, definitions, user roles, component status and versioning process, see the [Entando Hub information page](../../docs/curate/hub-details.md).
+For details on Hub features, definitions, and other details, see the [Entando Hub information page](../../docs/curate/hub-details.md).
## Installation
-An enterprise Entando Hub is installed with two Entando Bundles. One bundle contains the micro frontends and microservices, which needs to be installed first, while the second sets up the initial content and pages for the Hub UI.
+An enterprise Entando Hub is installed with two Entando Bundles. One bundle contains the micro frontends and microservices, and should be installed first, while the second sets up the UI content and pages.
### Prerequisites
-- An Entando Application on any Kubernetes provider. Follow the [tutorials](../#operations) appropriate to your environment to install the Entando Platform.
+- An Entando Application on any Kubernetes provider. Follow the [tutorial](../#operations) appropriate for your environment to install the Platform.
- The [ent command line tool](../../docs/getting-started/entando-cli.md), installed and connected to your Kubernetes instance.
### Install the Hub from the Entando Cloud Hub
-Add the Entando Cloud Hub as a registry, directly accessible at any time from your App Builder:
+Connect the Entando Cloud Hub to your Local Hub so you can access the Hub bundles directly from your App Builder:
1. Log in to your App Builder
-2. Go to `Hub` → `Select Registry`
+2. Go to `Hub` from the sidebar and click `Select Registry`
3. Choose `New Registry`
-4. In the pop-up window, enter `Entando Cloud Hub` and `https://auth.entando.com/entando-hub-api/appbuilder/api` for the URL. Click `Save`
-5. Select the Cloud Hub in the Registry and find the Entando Hub bundles
-6. Deploy and install `entando-hub-application` bundle by clicking `UNDEPLOYED` and then following the instructions in the pop-up window. Note that you can choose the version by clicking the down arrow in the install button. The `application` bundle must be installed first because it provides the `entando-hub-content` with the necessary frontend components.
-7. Repeat the steps for `entando-hub-content` bundle. These bundles will now appear in your Local Hub. Continue with the [Configuration steps](#configuration) below.
+4. In the pop-up window, enter the following:
+ ``` bash
+ Name: Entando Cloud Hub
+ URL: https://auth.entando.com/entando-hub-api/appbuilder/api
+ ```
+The API Key is required only for private enterprise Hubs. Click `Save.
+
+5. Select the Cloud Hub in the Registry drop-down and find the Entando Hub bundles
+6. Deploy and install `entando-hub-application` bundle by clicking it and following the instructions in the pop-up window. Note that you can choose the version by clicking the down arrow in the install button. The `application` bundle must be installed first because it sets up the necessary frontend components for the `entando-hub-content` bundle.
+7. Repeat the steps for `entando-hub-content`. They should now appear in your Local Hub. Continue with the [Configuration steps](#configuration) below.
### Manual Installation Steps
-1. Apply the custom resource definitions for the Hub component bundles:
+1. Apply the custom resource definitions in this order to deploy the Hub bundles:
```
ent bundle generate-cr -t prod --image=docker://registry.hub.docker.com/entando/entando-hub-application | kubectl apply -f -
@@ -47,12 +54,12 @@ ent bundle generate-cr -t prod --image=docker://registry.hub.docker.com/entando/
2. Log into your App Builder instance.
-3. Select `Hub` from the menu on the left. The Hub bundles will be visible in the Local Hub as shown:
+3. Select `Hub` from the left menu. The Hub bundles are listed as Deployed in the local Hub catalog:
-
+
-4. Click each bundle icon and `Install` the bundle, where order of installation is important. The `entando-hub-application` bundle must be installed first because it provides the `entando-hub-content` bundle with MFEs. It may take several minutes to download the Docker images for the microservices and install the related assets.
->For multi-bundle components or PBCs, you need to follow the same order of installation for upgrades. For uninstalling the group, follow the reverse order of installation.
+4. Click each bundle icon and `Install` the bundle, starting with the `entando-hub-application`. Again the order of installation is crucial. It may take several minutes to download the Docker images for the microservices and install the related assets.
+>For multi-bundle components or PBCs, you need to follow the same order of installation for upgrades. For uninstalling the group bundles, follow the reverse order of installation.
## Configuration
1. Set up permissions to configure the service for the Hub administrator:
@@ -63,75 +70,77 @@ ent bundle generate-cr -t prod --image=docker://registry.hub.docker.com/entando/
2. Click the `Service Account Roles` tab at the top of the page and select `realm-management` from the `Client Roles` field.
3. Choose `realm-admin` from `Available Roles` and click `Add selected`. It should now appear as an `Assigned Role`.
-2. Access your enterprise Hub from the App Builder by navigating to `Pages → Management`. Find `Entando Hub` in the page tree, and click `View Published Page` from its Actions.
+2. To access your enterprise Hub:
+ - Navigate to `Pages` → `Management` in the App Builder
+ - Find `Entando Hub` in the page tree, and click `View Published Page` from its `Actions` drop-down options
-## Using an Enterprise Hub
+## Using the Enterprise Hub
### The Hub UI
-The enterprise Entando Hub UI is where users, entries, and catalogs are managed. Private and public catalogs can also be configured here.
-* Administrators can create and manage users, categories, and organizations.
-* Authors and managers have varying [levels of access](../../docs/curate/hub-details.md#roles) to create and manage entries, called Bundle Groups.
-* Each catalog can be [connected directly to an App Builder](#add-a-catalog-registry) instance for easy access.
+The enterprise Entando Hub provides a UI where users, entries, and catalogs are managed. Private and public catalogs are also configured there.
+* Administrators create and manage users, categories, and organizations.
+* Authors and managers create and manage the components organized there called Bundle Groups. They are assigned varying [levels of access](../../docs/curate/hub-details.md#roles) to perform their tasks.
+* Public or private catalogs can be configured, both [directly accessible from the App Builder](#add-a-catalog-registry).

-### User Management
+### Create Users
Only a Hub administrator has the authorization to create and manage users.
-1. Log into your Keycloak admin console
-2. Go to the `Users` section from the left navigation bar and add a new user. Enter the relevant identity information.
-3. Once saved, go to the `Role Mapping` tab and assign the correct role under `Client Roles` `pn-152edaba-0a2ba8fb-entando-entando-hub-catalog-ms-server`
+1. Log in to your Keycloak admin console.
+2. To create a new user, go to `Users` from the left sidebar and click `Add User`. Enter the relevant identity information. `Save`
+3. Go to the `Role Mapping` tab and assign these roles for `Client Roles` `pn-152edaba-0a2ba8fb-entando-entando-hub-catalog-ms-server`:
* for an author, assign `eh-author`
* for a manager, assign `eh-manager`
[See role definitions](../../docs/curate/hub-details.md#roles)
4. Log in to the Hub UI as an admin
5. Go to `User Management` and click `Add User`
-6. Choose the desired user and select an organization from the drop-down list. If the organization is not available, go to Organization Management to add it. **Note:** the admin user needs to belong to an organization as well, especially for private catalogs that require an API key.
-
+6. Choose the desired user and select an organization from the drop-down list. If the organization is not available, go to Organization Management to add it. **Note:** the administrator needs to belong to the same organization(s) as well, especially for private catalogs that require an API key.
### Create New Entries/Bundle Groups
-Click the `Add +` button at the top of the Hub UI home page to create a new [Bundle Group](../../docs/curate/hub-details.md#bundle-group-definitions). In the pop-up window, enter the details for the entry.
+At the top of the Hub UI, click the `Add +` button to create a new [Bundle Group](../../docs/curate/hub-details.md#bundle-group-definitions). This is what a component entry is called on Entando. In the pop-up window, enter the details for the entry.
-
+
-1. Upload a file for the thumbnail of the Bundle Group.
-2. Fill in the documentation address, version and organization as needed.
-3. Add one or more bundle URIs using the `Add +` button next to the field. For multi-bundle entries, it is recommended that the URIs be entered in the order they should be installed so they will be listed in that order in the Hub.
+1. Upload a thumbnail to represent the Bundle Group.
+2. Enter the documentation address, version and organization name (e.g., a team or business unit) as required.
+3. Add one or more bundle URI(s) using the `Add +` button beside the field. For multi-bundle entries, it is recommended that the URIs be entered in the order they should be installed so they will be listed in that order in the Hub.
>Should a multi-bundle entry need to be uninstalled, bundles will need to be removed in the reverse order so dependencies can be cleared without issue.
-4. Check the `Display Contact Us button` box and enter the `Contact URL` to gather more information from the viewer/visitor and manage access to the entry. Typically, the contact URL points to a web form on the owner's web site with a request for access.
+4. Check the `Display Contact Us button` and enter the `Contact URL` to gather more information from the visitor and manage access to the Bundle Group. Typically the contact URL points to a request form on the owner's web site.
Find more information on [Bundle Group publishing status](../../docs/curate/hub-details.md#bundle-group-status) and [versioning rules](../../docs/curate/hub-details.md#bundle-group-versions).
### Create a Private Catalog
-A private catalog can be configured in the Hub UI when creating a new organization. There can be many organizations in a single Hub instance, but each organization is allowed one private catalog. Only the Hub admin can create an organization, and provision a private catalog for it.
+A private catalog can be configured when creating a new organization. There can be many organizations in a single Hub instance, but each organization is allowed one private catalog. Only the Hub admin can create an organization and provision a private catalog for it.
1. Go to `Organization Management` from the top menu.
-2. Click `Add Organization +`, enter the relevant information in the pop-up window, and click `Save`.
-3. The new organization will appear in the current list. Click on the kebab menu on the right and select `Create Private Catalog`.
-A key icon will appear next to the private catalog. To go directly to this catalog, use the link under the same kebab menu.
+2. Click `Add Organization +`, enter the required information in the pop-up window, and click `Save`.
+3. The new organization will appear in the current list. Click the kebab menu to the right and select `Create Private Catalog`.
+A key icon appears next to the private catalog to confirm it. To go directly to this catalog, use the link in the same menu.
### Generate an API Key
-API access to private catalogs requires the use of an API key instead of user credentials. When connecting a registry from the App Builder, the API key is required to configure a private catalog.
-1. API Keys are attached to a specific user account so log in as a user assigned to the organization of the private catalog.
-2. From the Hub UI homepage, click on the gear icon right of the `Add +` button, and select `API Key Management`.
-3. Click `Generate API Key`, enter a name, and confirm with the blue generate button. Save the key for future reference.
+API access to private catalogs requires the use of an API key instead of user credentials. When configuring access to the private registry from the App Builder, the API key is required.
+
+1. API Keys are attached to a specific user account so log in as a user assigned to the organization connected to the private catalog.
+2. From the Hub UI homepage, click on the gear icon at the top and select `API Key Management`.
+3. Click `Generate API Key`, enter a name and confirm with the blue generate button. Save the key for future reference.
-The API key is required to access the bundles and PBCs in a private Entando Hub catalog. Bundles can be initialized directly from there using the [ent bundle init command](../../docs/getting-started/ent-bundle.md#initialization) or by adding the registry in your App Builder and deploying it from that catalog as described below.
+The API key is required to share the bundles and PBCs in a private Entando Hub catalog. Bundles can be initialized directly from the catalog by using the [ent bundle init command](../../docs/getting-started/ent-bundle.md#initialization) or by adding the registry in your App Builder and deploying it from that catalog as described below.
### Add a Catalog Registry
-Any enterprise Hub instance can be accessed from the Entando App Builder of any Entando Application.
+Any enterprise Hub instance can be accessed from the Entando App Builder, with the right credentials.
-1. Go to the Hub from the left navigation bar in the App Builder and click `Select Registry`
+1. In the App Builder, go to the Hub from the left navigation bar and click `Select Registry`
2. Choose `New Registry` from the drop-down menu
-3. Enter the registry name and the API endpoint for the catalog:
- * The API endpoint is `https://YOUR-BASEURL/entando-hub-application-152edaba/entando-hub-catalog-ms/appbuilder/api` where `YOUR-BASEURL` is the hostname of your Entando Application
+3. Enter the Hub name and the API endpoint for the catalog:
+ * The API endpoint is `https://YOUR-BASEURL/entando-hub-application-152edaba/entando-hub-catalog-ms/appbuilder/api` where `YOUR-BASEURL` is the hostname of your Entando instance.
* **Private Catalog**
- For a private catalog, the URL has an added catalog ID number from the catalog's HTTP address. Go to the published catalog page from the App Builder and find the address in the browser. The number after `/catalog/` is YOUR-CATALOG-ID#.
- * The endpoint to access the catalog is `https://YOUR-BASEURL/entando-hub-application-152edaba/entando-hub-catalog-ms/appbuilder/api/?catalogId=YOUR-CATALOG-ID#`
+ For a private Hub, the URL has an added catalog ID number from its HTTP address. Go to the published Hub page from the App Builder and find the address in the browser. The number after `/catalog/` is `YOUR-CATALOG-ID#`.
+ * The URL to access the catalog is `https://YOUR-BASEURL/entando-hub-application-152edaba/entando-hub-catalog-ms/appbuilder/api/?catalogId=YOUR-CATALOG-ID#`
- **E.g.**, The catalog address: `https://quickstart.k8s-entando.org/entando-de-app/en/entando_hub.page#/catalog/1/` → `1` is YOUR-CATALOG-ID#
+ **E.g.**, If your catalog web address is `https://quickstart.k8s-entando.org/entando-de-app/en/entando_hub.page#/catalog/1/` → `1` is YOUR-CATALOG-ID#
- The URL to enter: `https://quickstart.k8s-entando.org/entando-hub-application-152edaba/entando-hub-catalog-ms/appbuilder/api?catalogId=1`
+ The URL to enter: `https://quickstart.k8s-entando.org/entando-hub-application-152edaba/entando-hub-catalog-ms/appbuilder/api/?catalogId=1`
-4. If an API key is required, ask your Hub administrator or [generate a key](#generate-an-api-key) if you have a Hub user account.
+4. If an API key is required, ask your Hub administrator or [generate a key](#generate-an-api-key) if you have a Hub user account.
## Resources
diff --git a/vuepress/docs/v7.3/tutorials/solution/hub-images/added-roles.png b/vuepress/docs/v7.3/tutorials/solution/hub-images/added-roles.png
deleted file mode 100644
index f6be8ad559..0000000000
Binary files a/vuepress/docs/v7.3/tutorials/solution/hub-images/added-roles.png and /dev/null differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/hub-images/clear-cache.png b/vuepress/docs/v7.3/tutorials/solution/hub-images/clear-cache.png
deleted file mode 100644
index 995a6f4049..0000000000
Binary files a/vuepress/docs/v7.3/tutorials/solution/hub-images/clear-cache.png and /dev/null differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/hub-images/default-start.png b/vuepress/docs/v7.3/tutorials/solution/hub-images/default-start.png
deleted file mode 100644
index 99333b4a4d..0000000000
Binary files a/vuepress/docs/v7.3/tutorials/solution/hub-images/default-start.png and /dev/null differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/hub-images/hub-home.png b/vuepress/docs/v7.3/tutorials/solution/hub-images/hub-home.png
deleted file mode 100644
index b383f021b7..0000000000
Binary files a/vuepress/docs/v7.3/tutorials/solution/hub-images/hub-home.png and /dev/null differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/hub-images/hub-roles.png b/vuepress/docs/v7.3/tutorials/solution/hub-images/hub-roles.png
deleted file mode 100644
index ec3d34cb06..0000000000
Binary files a/vuepress/docs/v7.3/tutorials/solution/hub-images/hub-roles.png and /dev/null differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/hub-images/kc-admin.png b/vuepress/docs/v7.3/tutorials/solution/hub-images/kc-admin.png
deleted file mode 100644
index ed575ba5be..0000000000
Binary files a/vuepress/docs/v7.3/tutorials/solution/hub-images/kc-admin.png and /dev/null differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/hub-images/kc-users.png b/vuepress/docs/v7.3/tutorials/solution/hub-images/kc-users.png
deleted file mode 100644
index ebe05dfba5..0000000000
Binary files a/vuepress/docs/v7.3/tutorials/solution/hub-images/kc-users.png and /dev/null differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/images/cp-admin.png b/vuepress/docs/v7.3/tutorials/solution/images/cp-admin.png
index b3b508a3ec..54fbacf53f 100644
Binary files a/vuepress/docs/v7.3/tutorials/solution/images/cp-admin.png and b/vuepress/docs/v7.3/tutorials/solution/images/cp-admin.png differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/images/cp-identity-userrole.png b/vuepress/docs/v7.3/tutorials/solution/images/cp-identity-userrole.png
index 68c50570fc..c2d54cd671 100644
Binary files a/vuepress/docs/v7.3/tutorials/solution/images/cp-identity-userrole.png and b/vuepress/docs/v7.3/tutorials/solution/images/cp-identity-userrole.png differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/images/cp-idmanagement-main.png b/vuepress/docs/v7.3/tutorials/solution/images/cp-idmanagement-main.png
index 089bcc601d..d15443038a 100644
Binary files a/vuepress/docs/v7.3/tutorials/solution/images/cp-idmanagement-main.png and b/vuepress/docs/v7.3/tutorials/solution/images/cp-idmanagement-main.png differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/install-standard-demo.md b/vuepress/docs/v7.3/tutorials/solution/install-standard-demo.md
index d35e7d0ab8..2603df5bdb 100644
--- a/vuepress/docs/v7.3/tutorials/solution/install-standard-demo.md
+++ b/vuepress/docs/v7.3/tutorials/solution/install-standard-demo.md
@@ -12,17 +12,17 @@ Bundles and the Entando Hub. The solution template includes:
- Multiple pages
- CMS content
-The goal of this exercise is to showcase how Entando Bundles can be used to:
+This exercise showcases how Entando Bundles can be used to:
- Quickly install and create functionality in an Entando Application
- Enable packaged business capabilities (PBCs)
- Allow developers to reuse full-stack operations via bundles
-Several key elements of this template are reviewed in the [Application Details section](#application-details) below.
+Several key elements of this solution package are reviewed in the [Application Details section](#application-details) below.
## Installation
-The Standard Banking Demo installs bundles containing multiple assets. Entando Bundles should contain the number and types of components necessary to satisfy business and developer objectives.
+The Standard Banking Demo installs bundles containing multiple assets. Entando Bundles should contain the number and types of components necessary to satisfy business and developer objectives, making it easier to reuse.
### Prerequisites
@@ -30,48 +30,46 @@ The Standard Banking Demo installs bundles containing multiple assets. Entando B
- The [Entando CLI](../../docs/getting-started/entando-cli.md), installed and connected to your Kubernetes cluster.
### Automatic Installation
-Install the Standard Banking Demo by integrating the Entando Cloud Hub into your App Builder:
+Install the Standard Banking Demo by accessing the Entando Cloud Hub from your App Builder:
1. **Log in to your App Builder**
2. **Go to `Hub` → `Select Registry`**
3. **Choose `Entando Hub` if it has been configured. If not:**
- 1. Choose `New Registry`
+ 1. Select `New Registry`
2. In the pop-up window, enter: \
Name: Entando Cloud Hub \
URL: https://auth.entando.com/entando-hub-api/appbuilder/api
3. Click `Save`
4. In `Select Registry`, choose `Entando Cloud Hub`
-4. **From the Hub Catalog, `Deploy` and `Install` each of the four Standard Banking Demo bundles:**
-
- ::: warning
- **The order of installation is important.** `sd-content-bundle` must be installed last, as it relies on micro frontends (MFEs) from the other bundles to set up each page. To uninstall the Banking demo, `sd-content-bundle` must be uninstalled first to resolve dependencies before other bundles can be be removed.
- :::
+4. **From the catalog, deploy and install each of the four Standard Banking Demo Bundles in this order:**
`sd-banking-bundle` \
`sd-customer-bundle` \
`sd-manage-users-bundle` \
`sd-content-bundle`
- 1. Click on the bundle thumbnail
- 2. In the pop-up window, click "Deploy"
- 3. In the same pop-up window, click "Install"
- >Note: It may take several minutes to download Linux images for the microservices and install related assets. Container initialization for the `sd-banking-ms` and `sd-customer-ms` microservices are the most time-consuming.
- 4. Close the pop-up window
- 5. Repeat steps 1-4 for each bundle
+ ::: warning
+ **The order of installation is important.** `sd-content-bundle` must be installed last, as it relies on micro frontends (MFEs) from the other bundles to set up each page. To uninstall the Banking demo, `sd-content-bundle` must be uninstalled first to resolve dependencies before other bundles can be be removed.
+ :::
- 
+ 1. Click on the `sd-banking-bundle` thumbnail
+ 1. In the pop-up window, click `Deploy` and `Install`. \
+ It may take several minutes to download the Linux images for the microservices, and install and initialize the assets.
+ 1. Close the pop-up window
+ 1. Repeat for the remaining three bundles
- ::: tip
- The four bundles should be listed in your Local Hub following the deploy and install:
+ 
+
+The four bundles should now be listed in your Local Hub for use in any application.
+
+
- 
- :::
### Manual Installation
-1. **Apply the definitions for the four bundles that comprise the Standard Banking Demo:**
+1. **Apply the definitions for the four bundles that comprise the Standard Banking Demo, in the order listed:**
```
ent ecr deploy --repo="docker://registry.hub.docker.com/entandodemo/sd-banking-bundle"
ent ecr deploy --repo="docker://registry.hub.docker.com/entandodemo/sd-customer-bundle"
@@ -89,43 +87,50 @@ Install the Standard Banking Demo by integrating the Entando Cloud Hub into your
**The order of installation is important.** `sd-content-bundle` must be installed last, as it relies on micro frontends (MFEs) from the other bundles to set up each page. To uninstall the Banking demo, `sd-content-bundle` must be uninstalled first to resolve dependencies before other bundles can be be removed.
:::
- 1. Click on the bundle entry
- 2. In the pop-up window, click "Install"
- >Note: It may take several minutes to download Linux images for the microservices and install related assets. Container initialization for the `sd-banking-ms` and `sd-customer-ms` microservices are the most time-consuming.
+ 1. Click on the `sd-banking-bundle` entry
+ 2. In the pop-up window, click "Install" \
+ It may take several minutes to download the Linux images for the microservices, and install and initialize the assets.
3. Close the pop-up window
- 4. Repeat steps 1-3 for each bundle
+ 4. Repeat steps 1-3 for the remaining three bundles
- 
+ 
::: tip
- Conflicts during the initial installation will generate an Installation Plan like the one shown below. After making your selections, click `Update All` in the upper right corner.
- 
+ Conflicts during the initial installation will generate an Installation Plan like the one shown below. After making your selections, click `Ok` in the lower right corner. You can also choose `Update All` or `Skip All` as needed.
+ 
:::
## Access the Standard Banking Demo
-Access the Standard Banking Demo via one of the following options:
+Access the Standard Banking Demo through one of the following options:
**Option 1: Make the Standard Banking Demo your default homepage**
1. Go to `App Builder` → `Pages` → `Settings`
- 2. In the drop-down menu for Home Page, select `Home / Home SD`
+ 2. In the drop-down menu for Home Page, select `Home/Home SD`
3. Click `Save`
- 
- 4. Click the home icon in the upper right corner of the App Builder to find your new homepage
+ 
+ 4. Click the home icon in the upper right corner of the App Builder to see your new homepage
**Option 2: Navigate to the Demo homepage from the App Builder page tree**
1. Go to `App Builder` → `Pages` → `Management`
2. Find `Home SD` in the page tree
3. From the `Actions` drop-down menu, go to `View Published Page`
- 
+
+ ::: tip Congratulations!
+
+ You have just installed a reusable Entando Bundle.
+ :::
+
+ 
## Application Details
-The Entando Standard Banking Demo application demonstrates a number of the major features of the Entando Platform:
+The Entando Standard Banking application demonstrates a number of major features of the Entando Platform:
+* Modular and Composable components architecture
* Keycloak integration for role based access controls
-* React and Angular micro frontends that coexist on the same dashboard
+* React and Angular micro frontends that coexist in the same application
* Micro frontend communication techniques
* Spring Boot Microservices
* Entando Content Management
@@ -136,23 +141,23 @@ The application includes six micro frontends (MFEs) showcasing complementary fea
#### 1. Card MFE
-
+
-- The Card MFE is a React micro frontend located on the My Dashboard page.
+- This is a React MFE found on the My Dashboard page.
- It makes an API call to the banking microservice to fetch a numeric result dependent on the current card selection. The displayed value updates with changes to the card configuration.
- It is authorization-aware and passes the bearer token to the microservice. If an unauthenticated user renders the dashboard page, the widget displays an error message.
- This MFE emits events that are consumed by the Transaction Table widget.
#### 2. Card NG MFE
-
+
-- The Card NG MFE is an Angular widget that is similar to the Card widget above, except for the choice of frontend technology.
+- This is an Angular widget that is similar to the Card widget above, except for the choice of frontend technology.
- It communicates with the Transaction Table widget, which is built with React.
#### 3. Manage Users MFE
-- The Manage Users MFE makes an API call to Keycloak to fetch user information.
+- This MFE makes an API call to Keycloak to fetch user information.
- It is visible from the username drop-down menu when the user is logged in to the app.
- By default, application users are not granted Keycloak user management privileges.
- To use Keycloak to apply role based access controls for an MFE:
@@ -161,37 +166,37 @@ The application includes six micro frontends (MFEs) showcasing complementary fea
- See the [Entando Identity Management System](../../docs/consume/identity-management.md) page for details.
Authorized View
-
+
Unauthorized View
-
+
#### 4. Transaction Table MFE
-- The Transaction Table MFE is a React micro frontend that consumes events from the Card MFEs.
+- This is a React micro frontend that consumes events from the Card MFEs.
- It makes an API call to the banking microservice to fetch transaction data.
-
+
#### 5. Sign Up MFE
-- The Sign Up MFE is a form widget located on the sign up page.
+- This is a form widget located on the sign up page.
- It makes an API call to the customer microservice to create a new user.
- Unauthenticated users can access this widget from any page.
-
+
#### 6. Alert Icon MFE
-- The Alert Icon MFE displays an icon on the dashboard page.
+- This MFE displays an icon on the dashboard page.
- It includes a configuration MFE for the user to select the icon's appearance and datatype.
- By default, it makes an API call to the banking microservice to fetch data.
-
+
### Configuration Micro Frontends
-When placed on a page, many of the Standard Banking Demo MFEs include configuration screens. These are visible in the App Builder at `Components` → `Micro frontends & Widgets`. To view a rendered configuration screen, place the MFE on a new page.
+Many of the Standard Banking Demo MFEs include configuration screens. These are visible in the App Builder at `Components` → `Micro frontends & Widgets`. To view a rendered configuration screen, place the MFE on a new page.
### Microservices
diff --git a/vuepress/docs/v7.3/tutorials/solution/landing-images/standard_demo2.jpg b/vuepress/docs/v7.3/tutorials/solution/landing-images/standard_demo2.jpg
new file mode 100644
index 0000000000..05b8041ad5
Binary files /dev/null and b/vuepress/docs/v7.3/tutorials/solution/landing-images/standard_demo2.jpg differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/landing-images/standard_demo2.png b/vuepress/docs/v7.3/tutorials/solution/landing-images/standard_demo2.png
deleted file mode 100644
index 997d96de8b..0000000000
Binary files a/vuepress/docs/v7.3/tutorials/solution/landing-images/standard_demo2.png and /dev/null differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/landing-page.md b/vuepress/docs/v7.3/tutorials/solution/landing-page.md
index d125e3ab87..43b4b6e33d 100644
--- a/vuepress/docs/v7.3/tutorials/solution/landing-page.md
+++ b/vuepress/docs/v7.3/tutorials/solution/landing-page.md
@@ -11,39 +11,38 @@ The Entando Application Composition Platform offers several Solution Templates t
- [**Entando Process Driven Applications Plugin**](pda-tutorial.md)
- [**Entando Standard Banking Demo**](install-standard-demo.md)
-Each open source Solution Template was built with Entando and can be used as-is, reviewed for common development practices, or leveraged as a useful starting point for a related application.
+Each open source Solution Template was built with Entando and can be used as-is, reviewed for common development practices, or leveraged as a starting point for similar applications.
-The following Solution Templates and other sets of components are available in the [public Entando Hub](https://entando.com/composable-platform/packaged-business-capabilities/) for installation in a user environment, where turnkey functionality can be customized and extended.
+These and other components are available in the [Entando Cloud Hub](https://entando.com/composable-platform/packaged-business-capabilities/) for installation in any environment, with turnkey functionality that can be customized or extended.
## Entando Customer Portal
-The [Entando Customer Portal](customer-portal.md) streamlines development of a customer-facing, self-service subscription management application. The platform integrates Keycloak role based access control and Jira Service Management as a ticket tracking system.
-
-
+The [Entando Customer Portal](customer-portal.md) is a customer-facing, self-service subscription management application. The Portal integrates Keycloak for role based access control and Jira Project Management for the service ticket tracking system.
+
## Entando Hub
-The [Entando Hub](entando-hub.md) empowers a team to share and collaborate on proprietary or Entando open source components. Capabilities, versions and metadata can be transparently analyzed, managed and published.
+The [Entando Hub](entando-hub.md) is a catalog management package that empowers teams to share and collaborate on the building blocks that make up a composable application. These modular components can be organised, developed and published on the Hub. This solution template extends the Entando Application Composition Platform (ACP) with direct connectivity between the component catalog and the App Builder, to accelerate innovation and rapidly pivot the business capabilities of your online applications.
-
+
[Entando Hub Details](../../docs/curate/hub-details.md)
-[Entando Hub Installation and User Guide](../../tutorials/solution/entando-hub.md)
+[Entando Hub Installation and User Guide](./entando-hub.md)
## Entando Process Driven Applications Plugin
The [Entando Process Driven Applications Plugin](pda-tutorial.md) provides a comprehensive and versatile automation scheme for Business Process Management. It comprises a custom UX layer, a Spring Boot Backend for Frontend microservice interface, and integration with the [Red Hat Process Automation Manager](https://www.redhat.com/en/technologies/jboss-middleware/process-automation-manager).
-
+
## Entando Standard Banking Demo
-The [Entando Standard Banking Demo](install-standard-demo.md) showcases the benefits and possibilities of a composable application built from modular components. The example banking environment integrates a transaction table, sign up form, alert icon, and summary cards to demonstrate MFE communication and capabilities. Prominent features include Keycloak role based access control, coexistence of React and Angular MFEs, and pluggable Spring Boot microservices.
+The [Entando Standard Banking Demo](install-standard-demo.md) showcases the benefits and possibilities of a composable application built from modular components. The example banking environment integrates a transaction table, sign up form, alert icon, and summary cards to demonstrate the variable components that can be built on Entando ACP. Prominent features include Keycloak role based access control, coexistence of React and Angular MFEs, and pluggable Spring Boot microservices.
-
+
::: tip
-Check out our [Concepts](../../docs/getting-started/concepts-overview) page to explore Entando's approach to composability, or visit [Getting Started](../../docs/getting-started/) to put these components and capabilities in action!
+Check out our [Concepts](../../docs/getting-started/concepts-overview) page to explore Entando's approach to composability, or visit [Getting Started](../../docs/getting-started/) to put these capabilities into action!
:::
diff --git a/vuepress/docs/v7.3/tutorials/solution/pda-architecture.md b/vuepress/docs/v7.3/tutorials/solution/pda-architecture.md
index ad5e4b94be..d8e5b37fcc 100644
--- a/vuepress/docs/v7.3/tutorials/solution/pda-architecture.md
+++ b/vuepress/docs/v7.3/tutorials/solution/pda-architecture.md
@@ -1,7 +1,6 @@
# PDA Architecture
-This document describes the components that comprise the Process Driven Applications (PDA) plugin architecture with respect to
-deployment, as well as how they interact with each other.
+This document describes the components that comprise the Process Driven Applications (PDA) plugin architecture in deployment and how they interact with each other.
The image below shows the high level components.
@@ -15,36 +14,33 @@ components the user interacts with. These components are written in React and fe
The MFEs also make calls to the Entando Core API to retrieve the
settings required for the UI configuration. These components are available to assist with page creation after the PDA plugin bundle is installed.
-The source code for this component:
+Source code:
## PDA API
-The PDA API is a Spring Boot application that communicates with the BPM engine, and BPM engine data is made available in a Rest API. Subject to deployment configuration, the PDA API interacts with Keycloak to validate the token, retrieving the connection and sensitive data. Instead of calling specific engine classes directly, the application calls the abstractions defined in the PDA Core library.
+The PDA API is a Spring Boot application that communicates with the Business Process Management (BPM) engine, with the engine data made available through a REST API. Subject to the deployment configuration, the PDA API interacts with Keycloak to validate the token, retrieving the connection and sensitive data. Instead of calling specific engine classes directly, the application calls the abstraction defined in the PDA Core library.
-The engine implementation is determined at runtime based on the connection details provided. It is important to note that the PDA API does not have a database and is therefore stateless. All data available in the API are retrieved
-from the BPM engine. After bundle installation, the API is deployed as a
-microservice in the Kubernetes infrastructure. An Ingress is also created to
-make the API available to the MFEs, as described by the Entando Plugin custom
-resource.
+The engine implementation is determined at runtime based on the connection details provided. It is important to note that the PDA API does not have a database and is therefore stateless. All data available to it are retrieved from the BPM engine. After bundle installation, it is deployed as a microservice in the Kubernetes infrastructure. An ingress is also created to
+make it available to the MFEs, as described by the Entando Plugin custom resource.
-The source code for this component:
+Source code:
## PDA Core
-The PDA Core is the library that defines the interface and abstraction implementations that interact with specific BPM engines. It allows multiple engine implementations to exist simultaneously.
+The PDA Core is the library that defines the interface and abstraction implementations for interacting with specific BPM engines. It allows multiple engine implementations to exist simultaneously.
-The source code for this component:
+Source code:
## PAM Impl
The PAM Impl is the Red Hat PAM implementation for the PDA Core library. If the connection maps
to a PAM engine, these are the classes that are executed when the
-PDA API requests engine operations. This implementation communicates with
+PDA API requests engine operations. This component communicates with
the Kie Server, which executes the defined process operations.
-The source code for this component:
+Source code:
diff --git a/vuepress/docs/v7.3/tutorials/solution/pda-images/task-list.png b/vuepress/docs/v7.3/tutorials/solution/pda-images/task-list.png
index 0ef18de0f6..86048f8ad5 100644
Binary files a/vuepress/docs/v7.3/tutorials/solution/pda-images/task-list.png and b/vuepress/docs/v7.3/tutorials/solution/pda-images/task-list.png differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/pda-technical-guide.md b/vuepress/docs/v7.3/tutorials/solution/pda-technical-guide.md
index 120a73bd5d..5d5a12314b 100644
--- a/vuepress/docs/v7.3/tutorials/solution/pda-technical-guide.md
+++ b/vuepress/docs/v7.3/tutorials/solution/pda-technical-guide.md
@@ -9,7 +9,7 @@ This page explores PDA plugin structure and functionality in greater detail. The
## Task Forms
-Widgets employ JSON schema to dynamically create any forms they contain. The JSON schemas are converted into React components using the `react-jsonshema-form` library. Entando's initial implementation utilizes Material UI components derived from the Material UI theme library (`rjsf-material-ui`) as a baseline, and includes templates, widgets and fields (`react-jsonshema-form` terms for forms components) that are specific to Entando.
+Widgets employ JSON Schema to dynamically create any forms they contain. JSON schemas are converted into React components using the `react-jsonshema-form` library. Entando's initial implementation utilizes Material UI components derived from the Material UI theme library (`rjsf-material-ui`) as a baseline, and includes templates, widgets and fields (`react-jsonshema-form` terms for forms components) that are specific to Entando.
This section will introduce the basic form configuration, but if you would like to learn more, please refer to the `react-jsonshema-form` [documentation](https://react-jsonschema-form.readthedocs.io/en/latest/).
@@ -38,17 +38,17 @@ The themed JSON Form is created using the `withTheme()` method from the `react-j
export default JSONForm;
-A form schema provides the JSON definition of the form’s structure and is mandatory for a JSON Form to function. Users can supply form data via the `formData` variable, which should follow the structure of JSON schema. UI schema can be supplied via the `uiSchema` variable, which allows users to customize the form’s UI (e.g. components, rules, types).
+A form schema provides the JSON definition of the form’s structure and is mandatory for a JSON Form to function. Users can supply form data via the `formData` variable, which should follow JSON Schema structure. UI schema can be supplied via the `uiSchema` variable, which allows users to customize the form’s UI (components, rules, types, etc).
-You can test the JSON schema, UI schema and form data in the `react-jsonschema-form` sandbox environment. Entando templates, widgets, and fields allow customization of form layout using Grid components. The size parameter in the UI schema’s `ui:options` object specifies the fill area of a field or subform.
+You can test the JSON Schema blueprint, UI schema and form data in the `react-jsonschema-form` sandbox environment. Entando templates, widgets, and fields allow customization of form layout using grid components. The size parameter in the UI schema’s `ui:options` object specifies the fill area of a field or subform.
-Size refers to the Material UI’s grid column widths (see the Material UI documentation), where the area the form can occupy is divided into 12 columns. A value of 12 (the default value if size is not provided) means the field or subform should take up all 12 columns. If two adjacent fields have size values of 8 and 4, respectively, they will share one row and the first field will be twice as wide as the second.
+Size refers to the Material UI’s grid column widths (see the [Material UI documentation](https://mui.com/material-ui/react-grid2/?srsltid=AfmBOooQau1xI3vb4gvlq9PkW82YfdZbZfqbqY1pMoOkGCepu-2DbSt9)), where the area the form occupies is divided into 12 columns. A value of 12 (the default value) means the field or subform should take up all 12 columns. If two adjacent fields have size values of 8 and 4, respectively, they will share one row and the first field will be twice as wide as the second.
-In addition, the user can provide an innerSize parameter to scale the input fields inside the columns. This helps with formatting when a user wants to make nonuniform adjustments to sizing.
-
-Multicolumn layout can also be achieved via `generateColumnedOFT` (`columnSize`) functionality, which assigns the default `columnSize` to the created form. The function `generateColumnedOFT` returns an `ObjectFieldTemplate` that is used as a template for all object fields (fields that contain properties).
+In addition, the user can provide an innerSize parameter to scale the input fields inside the columns. This is useful when formatting non-uniform sizing within a column.
+
+A multi-column layout can also be achieved via the `generateColumnedOFT` (`columnSize`) functionality, which assigns the default `columnSize` to the created form. The function `generateColumnedOFT` returns an `ObjectFieldTemplate` that is used as a framework for all object fields (fields that contain properties).
-To explain the mapping between JSON schema and UI schema let's define an example
+To explain the mapping between JSON Schema and UI schema, let's define an example
schema:
{
@@ -117,20 +117,18 @@ schema:
}
}
-From this JSON (you can copy & paste it into the `react-jsonschema-form`
-sandbox) we can see that there is a main form with a title “Mortgage
+In this JSON (you can copy & paste it into the `react-jsonschema-form`
+sandbox), there is a main form with the title “Mortgage
Application Form." The root form `Mortgage Application Form` has two
properties: one is a subform called `Application` and the other is a
-checkbox field (field ID is `inlimit`).
+checkbox field with ID `inlimit`.
-The `Application` subform contains two fields: `Mortgage Amount` with field ID `mortgageamount` and `Down Payment` with field ID `downpayment`. It also contains two subforms: `Applicant` with field ID `applicant` and `Property` with field ID `property`.
+The `Application` subform contains two fields: `Mortgage Amount` with field ID `mortgageamount`, and `Down Payment` with ID `downpayment`. It also contains two subforms: `Applicant` with ID `applicant` and `Property` with ID `property`.
-The `Applicant` subform contains two fields: `Name` with field ID `name` and `Annual Income` with field ID `annualincome`. The `Property` subform also contains two fields: `Age of property` with field ID `age` and `Address of property` with field ID `address`.
+The `Applicant` subform contains two fields: `Name` with field ID `name` and `Annual Income` with ID `annualincome`. The `Property` subform also contains two fields: `Age of property` with ID `age` and `Address of property` with ID `address`.
-By default (without providing UI schema), these are listed as one field per row. To use Entando’s implementation of Grid layout, users have to
-provide UI schema with details about each field. For example, if we
-would like to have a layout that looks like this (fields are marked
-`[ field name ]`):
+Without a specified UI schema, these are listed as one field per row by default. To use Entando’s implementation of a Grid layout, users have to
+provide a UI schema with details about each field. For example, to achieve a layout that looks like this (fields are marked with brackets):
+----------------------------------------------------------------------------+
| Mortgage Application Form |
@@ -146,7 +144,7 @@ would like to have a layout that looks like this (fields are marked
| | [Address of property] |
+----------------------------------------------------+-----------------------+
-To set up the UI schema, you need to use field IDs to define each field you want to customize. For example, to add options to the `Name` field, create an object tree beginning at the root: `Application` —\> `Applicant` —\> `Name` (equivalent to `Application.Applicant.Name`). The UI schema for the table layout defined above looks like this:
+To set up the UI schema, you need to use field IDs to define each field to customize. For example, to add options to the `Name` field, create an object tree beginning at the root: `Application` —\> `Applicant` —\> `Name` (equivalent to `Application.Applicant.Name`). The UI schema for the table layout defined above looks like this:
{
Application: {
@@ -187,8 +185,8 @@ To set up the UI schema, you need to use field IDs to define each field you want
},
},
};
-
-As Material UI components are used for field templates, there might be a need to pass some Material UI options into the field. This can be done by adding the `muiProps` object to `ui:options`.
+
+When using Material UI components for field templates, additional options can be passed into the object by adding `muiProps` to the `ui:options` property.
For example, if you would like to make the down payment field resizable, you can add `multiline: true` to the `muiProps` option. If you want the field to take up multiple rows by default, add the fields `rows` and `rowsMax`. The latter limits how many rows can be added until the scroll bar is shown.
@@ -208,7 +206,8 @@ For example, if you would like to make the down payment field resizable, you can
Different types of widgets can be applied by passing the type via
`ui:widget`. This property specifies the widget to use when the form
-renders a UI field. See the documentation to learn about widgets supported by the `react-jsonschema-form`.
+renders a UI field. See the [documentation](https://rjsf-team.github.io/react-jsonschema-form/docs/usage/widgets/) to learn about widgets supported by the `react-jsonschema-form`.
+
## Code Style
Refer to:
diff --git a/vuepress/docs/v7.3/tutorials/solution/pda-tutorial.md b/vuepress/docs/v7.3/tutorials/solution/pda-tutorial.md
index c3f7df528f..f5dcbafecd 100644
--- a/vuepress/docs/v7.3/tutorials/solution/pda-tutorial.md
+++ b/vuepress/docs/v7.3/tutorials/solution/pda-tutorial.md
@@ -6,12 +6,12 @@ sidebarDepth: 2
## Introduction
-The Entando Process Driven Applications (PDA) plugin is engineered to provide a rich and full-featured user experience while facilitating the management and implementation of business processes and automation. This solution template includes:
+The Entando Process Driven Applications (PDA) plugin provides a rich and full-featured user experience for the management and implementation of business process automation. This solution template includes:
-- A general purpose UX layer created from micro frontends that can be implemented for any business process or task engine. The UX layer can serve data via the included Entando integration adapter or by implementing a set of interfaces on the server side.
+- A general purpose UX layer created from micro frontends that can be implemented for any business process or task engine. It serves data through the included Entando integration adapter or via a set of interfaces on the server side.
- A Spring Boot microservice backend providing a pluggable interface for the injection of underlying processes or automation toolkits. The interfaces and steps for creating a new PDA backend implementation are described in further detail [here](./pda-technical-guide.md).
-The following tutorial installs the PDA plugin via the Local Hub and an Entando Bundle. It demonstrates the scope of process automation enabled by integrating:
+The following tutorial installs the PDA plugin via the Local Hub and an Entando Bundle. It demonstrates the process automation enabled by integrating:
- Custom Micro Frontends (MFEs)
- Backend for Frontend (BFF) microservice
@@ -21,38 +21,38 @@ Key elements of the template are reviewed in the [Application Details section](#
## Installation
-There are numerous assets installed as part of the Entando PDA plugin. Entando Bundles can include more or less components, depending on objectives. It is recommended that organizations develop guidelines for bundle sizing that fit the goals of their applications and teams.
+There are many assets installed as part of the Entando PDA bundle. Entando Bundles can include more or less components, depending on objectives. It is recommended that organizations develop guidelines for bundle sizing that fit their goals.
### Prerequisites
-- An Entando Application on any Kubernetes provider. Follow one of the [tutorials](../#operations) appropriate to your environment to install the Entando platform.
+- An Entando Application on any Kubernetes provider. Follow one of the [tutorials](../#operations) appropriate to your environment to install the Entando Platform.
- The ent command line tool, installed and connected to your Kubernetes instance.
- Red Hat PAM
### Automatic Install via the Entando Hub
-1. Log into your `App Builder` → `Hub` → `Select Registry` → choose `Entando Hub` if it has been configured.
+1. Log in to your `App Builder`. Go to `Hub` → `Select Registry` → choose `Entando Hub` if it has been configured.
1. If not, choose `New Registry`
2. In the pop-up window, enter `Entando Hub` and `https://auth.entando.com/entando-hub-api/appbuilder/api` for the URL, then `Save`
- 3. Click on the Hub in the Registry
+ 3. Select Entando Hub in the Registry
-2. From the Hub Catalog, `Deploy` and `Install` the PDA bundle. The installation may take several minutes while the application downloads the Linux image for the microservice and installs the related assets.
+2. Click the PDA bundle icon and `Deploy` and `Install` it in the pop-up window. The installation may take several minutes while the application downloads the Linux image for the microservice and installs the related assets.
3. To finish the tutorial, skip to the [Configuration Steps](#configuration) below.
### Manual Install
-1. Apply the Custom Resource Definition for the PDA plugin component bundle.
+1. Apply the Custom Resource Definition for the PDA Bundle.
```
ent ecr deploy --repo="https://github.com/entando-samples/entando-process-driven-plugin-bundle.git"
```
-2. Log into your App Builder instance.
+2. Log in to your App Builder instance.
-3. Select `Hub` from the menu on the left. Your bundles will be visible in the repository as shown in the screenshot below.
+3. Select `Hub` from the left sidebar. Your bundles will be visible in the repository as shown here.
-
+
-4. Select `Deployed` and `Install`. The installation may take several minutes while the application downloads the Linux image for the microservice and installs the related assets.
+4. Click the PDA bundle icon and `Install` it in the pop-up window. The installation may take several minutes while the application downloads the Linux image for the microservice and installs the related assets.
## Configuration
@@ -98,116 +98,114 @@ Follow the steps below to configure service permissions and connections.
- [Log in to your Keycloak instance](../../docs/consume/identity-management.md#logging-into-your-keycloak-instance) as an admin.
- Give at least one user the ability to configure and manage the PDA plugin by assigning all roles for the `pn-efbd66b6-b0ceabd7-entando-pda-plugin-server` client. See [Role Assignment in ID Management](../../docs/consume/identity-management.md#authorization) for more details.
-2. Log in to the App Builder and configure the PDA connection.
-- Go to `Pages` → `Management`, find `PDA Connections` in the page tree and select `View Published Page` from the Actions. This redirects you to the browser tab opened for PDA Connections.
-- Click on `Create new connection` in the upper right corner. The `Name*`, `Engine*` and `Timeout*` fields are prepopulated with base values.
- - The default name value `pam-demo` may be edited, but the datasource names of other widgets must match your edit. Go to `Pages` → `Management` and select `Design` from the Actions of each page below. The Actions of affected widgets will include a `Settings` option, from which you can update the `Knowledge Source` field.
+2. Log in to the App Builder and configure the PDA connection:
+- Go to `Pages` → `Management`, find `PDA Connections` in the page tree, and select `View Published Page` from `Actions`.
+- Click `Create new connection` in the upper right corner. The `Name*`, `Engine*` and `Timeout*` fields are prepopulated with default values. The default name `pam-demo` may be edited, but the datasource names of other widgets must match your settings.
+
- PDA Dashboard
- PDA Process Definition
- PDA Smart Inbox
- PDA Task Details
+ > To change the datasource, go to `Pages` → `Management` and select `Design` from the Actions menu for a page. Each component in the frames has a kebab drop-down menu to make changes. For the relevant widget, you can update the `Knowledge Source` field by selecting the `Settings` option.
- Leave `pam` as the engine name. This value is appropriate for jBPM or PAM.
- - Leave the timeout as `60000`, which is in milliseconds.
+ - Leave the timeout as `60000`msec.
- Provide your connection URL to the KIE Server rest services, e.g. 'http://my.server.net:8080/kie-server/services/rest/server'.
- Username/password should be for a jBPM or PAM service account user, e.g. 'krisv'.
-
-Go to the Smart Inbox to begin working with the PDA plugin. It can be accessed from the App Builder by navigating to `Pages → Management`, finding `PDA Smart Inbox` in the page tree and clicking `View Published Page` from its Actions.
+3. Go to the Smart Inbox to begin working with the PDA plugin:
+- Go to `Pages → Management`, find `PDA Smart Inbox` in the page tree and click `View Published Page` from its `Actions`.
## Application Details
-The Entando PDA plugin demonstrates several of the major features of the Entando platform, the configuration and capabilities of which are summarized below. For a discussion of these components in the context of deployment, see [PDA Deployment Architecture](./pda-architecture.md).
+The Entando PDA plugin demonstrates several important features of the Entando Platform summarized below. For a discussion of these components in deployment, see [PDA Deployment Architecture](./pda-architecture.md).
+
### Micro Frontends (MFEs)
-This section provides a brief description of each MFE available to the PDA plugin. Details specific to the PAM implementation of an MFE are included where appropriate. MFE behavior and datasources must be defined if the integration layer is extended to other engines or custom implementations.
-#### Task List
+This section provides a brief description of every MFE in the PDA plugin. Details specific to the PAM implementation of an MFE are included where applicable. MFE behavior and datasources must be defined if the integration layer is extended to other engines or customizations.
+
+#### A. Task List
-The Task List MFE provides the user with a list of visible tasks that are
-either assigned to or could be claimed by that user. In the default implementation, the visible tasks are limited to a
-single process instance. At configuration time, the application designer
-is given the option to select a set of columns that will be visible in
-the task list for that page.
+The Task List MFE provides the user a list of visible tasks that are
+either assigned to or could be claimed by them.
+In the default implementation, the visible tasks are limited to a single process instance.
+At configuration time, the application designer is given the option to select a set of columns that are visible in the task list for that page.
-
+![Task List in Table Format with create date, status, owner, etc.]](./pda-images/task-list.png)
-The default PAM implementation exposes the top level task fields in the task list for selection. It is possible to fetch task and process variables from the task list for rendering, but this is disabled by default to optimize performance.
+The default PAM implementation exposes the top level task fields in the list for selection. It is possible to fetch task and process variables from the list for rendering, but this is disabled by default to optimize performance.
-#### Task Details
+#### B. Task Details
-The Task Details MFE renders detailed information about a task in a read only grid. It is intended to give the end user the information necessary to process the task. See the Styling section below to customize the layout.
+The Task Details MFE renders detailed information about a task in a read only grid. It gives the end user the information necessary to process the task. See the [Styling](#styling) section below to customize the layout.
-
+
-The PAM implementation renders task variables in the task details widget.
+The PAM implementation renders task variables in the details widget.
-#### Task Comments
+#### C. Task Comments
-The Task Comments MFE enables the user to view and add the notes attached
+The Task Comments MFE enables the user to view and add notes attached
to a task.
-
+
The PAM implementation reads and publishes notes to the comments endpoint.
-#### Task Form
-
-The Task Form can be accessed by clicking on the Task Overview link found in the Task Details MFE. Its implementation renders a form specific to a task and enables
-the user to complete that form. It is a
-wrapper around a JSON schema that describes the layout, style and
-content of the form. The backend implementation provides the mapping
-to the schema and default UX layout needed to render the form. See the
-[technical documentation](./pda-technical-guide.md) for more on the JSON schema
-implementation.
+#### D. Task Form
-The PAM implementation of forms depends on the presence of a form definition for the PAM task. The Entando PAM engine implementation transforms the PAM format to the JSON schema to render the form. It also transforms the API format back to the PAM format. There are some limitations on form customization due to the format required to return data to PAM. See the Task Forms section in the technical documentation for more information.
+The Task Form can be accessed by clicking on the Task Overview link found in the Task Details MFE. It is a form specific to a task completed by the user to define the way it is displayed.
+
+A wrapper for the JSON Schema blueprint, it describes the layout, style and content of the form.
+The backend implementation provides the mapping to the schema and default UX layout needed to render the form. See the
+[technical documentation](./pda-technical-guide.md) for more on the JSON Schema implementation.
-#### Attachments
+The PAM implementation of forms relies on the presence of a form definition for the PAM task. The Entando PAM engine implementation transforms the format to JSON Schema to render the form. It also transforms the API format back to the PAM format. There are some limitations on form customization due to the format required to return the data to PAM. See the [Task Forms](pda-technical-guide.md#task-forms) section in the technical documentation for more information.
-The Attachments MFE enables the user to view and add documents attached to a task, case or process. After selecting an entry in the Smart Inbox task list, use the App Builder to add the Attachment MFE to that entry's page by navigating to `Pages → Management`; select `Design` from the `PDA Smart Inbox` actions and drag the "PDA - Task Attachments" widget into its placeholder.
+#### E. Attachments
+
+The Attachments MFE enables the user to view and add documents attached to a task, case or process. To add this capability to a page, go to `Pages` → `Management` in the App Builder, select `Design` from the desired page's Actions drop-down, and drag the "PDA - Task Attachments" widget into an empty frame.
-
+
The PAM implementation posts the documents to the PAM endpoints for storage.
-#### New Process Form
+#### F. New Process Form
-The New Process Form renders a form enabling the end user to instantiate a new business process instance. The same technology is used to generate a New Process Form and the JSON schema definition for a Task Form.
+The New Process Form MFE renders a form enabling the end user to instantiate a new business process instance. The same technology is used to generate a New Process Form and the JSON Schema definition for a Task Form.
-
+
-The PAM implementation relies on a form definition attached to the process definition. Entando transforms the PAM representation into a JSON schema form that can be rendered to the end user.
+The PAM implementation relies on a form definition attached to the process definition. Entando transforms the PAM representation into a JSON Schema form that can be rendered to the end user.
-#### Summary Cards
+#### G. Summary Cards
-The Summary Card MFEs provide a view into aggregate data for the process
+The Summary Cards MFE provides a view into the aggregate data for the process
implementation. The rendered information includes a total value, a trend
-value, and a timeframe selector. The Summary Card provides the
-the option to request rendering information. This request maps to a call in the underlying engine and provides the summarized data.
+value, and a time frame selector. The MFE provides the option to request rendering information. This request maps to a call in the underlying engine and provides the summarized data.
-
+
-The PAM implementation of the Summary Card widget relies on the PAM custom query functionality. The PAM PDA engine exposes a configuration file where the custom query can be defined. This allows user customization of the data rendered on the summary cards. The application contains a "properties" file where the user can submit a custom query for each of the cards.
+The PAM implementation of the widget relies on the PAM custom query functionality. The PAM PDA engine exposes a configuration file where the custom query can be defined. This allows the user to customize the data rendered on the summary cards. The application contains a "properties" file where the user can submit a custom query for each of the cards.
-#### Totals Over Time
+#### H. Totals Over Time
The Totals Over Time MFE provides a dual axis line/bar graph displaying
trend information about the process environment. Three summary values can be compared over a single time period.
-
+
-The PAM implementation of the Totals Over Time MFE utilizes custom queries to fetch the summary data rendered in the chart. The queries used in the implementation are defined in configuration files in the MFE and can be updated to render implementation specific data.
+The PAM implementation of this MFE utilizes custom queries to fetch the summary data rendered for the chart. The queries used in the implementation are defined in configuration files in the MFE and can be updated to render specific data.
### Process Automation Manager (PAM)
-The Entando PDA is built on Process Automation Manager, which is a business process automation engine built and maintained by Red Hat.
+The Entando PDA is built on Red Hat Process Automation Manager, a business process automation engine with the following special features.
### Backend for Frontend (BFF)
-A microservice architecture allows teams to iterate quickly and
-develop technology to scale rapidly. Backend for Frontend
-is an architecture pattern built with microservices. The key
-component of this pattern is an application connecting the frontend
-of an application with the backend. The BFF Code Pattern helps to build that component according to IBM’s best practices.
+A microservice architecture allows teams to rapidly iterate and
+develop technology to scale. Backend for Frontend
+is an architecture pattern built with microservices. The BFF is the key
+of this pattern, connecting the frontend of an application with the backend.
## Customization and Extension
@@ -221,29 +219,24 @@ For an in-depth discussion of the PDA architecture, refer to the [PDA Technical
### Styling
-The Entando PDA MFEs are styled via a Material UI theme. That theme can
+The MFEs of the Entando PDA are styled with a Material UI theme. That theme can
be downloaded and updated [here](https://github.com/entando/frontend-libraries/tree/master/packages/entando-ui).
### Implementing a New Engine or Integrating a New Task Source
-
-Implementing a new engine for Process Driven Applications means
+
+Emloying a new engine for Process Driven Applications means
creating a new Java project and implementing the interfaces defined in the
`pda-core-engine` project. The new project should therefore include the
`pda-core-engine` as a dependency.
-To see an implementation in action, consider the `pda-redhatpam-engine` project, which implements the Red Hat PAM engine integration. The resultant JAR file should be available in the classpath for the `entando-process-driven-plugin`, which is the project that
-is ultimately executed and exposes the Rest APIs for the frontend
-application.
+To see an example in action, consider the `pda-redhatpam-engine` project, which applies the Red Hat PAM engine as an integrated dependency. The resultant JAR file should be available in the classpath for the `entando-process-driven-plugin`, which is the project that is ultimately executed, exposing the REST APIs for the frontend components.
-One way to achieve this is by publishing the engine
-implementation to a Maven repository and adding it as a dependency to
-the `entando-process-driven-plugin` project. Below are the descriptions of
-the engine class and key interfaces in the `pda-core-engine` project that must be inherited or implemented when creating a new engine
-implementation.
+One way to achieve this is by publishing the engine implementation to a Maven repository and adding it as a dependency to the `entando-process-driven-plugin` project. Below are the descriptions of
+the engine class and key interfaces in the `pda-core-engine` project that must be inherited or applied when a new engine is created.
#### Classes
-`Engine`: represents a Business Process Management (BPM) engine and exposes the services that are available for that specific implementation. It is intended to be inherited, and the subclass should provide the implementation for each service by calling the superclass constructor with the service implementations as arguments. If any service is not supported, a null value should be passed to the corresponding constructor argument. The engine can provide implementations for service interfaces.
+`Engine`: represents a Business Process Management (BPM) engine and exposes the services that are available for that specific implementation. It is intended to be inherited, and the subclass should be provided for each service by calling the superclass constructor with its implementation as an argument. If any service is not supported, a null value should be passed to the corresponding constructor argument. The engine can also establish functionality for service interfaces.
#### Interfaces
@@ -253,9 +246,9 @@ implementation.
`TaskCommentService`: defines service methods related to task comment manipulation. It should be implemented if the task comment is supported by the engine.
-`TaskAttachmentService`: defines service methods to operate on task attachments. It should be implemented if the engine supports file attachment on the task.
+`TaskAttachmentService`: defines service methods to operate on task attachments. It should be used if the engine supports file attachments on the task.
-`TaskFormService`: defines service methods for task form operations, like retrieving the form definition and submitting a form. The Form object can be used to render a form dynamically.
+`TaskFormService`: defines service methods for task form operations, like retrieving the form definitions and submitting a form. The Form object can be used to render a form dynamically.
`TaskLifecycleService`: defines service methods related to the task lifecycle. The lifecycle operations move the task from one state to another.
@@ -263,20 +256,20 @@ implementation.
`ProcessService`: defines service methods for process definitions operations.
-`ProcessFormService`: defines service methods for process form operations, like retrieving the form definition and submitting a form. The Form object can be used to render a form dynamically.
+`ProcessFormService`: defines service methods for process form operations, like retrieving the form definitions and submitting a form. The Form object can be used to render a form dynamically.
`GroupService`: defines service methods related to groups in the BPM engine.
## Troubleshooting
-1. Reinstallation after an uninstall will not progress
-If the PDA plugin is uninstalled and then reinstalled, an issue may prevent the process due to the secret containing the connection configuration names does not get updated upon reinstallation. To prevent this issue, an upgrade of the plugin is recommended instead of uninstalling, following best practices.
+1. Reinstallation after an uninstall that will not progress
+If the PDA plugin is uninstalled and then reinstalled, an issue may stop the process due to the secret containing the connection configuration names does not get updated upon reinstallation. To prevent this issue, an upgrade of the plugin is recommended instead of uninstalling, following best practices.
If removing the plugin bundle is required, create a backup of the EntandoPlugin custom resource, `metadata.name: pn-efbd66b6-b0ceabd7-entando-pda-plugin` before removing it, and copy the list of `connectionConfigNames` to the new installation's plugin custom resource.
## Resources
### Source Code
-The source code for the Entando PDA plugin can be found on GitHub, along with our other open source examples and tutorials. Reference the component projects for instructions to build from source code:
+The source code for the Entando PDA plugin can be found on GitHub, along with our other open source examples and tutorials. Reference the component projects for instructions on how to build from source code:
-
-
diff --git a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-cloud-hub.jpg b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-cloud-hub.jpg
new file mode 100644
index 0000000000..bf4a9f23cc
Binary files /dev/null and b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-cloud-hub.jpg differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-cloud-hub.png b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-cloud-hub.png
deleted file mode 100644
index d56e2e20a1..0000000000
Binary files a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-cloud-hub.png and /dev/null differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-homepage.jpg b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-homepage.jpg
new file mode 100644
index 0000000000..05b8041ad5
Binary files /dev/null and b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-homepage.jpg differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-homepage.png b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-homepage.png
deleted file mode 100644
index 749b8fb784..0000000000
Binary files a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-homepage.png and /dev/null differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-local-hub1.jpg b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-local-hub1.jpg
new file mode 100644
index 0000000000..91090d4af1
Binary files /dev/null and b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-local-hub1.jpg differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-local-hub1.png b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-local-hub1.png
deleted file mode 100644
index 3c23bd1e06..0000000000
Binary files a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-local-hub1.png and /dev/null differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-local-hub2.png b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-local-hub2.png
index a94ce2b8df..93192ade24 100644
Binary files a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-local-hub2.png and b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-local-hub2.png differ
diff --git a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-signup.png b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-signup.png
index 60f317deb6..3e340852be 100644
Binary files a/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-signup.png and b/vuepress/docs/v7.3/tutorials/solution/sd-images/sd-signup.png differ