From f78d732ff33333ec8c71475b095c5e3292cb99ff Mon Sep 17 00:00:00 2001 From: Amara Date: Tue, 17 Dec 2024 09:51:31 -0600 Subject: [PATCH 1/9] quick remove, C7 content and sidebar --- .../event-based-processes.md | 248 ------------------ .../userguide/combined-process-reports.md | 63 ----- .../decision-analysis-overview.md | 11 - .../decision-analysis/decision-filter.md | 29 -- .../decision-analysis/decision-report.md | 56 ---- .../decision-analysis/img/dmn_date_chart.png | Bin 123572 -> 0 bytes .../img/dmn_decision_table.png | Bin 95575 -> 0 bytes .../decision-analysis/img/dmn_pie_chart.png | Bin 51340 -> 0 bytes .../img/dmn_progress_bar.png | Bin 47762 -> 0 bytes .../img/dmn_raw_data_report.png | Bin 103026 -> 0 bytes .../img/dmn_report_create.png | Bin 17095 -> 0 bytes .../img/report-with-filterlist-open.png | Bin 28543 -> 0 bytes .../decision-analysis/img/zoom-in.png | Bin 105576 -> 0 bytes .../advanced-features/import-guide.md | 211 --------------- .../configuration/authorization-management.md | 53 ---- .../configuration/event-based-processes.md | 29 -- .../configuration/history-cleanup.md | 6 - .../configuration/license.md | 15 -- .../configuration/multi-tenancy.md | 49 +--- .../configuration/multiple-engines.md | 114 -------- .../configuration/security-instructions.md | 13 - .../setup-event-based-processes.md | 52 ---- .../system-configuration-platform-7.md | 81 ------ .../configuration/user-management.md | 32 --- .../configuration/webhooks.md | 67 ----- .../optimize-deployment/install-and-start.md | 202 +------------- .../migration-update/camunda-7/2.1-to-2.2.md | 27 -- .../migration-update/camunda-7/2.2-to-2.3.md | 55 ---- .../migration-update/camunda-7/2.3-to-2.4.md | 41 --- .../migration-update/camunda-7/2.4-to-2.5.md | 38 --- .../migration-update/camunda-7/2.5-to-2.6.md | 63 ----- .../migration-update/camunda-7/2.6-to-2.7.md | 59 ----- .../migration-update/camunda-7/2.7-to-3.0.md | 92 ------- .../migration-update/camunda-7/3.0-to-3.1.md | 69 ----- .../migration-update/camunda-7/3.1-to-3.2.md | 62 ----- .../camunda-7/3.10-to-3.11.md | 128 --------- .../camunda-7/3.11-to-3.12.md | 34 --- .../camunda-7/3.12-to-3.13.md | 35 --- .../camunda-7/3.13-to-3.14.md | 64 ----- .../migration-update/camunda-7/3.2-to-3.3.md | 62 ----- .../migration-update/camunda-7/3.3-to-3.4.md | 28 -- .../migration-update/camunda-7/3.4-to-3.5.md | 101 ------- .../migration-update/camunda-7/3.5-to-3.6.md | 36 --- .../migration-update/camunda-7/3.6-to-3.7.md | 43 --- .../migration-update/camunda-7/3.7-to-3.8.md | 70 ----- .../camunda-7/3.8-to-3.9-preview.md | 58 ---- .../camunda-7/3.9-preview-to-3.9.md | 51 ---- .../migration-update/camunda-7/3.9-to-3.10.md | 74 ------ ...vate_report_access_1_create_collection.png | Bin 45374 -> 0 bytes ...t_access_2_create_view_permission_mary.png | Bin 56083 -> 0 bytes .../private_report_access_3_1_copy_report.png | Bin 36871 -> 0 bytes .../private_report_access_3_2_copy_report.png | Bin 52973 -> 0 bytes ...e_report_access_4_mary_sees_collection.png | Bin 28152 -> 0 bytes .../camunda-7/instructions.md | 150 ----------- .../plugins/businesskey-import-plugin.md | 52 ---- .../plugins/decision-import-plugin.md | 84 ------ .../plugins/elasticsearch-header.md | 61 ----- .../plugins/engine-rest-filter-plugin.md | 50 ---- .../plugins/plugin-system.md | 124 --------- .../plugins/single-sign-on.md | 59 ----- .../plugins/variable-import-plugin.md | 65 ----- .../optimize-deployment/reimport.md | 40 --- .../optimize-deployment/version-policy.md | 2 + optimize_sidebars.js | 92 ------- 64 files changed, 4 insertions(+), 3396 deletions(-) delete mode 100644 optimize/components/userguide/additional-features/event-based-processes.md delete mode 100644 optimize/components/userguide/combined-process-reports.md delete mode 100644 optimize/components/userguide/decision-analysis/decision-analysis-overview.md delete mode 100644 optimize/components/userguide/decision-analysis/decision-filter.md delete mode 100644 optimize/components/userguide/decision-analysis/decision-report.md delete mode 100644 optimize/components/userguide/decision-analysis/img/dmn_date_chart.png delete mode 100644 optimize/components/userguide/decision-analysis/img/dmn_decision_table.png delete mode 100644 optimize/components/userguide/decision-analysis/img/dmn_pie_chart.png delete mode 100644 optimize/components/userguide/decision-analysis/img/dmn_progress_bar.png delete mode 100644 optimize/components/userguide/decision-analysis/img/dmn_raw_data_report.png delete mode 100644 optimize/components/userguide/decision-analysis/img/dmn_report_create.png delete mode 100644 optimize/components/userguide/decision-analysis/img/report-with-filterlist-open.png delete mode 100644 optimize/components/userguide/decision-analysis/img/zoom-in.png delete mode 100644 optimize/self-managed/optimize-deployment/advanced-features/import-guide.md delete mode 100644 optimize/self-managed/optimize-deployment/configuration/authorization-management.md delete mode 100644 optimize/self-managed/optimize-deployment/configuration/event-based-processes.md delete mode 100644 optimize/self-managed/optimize-deployment/configuration/license.md delete mode 100644 optimize/self-managed/optimize-deployment/configuration/multiple-engines.md delete mode 100644 optimize/self-managed/optimize-deployment/configuration/setup-event-based-processes.md delete mode 100644 optimize/self-managed/optimize-deployment/configuration/system-configuration-platform-7.md delete mode 100644 optimize/self-managed/optimize-deployment/configuration/user-management.md delete mode 100644 optimize/self-managed/optimize-deployment/configuration/webhooks.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.1-to-2.2.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.2-to-2.3.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.3-to-2.4.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.4-to-2.5.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.5-to-2.6.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.6-to-2.7.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.7-to-3.0.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.0-to-3.1.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.1-to-3.2.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.11-to-3.12.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.12-to-3.13.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.13-to-3.14.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.2-to-3.3.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.3-to-3.4.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.4-to-3.5.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.5-to-3.6.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.6-to-3.7.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.7-to-3.8.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.8-to-3.9-preview.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.9-preview-to-3.9.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10.md delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_1_create_collection.png delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_2_create_view_permission_mary.png delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_3_1_copy_report.png delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_3_2_copy_report.png delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_4_mary_sees_collection.png delete mode 100644 optimize/self-managed/optimize-deployment/migration-update/camunda-7/instructions.md delete mode 100644 optimize/self-managed/optimize-deployment/plugins/businesskey-import-plugin.md delete mode 100644 optimize/self-managed/optimize-deployment/plugins/decision-import-plugin.md delete mode 100644 optimize/self-managed/optimize-deployment/plugins/elasticsearch-header.md delete mode 100644 optimize/self-managed/optimize-deployment/plugins/engine-rest-filter-plugin.md delete mode 100644 optimize/self-managed/optimize-deployment/plugins/plugin-system.md delete mode 100644 optimize/self-managed/optimize-deployment/plugins/single-sign-on.md delete mode 100644 optimize/self-managed/optimize-deployment/plugins/variable-import-plugin.md delete mode 100644 optimize/self-managed/optimize-deployment/reimport.md diff --git a/optimize/components/userguide/additional-features/event-based-processes.md b/optimize/components/userguide/additional-features/event-based-processes.md deleted file mode 100644 index f8198a5fd61..00000000000 --- a/optimize/components/userguide/additional-features/event-based-processes.md +++ /dev/null @@ -1,248 +0,0 @@ ---- -id: event-based-processes -title: Event-based processes -description: Create and analyze reports backed by ingested events. ---- - -Camunda 7 only - -## Overview - -Event-based processes are BPMN processes that can be created inside Optimize and based on events. These events can be loaded from an external system or created from internal BPMN processes. They are particularly useful to create reports and dashboards based on a process that is not fully automated with Camunda 7 yet. - -Once the event-based process feature is correctly configured, you will see a new link in the navigation to go to the event-based process list. From there, you can see, create, or edit your event-based processes. - -:::note -When Camunda activity events are used in event-based processes, Camunda admin authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](#publishing-an-event-based-process) or at any time via the [edit access option](#event-based-process-list---edit-access) in the event-based process list. - -Visit our [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md) on authorization management and event-based processes for the reasoning behind this behavior. -::: - -## Set up - -You need to set up the event-based processes feature to make use of this feature. See the [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md) for more information. - -## Event-based process list - -All currently available event-based processes are listed under the main navigation item **Event-based processes**. From there, it is possible to see their state, which can be one of the following: - -- `Unmapped` - The process model is created, but no single event is mapped to a flow node. -- `Mapped` - The process model contains at least one mapping of an event to a flow node. -- `Published` - The event-based process is published and can be used in reports by users that are authorized to access it. -- `Unpublished Changes` - The process model contains changes that are not reflected in the currently published state of the event-based process; it needs to get republished manually. - -![Process List](./img/processList.png) - -### Event-based process list - edit access - -To manage authorizations for a published event-based process, the **Edit Access** option in the dropdown menu of each event-based process list entry allows you to authorize users or groups to create reports for these processes in Optimize. - -![Process List - Edit Access](./img/editAccess.png) - -## Creating an event-based process - -There are three ways to create an event-based process: - -### Auto-generate - -:::note -The process auto-generation feature is currently in early beta stage. -::: - -The first way to create an event-based process is to allow Optimize to auto-generate the model based on provided configuration. Using this option, you can specify which event sources should be used for the process, including both Camunda and external events. - -Note that for external events, it is currently only possible to select all the external events. - -![Autogenerate a process](./img/auto-generation.png) - -Optimize will attempt to generate an overall model based on these sources, determining the order of events in the model by sampling stored instances. After auto-generation is complete, you will see the process in [view mode](#view-mode), with the model's nodes fully mapped to their corresponding events. - -To make changes to the autogenerated process, modify either the model itself, the process name, or the process mappings in the same way as any other event-based process by entering [edit mode](#edit-mode). - -### Model a process - -The second way to create an event-based process is to model it manually using the integrated BPMN modeler. - -### Upload BPMN model - -Finally, you can create an event-based process by uploading a `.bpmn` file directly into Optimize. - -## Edit mode - -![Edit Mode](./img/editMode.png) - -The edit mode allows you to build and map your event-based process. Using this mode, you can perform all kinds of operations, such as: - -- Rename the process. -- Model the process using the integrated BPMN modeler. -- Map your diagram nodes to an event from the event table. -- Edit event sources for the events to display in the event table. -- Save the current state with your applied changes. -- Cancel changes you already applied to the process. - -### Modeling - -Modeling can be done using the integrated modeler shown in the screenshot above. To maximize the modeling area, collapse the table during the modeling by clicking on the **Collapse** button in the top right of the table. - -### Event sources - -To map BPMN nodes to events, add event sources to the process first by clicking the **Add Event Sources** button available at the top of the table. - -In this view, it is possible to add two types of events to the events list: - -#### External events - -Events that were ingested into Optimize from an external system. These events can be imported into Optimize using the event ingestion API Optimize provides. - -Defining the `group` property when ingesting the events will allow selecting events that belong to a group. If the group property is not defined or left empty during ingestion of an event, Optimize will consider it `ungrouped`. - -![Selecting External Events](./img/externalEvents.png) - -#### Camunda events - -![Add Source Modal](./img/sourceModal.png) - -These are events generated from an existing Camunda BPMN process. Only processes for which Optimize has imported at least one event will be visible for selection. This means the process has to have at least one instance and Optimize has to have been configured to import data from that process. - -See the [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md#use-camunda-activity-event-sources-for-event-based-processes) for more information on how this is configured. - -To add such events, provide the following details: - -- The target process definition that you would like to generate the events from - -- The trace ID location: A trace ID uniquely identifies a process instance across system boundaries. One example would be an invoice number for an invoice handling process. For a Camunda process, it is possible to select a trace ID that exists either in a variable or in the process business key. - -- Which events to display in the table: - -Adding events for every flow node might not be necessary for the event-based process. Therefore, we provide the ability to only add the events that are necessary. There are three options available: - -- Process start and end: This will add only two events in the table, one event is triggered when the process starts and one when it ends. - -- Start and end flow node events: The number of events added to the table will depend on how many start and end events are in the process. For example, if there is one start event and two end events, three events will be added. - -- Start and end flow node events: This option will add events for every flow node in the process. - -Once this information is defined and the sources are added, the events will appear in the table as shown below. - -![Events Table](./img/eventsTable.png) - -#### Events table - -Each event in the table will have the following properties: - -- Mapped as (start/end): Defines whether the event indicates start of BPMN node or the end of it. - -- Event name - -- Group - - - For external events, this corresponds to the group of the ingested event. - - For Camunda process events, this corresponds to the name of the process definition. - -- Source: External system or Camunda process event. - -- Count: How many times this event was triggered. See [additional notes](#event-counts) for more information. - -To assist during event mapping, the events table offers suggestions of potential events to be mapped based on the selected node. This is indicated by a blue strap near the suggested event. The event suggestion only works when adding all external events as a source with no Camunda events. - -### Mapping events - -Mapping is the process of linking BPMN flow nodes to events. - -To start mapping, take the following steps: - -1. Select the node that you would like to map from the diagram. -2. To link the selected node to an event, enable the checkbox of that event from the table. Afterwards, a checkmark sign will be shown on top of the node to indicate that the event has been mapped successfully. - -:::note -Not all BPMN nodes can be mapped. Only events and activities can be mapped to events. -::: - -Once all the necessary nodes are mapped, you can save your diagram to go the view mode. - -## View mode - -The view mode gives you a quick overview of which flow nodes have been mapped to events and allows you to enter the edit mode, publish, or delete the current event-based process. - -![View Mode of event-based processes](./img/processView.png) - -### Publishing an event-based process - -Once you have built and mapped your event-based process, you need to publish it to make it available for reports and dashboards. To publish your process, click the **Publish** button in the view mode of your event-based process. - -![Publish modal](./img/publishModal.png) - -In the shown modal, you can see who will have access to use the event-based process. By default, the process is only available to the user who created it. If you would like to allow other users to use the process in reports, click **Change...** to open the permissions options. - -![permissions modal](./img/usersModal.png) - -In this modal, it is possible to search for users and groups and add them to the list of users who have access to the process. Once that is done, you can save the changes and publish your process. - -Publishing the process will take some time to correlate all events and generate your event-based process. Once the publishing is done, a notification will appear indicating this. - -Now the process is ready and can be used like any other process to create reports and dashboards. - -## External ingested events - -After ingesting events into Optimize from an external system, each individual event will appear in the external events table. - -![External Events](./img/external-events.png) - -By default, the table shows all ingested events sorted by the timestamp from newest to oldest. However, it is also possible to search for events or sort the results by event name, source, group, or trace ID. - -### Deleting ingested events - -One or multiple events can be selected and deleted as shown in the figure below: - -![Deleting External Events](./img/deleting-events.png) - -:::note -When deleting an event mapped to a published event-based process, only the corresponding flow node instance will be removed from the process and no change will happen on the process instance level until the process is republished. - -For example, if you delete an ingested event that was mapped to the only end event within a process, the corresponding process instance will still be considered complete until the process is republished. -::: - -## Additional notes - -### Event-based process auto-generation - -Event-based process auto-generation attempts to determine the order of events based on a sample of stored instances. Due to the nature of sampling, it is possible that the generated model may not always appear as you might expect. - -In some cases, it is possible that some sequence flows may be hidden by overlapping elements on the generated model. - -If both an event source and an embedded subprocess contained within that source are included for auto-generation, they will appear in the auto-generated model as independent processes. - -In the case where external events are configured as an event source, it is possible that Optimize will not be able to determine a model containing all external events. In this scenario, -Optimize will auto-generate a model containing only the external events that it could determine the order of. - -In any of the above scenarios, you are able to correct the model to suit your needs using the editor. Like any other event-based process, an auto-generated model can be edited so you can make any necessary corrections after auto-generation is complete. - -### Published event-based processes - -In some scenarios, reports created using event-based processes might not show all the information expected. - -To avoid this, we encourage you to avoid including the following elements when modelling your event-based processes: - -- Inclusive gateways: These may be modeled in an event-based process diagram. However, visual data flow will be interrupted on reports such as heatmaps. - -![Inclusive Gateway](./img/inclusive_gateway.png) - -- Complex gateways: These may be modeled in an event-based process diagram. However, visual data flow will be interrupted on reports such as heatmaps. - -![Complex Gateway](./img/complex_gateway.png) - -- Mixed gateway directions: Mixed gateways are gateways which have no clear direction, instead being a combination of opening and closing gateways. These may be modeled in an event-based process diagram. However, visual data flow will be interrupted on reports such as heatmaps. - -![Mixed Direction Gateway](./img/mixed_direction_gateway.png) - -- Chained gateways: A chained gateway is one that occurs as part of a sequence of consecutive gateways. These may be modeled in an event-based process diagram. However, visual data flow will be interrupted on reports such as heatmaps. - -![Chained Gateway](./img/chained_gateway.png) - -### Event counts - -Event counts in the table may not match the values you expected. There are three possible explanations for this: - -- If you have enabled history cleanup, the counts will still include events from process instances that have since been cleaned up. -- For events from Camunda processes, the count value represents the number of times that event has occurred across all versions and tenants of that process, regardless of how the event source is configured. -- The counts for external events will still include ingested events that have since been deleted using the [event inspection feature](#deleting-ingested-events). diff --git a/optimize/components/userguide/combined-process-reports.md b/optimize/components/userguide/combined-process-reports.md deleted file mode 100644 index bcd202f4875..00000000000 --- a/optimize/components/userguide/combined-process-reports.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -id: combined-process-reports -title: Combined process reports -description: Occasionally, it is necessary to compare multiple reports or visualize them together in one diagram. ---- - -Camunda 7 only - -Occasionally, it is necessary to compare multiple reports or visualize them together in one diagram. This can be achieved by creating a special type of report called a combined process report. To create a new combined process report, visit the **Collections** page and click **Create New > New Report > Combined Process Report**. - -![Creating a Combined process report](./img/combined-report-create.png) - -Afterward, you'll be directed to the combined process report builder. Here, navigate the selection panel on the right to choose multiple reports for combination. - -:::note -If the combined process report resides within a collection, only reports in the same collection can be combined. If the combined process report is not part of a collection, it can only combine reports that are also not in a collection. -::: - -A preview of the selected reports will appear in the panel on the left: - -![combined process report builder](./img/combined-report.png) - -For instance, combining two reports with a table visualization yields the following view: - -![Combining two reports with a table visualization](./img/table-report.png) - -And combining two reports with line chart visualization results in the following view: - -![Combining two reports with line chart visualization](./img/area-chart-report.png) - -You can modify the color of chart reports by clicking on the color box near the report's name. Additionally, you can rearrange items in the list of selected reports to change their order in the report view. - -:::note -Not all reports can be combined due to differences in their configurations, such as varying visualizations, which may make them incompatible. When selecting a report, only other reports that are combinable with the selected one will appear. -::: - -Only reports that match the following criteria can be combined: - -- Same group by -- Same visualization. Only the following visualizations are possible to combine and will show up in the combined selection list: - - Bar chart - - Line chart - - Table - - Number -- Same view but combining user task duration (assigned, unassigned, and total). Flow node duration reports are also possible. -- Process definition can be different. -- Furthermore, it is possible to combine reports grouped by start date with reports grouped by end date under the condition that the date interval is the same. - -The following limitations do apply to combining reports: - -- It is not possible to combine decision reports. -- Distributed reports cannot be combined -- Multi-measure reports, including reports containing multiple aggregations or multiple user task duration times, cannot be combined. - -You can update the name of the report, save it, and add it to a dashboard, similar to a normal report. The combined process reports will appear in the reports list alongside normal reports. - -### Configure combined process reports - -You can configure the combined process report using the cogwheel button available on the top right side of the screen. - -For example, in all chart reports, you can modify what is shown in the tooltips, change the axis names, and set a goal line, as illustrated in the figure below. - -![Configurations available for combined process reports](./img/combined-config.png) diff --git a/optimize/components/userguide/decision-analysis/decision-analysis-overview.md b/optimize/components/userguide/decision-analysis/decision-analysis-overview.md deleted file mode 100644 index f34bf50f4ca..00000000000 --- a/optimize/components/userguide/decision-analysis/decision-analysis-overview.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -id: decision-analysis-overview -title: Overview -description: Explore, discover and get insights into your decisions that otherwise would be hidden. ---- - -Camunda 7 only - -Decision reports provide you with the ability to view your data from different angles and thus capture all aspects that influence your decisions, show new trends, or depict your current business state. - -You can also define filters which help you narrow down your view to what you are interested in. diff --git a/optimize/components/userguide/decision-analysis/decision-filter.md b/optimize/components/userguide/decision-analysis/decision-filter.md deleted file mode 100644 index 03714d6be9c..00000000000 --- a/optimize/components/userguide/decision-analysis/decision-filter.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -id: decision-filter -title: Filters -description: Narrow down your view on the decision by creating reports based on a subset of all decision evaluations. ---- - -Camunda 7 only - -You can enhance your decision reports in Camunda Optimize by applying filters, similar to [process analysis filters](../process-analysis/filters.md). - -To refine your decision reports, utilize filters for the [evaluation date](#evaluation-date-filter) or [input and output variables](../process-analysis/variable-filters.md): - -![Decision Report with open filter list in Camunda Optimize](./img/report-with-filterlist-open.png) - -## Evaluation date filter - -Applying an evaluation date filter narrows down the report to consider only decision evaluations within the specified date range. Remember, only one evaluation date filter can be defined per report. - -You can set a fixed or relative filter, similar to [process instance date filters](../process-analysis/metadata-filters.md#date-filters). Check the process filter guide for more details. - -Alternatively, use your mouse to create an evaluation date filter by selecting the desired area if your report is presented as a bar or line chart. - -![Zooming into a section of the chart](./img/zoom-in.png) - -## Variable filter - -Utilize the input or output variable filter to focus on decisions with specific variable values. For example, you can analyze decisions where the output variable **Classification** is **budget**. Create an output variable filter, choose the **Classification** variable, and check the **budget** option. - -For various ways to specify value ranges based on variable types, explore the [variable filter section](../process-analysis/variable-filters.md) in the filter guide. diff --git a/optimize/components/userguide/decision-analysis/decision-report.md b/optimize/components/userguide/decision-analysis/decision-report.md deleted file mode 100644 index cd0ed8d780e..00000000000 --- a/optimize/components/userguide/decision-analysis/decision-report.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -id: decision-report -title: Single report -description: Explore, discover, and get insights into your decision evaluations. ---- - -Camunda 7 only - -Decision reports provide insights into decision definitions, distinct from process reports. To create one click on **Create New** and select **Decision Report** from the dropdown on the **Collections** page. - -![Create a new Decision Report from the Report list page](./img/dmn_report_create.png) - -There are a number of different reports you can create based on decisions: - -## Raw data - -Create a raw data report to view a table listing all decision data. This is useful for detailed information on specific evaluations or exploring a decision definition with limited evaluations. - -- Reorder columns and sort by any column header to view a table listing all available decision data. This can come in handy if you found interesting insights in certain decision evaluations and need detailed information about those evaluations, or you are exploring a decision definition with a limited number of evaluations. -- Configure columns and include evaluation count in edit mode. You can reorder the columns and click on any column header to sort the table by this column. Using the configuration dialog, you can also define which columns to show and whether to include the evaluation count number in the report. These settings are only available in the edit mode of the report. - -To create a raw data report, select **Raw Data** from the view dropdown. The other fields are filled automatically. - -![Decision Raw Data Table in Camunda Optimize](./img/dmn_raw_data_report.png) - -## Evaluation count - -Create reports showing how often the decision was evaluated. Depending on the group by selection, this could be either the total number of evaluations, a chart displaying how this number of evaluations developed over time, or how they were distributed across variables or rules. As always, you can define [filters](../process-analysis/filters.md) to specify which decision evaluations to include in the report. Grouping options include: - -### Group by: None - -- Displays the total evaluations for the decision definition and version. -- Configure precision and set a goal for a progress bar. - -![Progress Bar visualization](./img/dmn_progress_bar.png) - -### Group by: Rules - -- Shows the decision table with additional columns indicating rule match frequency. -- Customize display options in the configuration dialog. - -![Decision Table with evaluation count](./img/dmn_decision_table.png) - -### Group by: Evaluation date - -- Visualize evaluations over time as a table or chart. -- Use filters to create powerful reports, e.g., time periods for specific output variables. - -![Line Chart showing decision evaluations by date](./img/dmn_date_chart.png) - -### Group by: Input or output variable - -- Group results by a chosen variable from the decision definition. -- Visualize as a table or chart. - -This view option allows you to create reports that show how often the decision was evaluated. diff --git a/optimize/components/userguide/decision-analysis/img/dmn_date_chart.png b/optimize/components/userguide/decision-analysis/img/dmn_date_chart.png deleted file mode 100644 index 9900a66cf7e9a2792a5dc8ec4f92f45e9444ecde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123572 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%0Dl1v=N4G_WfvI!Us|yDw%pK? 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 diff --git a/optimize/components/userguide/decision-analysis/img/dmn_decision_table.png b/optimize/components/userguide/decision-analysis/img/dmn_decision_table.png deleted file mode 100644 index 8f35051ed9525d86d7da40a2956f2d32f8c634f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95575 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 Rt6*Uc6$MTCq6ely{{TSYT#f($ diff --git a/optimize/components/userguide/decision-analysis/img/dmn_pie_chart.png b/optimize/components/userguide/decision-analysis/img/dmn_pie_chart.png deleted file mode 100644 index 89fec8f7809c0b12605612e4db090501d7236cd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51340 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

6QnL-Mn;D&;#xU57u}@YU5#F3at&jdTWmpa^qdK zVv<(F%eS+!)Ck%K42~w->lgZ#2G*B8O;;WEOnPjW3QN!R$5zf$VZT?JTutQBYeM(4 zZL~{#_(5@RdVYzGT>O3$JiwERgo@|YwU!Z&_mk&|7_RRROXSm2ZT6Mu{g4gwSWqG< zBh8zhuR#CS8fEQ#YpnEblLK>*AGKm#Xz^J^hj&Fr9x*Jr6fNrSuNY?h&9E_l@0%u9 z#vR1iz*>pc%|9#2ox}Qa)1I6YSy@FnPY0%{RF9e-$5{>V2COOs>3Np=+kfmI^pDgV zOeon7Q5dc($$7@9!!^-Pp#h&C&bl)Ci0nncA6~1-Kct=#f={c9@dHpsaw}aU$!;B2 z!tOs1d1Xz-yELbh#F zxmOn9f!f+ekLZ<}sIZ?))cMG|GJRIBwGZ4gbKA5N|B>{1^QzZg?>TjIYgJ5jOjfc2 zC89pU#DOFcGur<0ZF5A=d^B2E@T({~Dq|cqrQ@D>>z%)#R!5HNPN`^lMjeVAVc1-D znfbu{FgHGa{Qc|6U{Qw3*Abluf(Cq#$g>dok{nLMgqBBJctm`jyx`aPJ{o?TPEIuF z%Bu zzZRusE0yN@<9&~1F7;$eG3L&C==Noh!GX!OWeKR$qSI0~`bMTBxszCF&|`Ny`JBhT zq(~7DeDLDGBPqu6Opha5UFegJ{jd=0Q|*p4N(~otMH5Sw5;wOLRWFe!ZKlo1hltTppNK2G_4WkNn{^YV5a}o+UJmy*pv;%ct zKbs$^cC{<*tbg>bRS7wb6y~-(oD#I}!sDrker_mVGf{X0o=7_&e*g0TReNsjZ9@Cm ziA@48{a)5_i+yQ9%?wx0;H-PeNA4gSL%B_>&+!;F4G^zCBuf7N^s0Qd3kQ~}(A4gn zSJl&d%Xgw819!fcCg;$le6O^v88*m29Nu|x1e2KE}5P6IO~@k zK~GI&81QW@(*2_qMXUW9Ngm#;vhSC2ZEa_{9vNp&_Fiv^2yWFDT;F?T8`tvcxu?D5 zFQxGBqMP{IN<7#6#@*Tz*UNR!#+#qE`Zg|`ZGTSqD%tX6w0+&0$IH6|rHdu%LAsI` z&(*emR9C^%#k$+xX*eLG4yzJ%wC;=c)VnJs-e zuPa#hY|F2o!?7Vq~jrqAN}{#ffLbumg9HLX{} z!Wom4^db-(Z`t3Br`hQq++o!~Ddl@V5X<^zc?J!Cg}Jh7o8BlUG?3P`wIxn#Cx>PG zq%(I)lQK1!v$^2C8lCDLMQF#m~Zuvm%DviLi-EX5TCi*u|U#KBaMT)R_@8hptvW zmPIddXZsR5iPgv1hOe5AB{Ms5@t{qa)yPiGpmjz4`K>s^~*v3TdNEk539M<3>n5Jw_|PCA0Q{u_km!Yw2o@ z2He`=tVRgiq~#dqMcDty;>-Ij&pshcdg0b32kEW5*Vp9v7SdFedN8T zFOU+3*LPJW32nRwlEM0f6)8lEL3tpO&B~_Qm43HtXLFoy^M8RPlX@Y|w2%Ps90mZce2ZRyfc0EaefyW%R3-I{Jr1{V1>@=OteX zmbSVW>b6c}IiuaYpkgZI<3c&GUvDa>j7kn|HAfJ_iT&8=hhD^EyC*v(B#DDCHU+6h zkI_wu*igj2DdTY$z2&D=M$osN^6D!87b~QoCJi`7J5GSnB~d;vj~H#@bpy;>q&D%u OAEd0ZOu-$Kp#KG@J3wCm diff --git a/optimize/components/userguide/decision-analysis/img/dmn_progress_bar.png b/optimize/components/userguide/decision-analysis/img/dmn_progress_bar.png deleted file mode 100644 index adba12f322f8f425dec90692150ed38eceb6528c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47762 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 diff --git a/optimize/components/userguide/decision-analysis/img/dmn_raw_data_report.png b/optimize/components/userguide/decision-analysis/img/dmn_raw_data_report.png deleted file mode 100644 index aed0dfa35b1fe6359b8ae61dd161f5729e48f0af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103026 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 diff --git a/optimize/components/userguide/decision-analysis/img/dmn_report_create.png b/optimize/components/userguide/decision-analysis/img/dmn_report_create.png deleted file mode 100644 index 097b18c956e8bfa417d844b078a89a2bb50a8d4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17095 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 diff --git a/optimize/components/userguide/decision-analysis/img/report-with-filterlist-open.png b/optimize/components/userguide/decision-analysis/img/report-with-filterlist-open.png deleted file mode 100644 index 124d9a3b51cd1a7eb3ef702e07f075045603ef12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28543 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 diff --git a/optimize/components/userguide/decision-analysis/img/zoom-in.png b/optimize/components/userguide/decision-analysis/img/zoom-in.png deleted file mode 100644 index a67069eae51f0caa7d0ee671dc74df5641eaefc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105576 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 ?Lok+NUI8o%}pQO!aSL+N&u* z4=f7QV$ek%y;3pz;cuiu{1&a>zI+*hHNXnj0`3QRPqun^tlbSne~sqA0T-y@&^Q67 zK!wVN=kRIOXU)d$bxRicnWazHndyo!y z37i~FfJW43D10owp#1;|*oDTh0^95)p~r)s0A9+z@$doqH$_fU*tX(7G^1?^9*%ud zM8O_Wh|7q3FXe~CL!7}aS?ErFegf&;B?}uz?Un#rT&mixAlr3g-k32WloS>J0>tSAAIiG#V zOB>2BmIe+S+qCT6z1zL@GPow3^y5T4$i;=}k^a%sDnuU&EH6XV5r-5oxqT2A*iYngBP^Z`ucVIpWn-g9cP~fCd|^~NHIBp zCUd^iR1AQNg&KP(aw-hw*d)XNdns(&%h3Al%q_qb$OV&|EIt+x93@JV9j7kus}Xaa9`Nl$JoRGe1B+YNXWGQ1xg`yCW?6S1V0C`KM;L3 zpA=+<_FPMIQ`6&aDr=ocDb`(ubJ(neNJzMl+%j`=LM0!PvY>aA%vk>QD>omX(&PhX z-wX2c0w+%fDQy3_zrW|@@URJJJMIM03l0ql+Yr2Q9|G;>)+=4DzsTb--ioo%H3aiO znkSsH==Tu!)j-$jXYYIBeB7ciRL(@TU&dw=tUmA)O{2dtJ6jA~fMSx&=GOS?3f3+j z$Sf)ARnM)m($oF0yNH8BXt}>2uYW*5h>`-M-#?J*ITjx2?H>Sl?S`3^McCg6x&!bf zATdN4q&^HX#Q@7eOo0t5F(DyZ(o46@) z^ccY{C2kOe#A;`E|K2@1A*-h`G2CiTB_VoX(S!YU=ABkhNc&IA@Y(7PkT;&=y64A4Qjv<=wQJAg;`DKJ5G|)rIy5!eI}maZ z5(a*u@s6z|+<+sH@V{)$N50LWxP%?l0B-v;kPnD6xl+ zGTznHOaPyusE4NIB3Gh7=y}YksH%p=$M*rcaCP*!j-^7A+l}8M;4%gNToN*t9|J$%#037qE=I@YQ9T1o`-sU*sui%(L$C8a%sc z6#W!SGc#8VqGObYID&;d1p)J^khL!A&uwy`42UQpzhqpH(54p_$ad@?mwGDh<_J`Q zjK0nojctQ&^nV6)aT;wL0VLSAZ5zT0Oqp2T@oyNoA#GzyZW@LX`Tr26TsWAq#S~cC z11PnXm8f~q?!KKV*MEHQ$FxE@KmnbA89%DQ_wQE`FMyeFzAVA%gIr1@h4C$vpDNuz zI)T^Mrj9fU@d|@-d6WOJK19XhE46LzZzS)X$OE%e(ZSCKkZC5r#l1%&*nllaIX@fM z7JWl36_{XDCZ7ZcH^iSO!+YawZrmV_j=`=4#wP*l1JFpnfBy~^#Hbi%v5+Itl_Huk zu@qu?4J%mTNrHDHx`I2K< zY8Bd#V5kW94p5-SV?n3j@KtOP2i*sgP?p$0Fm_`V*;zu$51Kf5Se3HTcxwidvuvH?^QC%X%T&4{Ig8#db*_m70vB~8&=4Rs5Fd;1Kep)8@)41d?QLy4SpX5Y?V+1RBTcef7zqYw2zvk( zlRrOqpQa{KK&!;n0nX(;Rgli13BT@T{#F1~S`)!n0p9lc5ew>XcpxYWXlfTGgploE zqZ-qWk4UWaozMHk_q06^g}P5YfPgI**+x9H~xX+Wl;CuHj zaG?EL@4t{TQ0qej!G1IfZVaGmugr}(A*+JCbr;wf;~HX6Xk)mj

fiOp5sF)v?%! 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 TC02Ox~lXy;WL zGxZFTO?-QSgdS~}cOa5me%joKJbbuW-34Qk7AKE#p7Hv4Yyqu#6!dMxm&Kw?TZf<~F)=M?l!gv(+xALhw}7?l zM%Hz8#}mlBC~knDMmn!5$um>xq%g*0RUy9dyhei#02d609fYsW z2Rs)X_yj_Np(XLgTn`vNm`}0qi{Ya{i#+t-rQ>_z_SoZP*-I@y=-D!Q;hJcR-fldu z3m+UtTeC)EqobRloWkI=F*q;Y3kq_oIOVs~9&Y#OSn`IMiJQOoH}daF3DQr9%Kz5rvD z)+K)}MoEM0lJ0aKsR!y5;K4z%J*cp7f`3Q&xDRz6lv!UTZCcu3Y7K>FlV8?wJ)}*$ zO{%iRZPVm%m$)%41vmh41H*JVYE*QzKb94Kvz-%iPbaF0H#;p|+Cr=!p_5F(u}E=) z9zeqJ`z&P5b17>vR|SANk{@D9vC{A8GdyajJJ5l(fR8T-rwyu36nhOI(Bo5T|KxcM zacUOIkLLx7G_-g@m4mbtAp_rm|ET%47fGKW%mAH>bW{+_1+obYRC-Er!}>mj?}gXA z8g0)9E-?l>=N+EtTErv1j#}N&Q^5wKry7w)07Ug$r`z{X!f7=`{g5IQoq&ja5C|uv zVCFw=?|%RMy31&zi-#Zr)ENNRKzz3}+%v?b<9gsrD!}Vc#Q(snfhKxZW_9}{IJTP@ zn0WH2DGvNNYyN3V>*Jc?23a9`GhznR4_A4R3X$_Zs_W*4Pj+zTq;i5_!w#L46ZZI`s}14< zLW-G`9aRh#o*Z;iKvI#M^`aIIkh3)fezFe=XcA<0l#8$ny-g9I|9$)jd=Z-Qu&!ei z|7tK?%MWA!n3x!H%UlK@xvW{W>JZ*Z!nx~)Nqp*Qv(^teIVlKo+c~k1doWxxjmJfkqoXS*z;v~)o|FXAk^2&!bnjV*s>NH4G$E!K%UZU-x$QN z09r->Qcig}n7pw_U%Jl1)|#v_urm16R7@?G?90e!#6Njrj>K2vfE0379_j-B7agy^0XZeoN5JB@g<*+?qoFS;3FYxF z?p>aOBbX%qez+IYlkBYA;dm8;9cPFfRA?Y)Hyp>%U4V9R?4jdV1(IsyFqKyx1lqm# zFr9<9`Is#x^FWXTlfC&=lDHy>+2DZL+30uFq50v3_$;7!OKSSxTndrG6Kyv zq}SqXhe1u@uda*Jdc8x2Bj92|-fsMVw4WxGk+ULY$+%zVONuzEZxH0*%iQ)ufXA>d$Kwu(Nl5T~PFs-NR+li8at3M^ zWp)P%l@nU1VLv|` z@UEr{P|@}r!_&tmL}63#;lpf-W7DEFBptf99=j_VD*$UqsqX<4tNv$#H#bLkQ#k>C zBHS5UStn$ab>8-LJc*jIT^;FAnrCQiIC!@}n@S_4(O42bp#?&>I_r)8`xU!nnHIwj zzMTXYsCRwegwoFyi@q0g>8+6$aDx5(4hp?J{ljjh!6L|nQFvbAf$1Z# z(xj>UXOm8E4yqachpSQP2qA;1PSVxUNk*7!daVk!(wc5Ud?>e;`q$xM91{L81Z@(|8XN(fsxX6y3y0nIvA&MU$ZPSrgCg zz=3Dz1Lk>+JwsZ5-@|3Op@D}A2^4k|#-L<7pzR&=w@OJu1LzWv8ovL~Bc+jMrxnVQ z=!JeDU=KdgEam$Zax69GEyeMnF$eJ&>CSbv8C;Ydy|DR(&o0ix)wm}}In*C8N$d+3 zZwK*|klGM{X&#Ra4dF?NGmYc{v&Uk+)wURcnU$~vvn?+^bGmWKJAQ}AtBHpCO*pA=r5IfijH42fzRp9= z6kbA-`6PP7q#Ws?84S^I#@CE6YTS81#94ii%>Doq8^lQfRp$%A^ki5eSP(@wS~4cj{4)%@I`doMEW50Z0IEq@`Iq1`1+C3T&$*Mo8l^;L`r_@QmX) zzQBoTsWF6&FOk;vOaha!5Tc=QuH@4>+7)N!)LOJ#NI=F|3t76hj$SWZ@`7;#fj|y_ zPR`UmaG={AM<}GX+!PQO3>d=Le!YD&_z;sH;owc);*Aas&A3*b^oY!W~bN*{TK z&8NqDgFFvy55UbfBU1|xyHNt~zHpU?eEj_C{!;Y_bsnEC4Ak;x*`eqs)H5_vS$&lz zW9>Dg?SMvuaZ-@n2{|&U-XC7!U-9D zN6;L4AzPsQX%~iTx!`$-<31{QD03c1?-^)Mk~iXIl{ducXU)>aT?3>ev1O1+HZ2Ij zv%^2&U;D3~GNa$|+c8m;xJ}RmBSu!#H+Z6Q;v3Lw0haNdRiLEduEzVxEM$F_hvrx8 zJ`Gpe&rh$6bcT!#gwTeFYZU*wBc)I4pNEXJAt|irdxXjY4-~Brz*x;o@1S=ar($0f z?S-w9CX)sTx+w8OnE0*$_pb+w7imPH2>pABD7eu z=1(I(c5Ya>0Z0#iMAK##`%j8*e$impCJRpLBw0TB*g5`5ElSN%vzapED^c^JX9Q_g zV|{(lh4+gvC61c{E5fyCFpZBFmy;Vpl7&JMbPM`afx{vFgrM=>`s1&!iw56os~o3D zT`!A%)bvI`M0{%75Hj$=b;>jd3fjrP<{OM!aDFE*1{@D>3!L5r+e8v1g2oc0k@)7Q z9*-Lu))hGSJ^zj?SR}Qgg2v%>#W^Fg+h0|?OJa;sGPfXixGMMdt#xs-iW!tq=A*e{ zo6W4U`u)_+KE|CdSL#(8&R1V_#PQX=(HZfA9D586bbD-uXSqCn{LM0Zw!HZ}03DB{ z)m6bF5k3jRGoIJG6}xXE+~K;hU0PaN2n5H215*|P0bzX8fU zu3mUZ!g-jHJr%7SLwd!?+*oO55L`jFI53tAsq?qhf(O@Hg3 zRxY&#GU~&dFG_frskX_kR}yRMXcABgE$1&j+v9L{%Ie~g5qg8JZ~MSB$3{7mEwX9? zUt51{%Xl;DY*PBUY!~kb!I6jlTWV4jx?JNjXx5so0%E)=!R^Y^XhB;}jv3H`W^MW{ z?dphA*N>BK2?F=262TExxEkdS^um1hk>Oa~1cSGO5Ya%0Ns=OvA#VG@pX#uZ?R9WC z0N_Qf3K+=P#3cL_@a zfkOvBCm2o{TGx{KFy4apHC(4sERD81;fBds)AO?^7i;c-Ldwe)7+&z`+Xtd&<`v^Cp#c}?oT^wkz0yaa1f?;DHR z%Dkn$+!$%#ymyYX>Gq#7?Oel4K5p1eN-`V6DOXRk`eYu*tuZ@ibnAJ31ZC&y-dg2@ ztO$Ou9>$E~eS-#JCaBj?$r*d@qjF;ZLKlRTo{NG(l4xBzg_@n>hGPY@WmG6`NR?3H zjzoof>^)I29_?Ok^KEDhfX^osNh#oNkS^RhLaI7s>cB1#dycV1XpMoEY7lX7euoE| z{*z;`1Z=;~qmtOOEsbxupyo^8>37V2zpVPZo>q=W4wv_goT8-!WLF1DJ^pdiv+ugg zzyem`lKR*+^HWZ2|IoCO@v&fdb6CA$OUDV8L8f-sV3L#GWz!l)>=Ip5+IL2OT8P!5 zBGKJ_w_FCeeZCg8KA=Z_?obSQnMDhdPH74hrd#$jr8+-9J*3hhY99GX)%$91o?4j8 zirZh4tIf*KyBxQi8g4ssefunn=k%u>O<{_x{uVdiu?l;`Es7bv1FBpMUb#qGvGoO3 z+Lw_e{%XD3Ia74^u?Awr1a4_Qzuwmo@xkh1mcD(K$YI@%X6LS5 z155Po8K19VSPiLg?bAZ&8R(xO8p9>9!SRK9f|%!`g=5`9Yf^WwRnW88oe=r-l+AM9 zGG1=6fTB3wvL69i^xCpGE=Lnblf2HyA8t<5QGbx$>$>1}L$osR9aR*1sTq$Sw}D!` zX#~8P08!j~^`82Qbk9=bPYaQH93fVH9XLpK=gLr%5Ra@rkIdW-<4=x)w`?l!K=@NW0 zl0|uHP@#P*PU3tu-x-$TjAK3XTbvQ}^(qdY$*)ehKIYo)HqHEHNw@(`*>=6?EKNC8 zE#8*VBE^hagH3|HAJ-+A-H?^eD^Lz|3A;0suBg%ez)fFX)P}V~rrDwAJF~JqjW^}4 zl~J3tP-t4e@r>~W%SmZ3kf8{&68iJk&D3vbCYQsEmyIKf}|0zHR(bdAMfy zexgh2$!+p!N}-5WX?#sEn^i0z{bX6= zx6hokjg9VEM>VBC(mxYF$9O?syUa2UvnsQ&)nXHLj98lNcoU3sv)qhlBON3}N*Y}Is z^<5If6~ZO$yT{yYP-Dz(-OKWxE9T+yefuk6vxCw}NlyJ16gM6bYkKwcp8Y0C9nMB7 z>HPHE{JedMhkJ(0@L+Z8j@rF`d5OswtQ6?&GO%36;<%|#6&lhJkXsd5uVb>NHK0$% zVRKrwiObi4BP)B(TKb8YJB^8XcsO-!eYT>fIH-5*gr{#>Q>tyO!ObDVtW6SP9}jqE zmmfSR`+g`$F5Y02Z?{Y6sh#$E!?u!Zb3X1(-0l%99%lIau<07lleT$s%#~0&|=C=)bS*k1{PX}hi6Sw zxWQ(1miZ$l-EN!jn&lNxsO_1leY>z*vV2YR3ENF4SF$o-W0_ytQOlp0(c-hE8duQ|wn zhBX|xFMB)BK*gWuxdQv;BcfGPlFPE4Zbe_eJWDeU9~S$S zVU?ZF^&5Az?-ob1W?I<=p(m<>NA4K+PBUMxFnoIF5JNz*v?((qjdd0iuiKgBio?G@ zXkQvTt+4&;b53@~`CB8hO7m5A$Lf>Ze6!9CyH3;M;#hh%OE*g)tX^sJvyLe-zi~J$ zC)sXu2Npzv=`B|AB`4Y$6;+O=)XcHshJJp<3wsFrwZ&qhwcM45VE=`h@=1|WVf6(< zjD#g=wtDIbLYNh?out~KXYM6C=9^R**BwnU=xDq5<(p2d*l7Q!PyMpx?a^-%vkdsh zUXRt}zBzFu-laRJ1$Qe=UGecALWaF`Hvfl@*(z@%BQ09_a8p4Tp>z~(M#ITg$n;fZ zd%3~@vcZJ(mi}ovv+IkkM5kY5~&Ck@rovkb3hG z_-z;XJIeys#_T~6W767=`g^DwN}6=^ENzKDj@qA8%dAXR25I$n@(1>EiU1HFKjJC} z07IofzX5pY`;{f8q=UZPW^rvdfUGkFCpq|d6YHy`%g_5Y=m=~xJkBm|wtDIuIADS6 zBJiDLJGXr2%S;#HxfDmZVF|$)fRh5U3xtxod>3JmMhdrc!@$cJNr8ah@JBP}lFy&} z+Ra>OxHg0S*QEc@@Us`1LK6e6ij@hXf#})z@xCpJ=4w=9S%YN>!S)UQ9ZnrIB*f(7 zaA^@DOP4|jff8~P@_`petzZIeshx^%uwx`+54*l1o z*OWG0Fc_bC1y1hG9NC*fN{SBhfRi_wO&v=GAn}%$e0N?9##Ca~*i@CT2W)vyiFEV) zsSf;&xS4?O@9@<%HOl(IzjU7l&lh02o~I_bF)zi+vFRgM_3yDv3i+UQVDoU!J3Z(y=F8sJ&Vy(EK$QuuNG3@er{;qPuTpQCDpe_WpL1eUo1-7~`XFAsjx) zN+D_rPyi-G06bLeip`CIyd%BpE`!8mvr&JnTVia!!a}et=vIXu1nf+{cv{;GrT$mg zKV!^}Q6_kafjpf|cu2_rkR#}OrDyjsC6paC*GHEW+@F~G>!k=nn3&;wlqnB%>Z=f< zn;DUo!%R6Tnl>K4T(?)E?Fbju$;;rNKm8`VWB}|A8;^pTGD?=6urS z^54f^{^xSARQ_FL>VNLe|221KkIl1Lo4z5Cy7a~x5YZC;2iD@+Vxmp}65a6QhZ_&h z%P}C4l5T~tf`Rf0R1Vr;;Qsj?$IiafjPVWq@|90RbT0T;GFu#K*oMYN+jE%kFjo3V zkzh?8x4?2<8aIZ96 zOgz)UJ6_=dfa$rp;T{C40ul4sINt&<6z)At2C=6Ns=`DQxRkP>S37h1G!*pqke7i9 z1pfd)plB-o4@B*jly~d~#@xHO-fEnrnaCVOgRBlMvgwxUiCvzAzHvVsB*8nxq}l7V|F2XbEWP?rwOJ6<%KWg-3I%?(*>RuV0tSIjC~o z(${TkDzh=_F}^>4l_H@YHTA3K_u2LYEM8)0K#SuV?x=cWl3)_9qv_q*bn5iU7q&Hw zz%NZ@rEfj-0Y1G~3opNu(}YPfZ>`LX&)v+TmG4e?@L+k`n@lQ6{H41L~;r8L@Qia47LG@bKQC<0moWreKK<~JN zb|uiaJS~a^;+;QQ)wD9^XVc2=_mC{jL2JTX$~gvI#@J}@kIS(*og-=6w=WOpr|x3~ z$(hV=8HI+fyz!LH(d|@#hK4iu^aL#_$&kFw9sh}Zoi9w=3q9y^sw|F`+bt1hcFWYI z-5S@|w#TlAYJKoaO%V}VRF~^h%`)%@dU^sbtS48CRL;c{f3A=Bmrx5F8_7(Rj;8Z* zD&OS9+@6@|_(dK`v`!3~Ys+1$6`NRcGR%axEaXKkrhBb==+YYJ+oUyAn}Vw9uNyxqs%q?5AN0;DLB%Sj%>F?@p;l~|N_crYZ<*Vp z0lxaf0+C00xjy}IM^1x*2NSCq=O!AndC?-`9s}E!C}FR`xkaTvFwXRrU{6Pl3z!lB zrO-rxqCn1qRFdKbv=^QhAhzx;dGNNWHv2?rMrisvx8FRtDrFZdQu|Hd(6$fAF-S? zj%#251^KI{`uc`<3%qXUG@UwgCfh?_O_j4tkQZARE9cZsom~llPdKY;JM^`*01~n; z$Lg%j*t!&~mP1tAEBeg-QGOb)DQRKytyZh5{zuOvuxPb7~ zpj{GTXqCs*H>ZvtpRtT>R%~zQw4szJN1m|3vGw>~jE{)H@_Q-rxUhTnCJJRgJ9nNa>b*pxeWT@Esh;DJ%{-=df zO3ZJ&62L0b3}Az&t+y!S!L2yG#ThMs^33n&!$!5r@p2YAs?A@Ms#`l&{Ix{R_RKKu z=65<_A)4JHkZ9vm!Y7VIDhlkk8RS2S8-ET zcpZK(DABHV?!l4L#OuZ#!(Xl&@7m=jGHdhZvg=EqSpVE1lT3Ma-B`mUmFKmW&UxL3$XSp0c*ia)9lXjn0yu+G1AtPQb zaei=A!|BMe4DN4*R;x0TA=Y<>QV9j9I}gfFa6{l<7f=_1y@WVz0TmOkNCSxHmX@d$ z{4>X6{L&rGF7dfz!v$k7@g}; z0ZqD_6MAE=_OVZF%wW@k2p40EdLJDd)1_eEiDG&&Y{7}&_vHg@ZwfDqx$h>aDXR&A z%wOGe|6Z>9|3r!y;cWa27C;ac^gRN#)~x)r)Ky721<_{eNb@Y*4cOZ#U7v8S zZeAl-F}%F?6-;yoLH42c&WwyV-t^di4E(9!&2*0~Gosp~BBCC;(%9 z@+3KJQSj!9vxnd8*^U>&pwI^76o}VO$Q80Zg+kga#viw!cMnUey6CWu-x*bdSR zWE)jgkb2yI8^eCli@U{m(Rb94x+&(zp#;f(f8Uh8`tYwyF4OdeARLxNOOabZ6O|j! zCZ+bAi4G3vX(=;-2oP;Xdu=G=Z@4u;rML9taDNxz1mfC*Sd;yJg)iGMHR2)ePcX_W zp4YIX-?DKp8*Xtm^=paFg|NiGjXh)36=&5W5hwsoK2sTgSB|+{__VK}5rdYP(VHVL z8?bw+y{Zo=$SeZkKU4?ijwlk)U#9$+jnwYZ!QVJGYzS%Y@6pK`)P^6-vp>gk7mngX zcz;+T+6>i!l0d0`P)A4fDSLqGGQEcm#@#mzhL=a4LK34K&A#?MW_Y)K{!$M|E`WxB ze9L1~?X?x3*<$X9SbQYQbZ~&=q z)Af$u&(~KZdCmA&TsCr2B+Zq(i_CHpWwTj?aar zN3rjzXAq#0q7r;6aUe)u!G5Q8_yTb8e}*m&Xs7zn{EH4n2-i@jD%)tVAJgK!cuY{N zLY*if1gT#WJWcvg`QOoHKLRgba%VSN{E#U>N(679L~&XIs^{n9TbZ_s{XugcS{Wa} zcMS@HS&lqrpYyy%k2gZo9lePV5G>`b_fnsjqCsxwGFTE)sp|~jh+rl7h2{KM_QomJ zZiy5@gU2~jQ^mF?Zz^@6FCpHC;GUot^cW~)8mZ#lsbVjW~^AZGket&y~?PVd@Jz{g3Lnw1|vCJAdxwO<&do(Yg zdu)6u8%^FLM(If;<-nncS`}K#$|cxfE|o@)Rz970YI+Y%jqmvT+rM9Qh5%Z?;Y^V{ zL+1=x9Uz4}dTjZ%SMUK@nd`7~#w`}9&>nw(j%Eq#j)?(T=IfQ&dx3+xXGF}Zth}5! z%z=V~qf7fOpl|x~RVHrL0W4il`R*K$WG5yy1zVHJu7i+?G-39ZYC@lRM~@v%yguPU z608t78>ZlR>#^gvR|9@c2E#*W(2HW@^y$&|_q{N5KK~CNggXK?B|==T_{27_#5VX4 zAR|_>lKmyFx?$;4IkDu?XjKi?8j^B&8{D{Y!&`6O_)EO5;G+&h(EuM*NR%Hug4U~) zh@s%0x#HLAkHDsbWEN_g5a`CBOGR=!?tXH1vZI6!cgpV5&&tU(bks|7f11CWx z|60lZwmshT=v)xs!|1iY!b1!LAn1LV;RJXzS8O7j=;9Drdg1LnD4Jp3B?tf%0-x~r zY;EtxRCjj7G+J$~>5X9>+=B9(;G{{!kyqxZ*lcFs`2ZCL8miEQh2R&5Zhw>^Zch+? zFyM^H_H!p}WcJA7-mcZ7TY=IQ(1l3u-s2M!kHy!&ZK~p1h@B4sZN_GTK8r|u;f(?q zUghsmDf(ErBl4=-AT8-i9-Dkos};mYz%9Qpx4K`k=uz^|YY zBg#WmOLDTLdtgQuJ9;k5AR!na>}X12V%da&$;&BsTDaaq<=ESojgXSn|4srfxjt_l z*tfvSr^WWN88Z~BA-B#C8wytZ?fayPpd-Pv=R6^4o2L&#ndP?y&D_fVY4M13~^j(&1hdT$#fvQKYJFPB4o)rMySZ9eEClRY?&9RdAplV)=Xa9I!NjHX z5cIG}4@xJ#MGs!X4ze#_t(fSH=A^vq_an{y{7^Jn&0duq?iuPGmMI4*tN;dSF$ z?Q~vVO-T{oC1R!K?qR!4 zJYd=EKbI}zeEnfP>v-gu$f2=s!zNNaPwYNPUy#n!_k2=sIan2<_-M#+(20(l@gL|J z`!B=3cW?Gi9c_b?j38-exytR*?HzLT>4}|IkQrMdtwG9w` zKnJ2ram>ckTVf>jHjS@`&dkAC$cRB~VhiGs@wPi78Ce+;3=<@$hKcM_=9^QW-`FfYsEp{fe~MkHDTbd&MMWy$&~aff zA~%WkJXGigVM!}U-Semfxlk2k{`c0hUHBIAx_pn$MS%p{h7emrOp6BMSm=WCIWal8 z(IOQLAvRXid;A})yIE#op5}$tn{obr388JW>16Q{CcHfW^izS{qY^F zEmFDk@`|#GQfZ!DRT-K4463JEDAQ%vulK6S7~R3hueVJ|3uRifL=QP~hQa4D+GzdF zB-)7ozR^rS)y|%v<27QBX?l9s({%3co#PX-c+cmI`1oPw%1V1FVY=+S2-@Y#m+kBE z`r+=^X@EG7NZ21*JvW5zSDM3Ix!HU>F~1Jq zy`2+jv8QRXdiQIekEeg;4GrG0l5k7!PD+a3QBP80v%^K5>sAz3RQM;mM(j4#w-?Es zRi4ANwq8l=pKjBE=W@C3(<#>c43og0P6;oWiAf?%{id~Z!`m_4y*!n{nlIoWoK{{@ zu_#MEFpQRan)p10?;d)6^=HnL3K)91_@8Q}^Zu~dw*=@V_&-*(yf^xM#Yrkr(l`vrbVdVrON zsurhXr_%yWZ!E{)<7d{x1OnX^st=I{XfqfLAp4vYjBL}!xOzXo#*xdb>}NV2zL_T$ zU_n{2NpvB-q=|c{!U$yrr&&yFjERY8aAx#xycz@j-NVx(0_yyb#x(dmDhZ;zRS@0t zuv^G^r=}(+*XgkI?&9i;I~cJsk7MG3tOg_JTP3X3^G$Zuy2C^b`olKig_v7P<8RSg zYqDtTKDt|(9X-9?jkha5Hf9YzBm^H)|FGF=G*hQ^KK1K{mP_Vm1n648TK?6E8kgZ0?LQTY~K-4$VDB5p-+I#`yzLevX zojX-2ea&_k8D!Rv7$DgvG|}yQI?v}IWxcR+=XTwNISunO%(Y>i_xbZ|gRL4Gn%71s zpK`V*L_{dKr3h_b@UT10PmT4qLw{jWMoiyHyz8mGJLz`)f6Q#tU*q#l^${9UnnDiU z7~OxwL2C4k1p9MZXH&MB-qlg;`f;7-NS$AKS(&P!fyH3t+-!-2n3z1>tr|r|JiiJ=+4|1TEQ=r~%F-JK`g(eWQQ8{%lC@T{uLi39cg3xEl(tj& zihCpv_0k8aF~?@DXWJ5Eo@}#rv>y!(*vluq_O7pu$mZj6*_Vy!65m6QXcvYC2uenY zEKZy$sI}WFVe^7#9o8$CYKiTh8*_bE+_Ot`+fOsf{`BU`9uBCieV{Za=F#tp`!2UE z>dT<+j(dxDX_6S$ar`FS8g6$EeJ3z<0GA}|R#;qYfdqU!*28iFqfe7~s3P9zBx^)R zXSUr$kQ{1~7)ujDTAMI5I7m-RW1+VODHr;V;Fi&XUSjlU)H8uC;aOS|G$1Yb6&YL;hi~@cWl!dKcqPRV)*|LU)uj%4%<)Q zpEX(hTRF!6JgomeQ``SgN6i0w56g{b?|X+ShK8uY;dihaPWBXt_#C0-n@u?>3-U<&$o(p~Y%-p`y~0=mLTaft2SU!AWI|a@GuJxbWB!lpmPqemJS5 zv{br9hRnYi+-_T5!K@vlmxOhH&OG;^+vAf*WaQ{~-8~VFTI$tPpQRoh?#Aqa^zMC; zO3wD;eq)_!G>2NhtMeGGIV)QA&*+@dEZMs7JZn(O$$nPO%I0dg);hBWd95Y<)9z+_?=ttTR$w`LjCoQ9tEA!C&t#$~d>M{gdV~*0YLp`t}9}7a4MVS@Ld$ zNYf7nF0Ooi>{)|5lgW&XJh~~4Ha(*aqtV_<6g1$Cb9<1k3!`%Ie@p`^tgzChMgM?s zn%|F?b5NSWUvmxxv%2N!50!Ff>1@3JQLLj?r8tA9JFlveKHnz`Ba|{u?R=B$wFkGq zdg>j)RQr1W6%t30R+ss-edqs@0rH63L(Y$((i4B-6DwnCT6twa3N7sUCR88jMr^dH zQL$>e)uxZXAMQ54!d!V@27(4p!S-1~pM+)o@`I|F0v*bo!F<%Frd3FsnazS1=tGJg zM=IvMp&q|%tXr%R`(#_MmO8SSd}J{_EK$3@f`QP=ijWty>2qTI=Up~_Ae{VdoAnOX zr@_r1_Sn}eDDRHDjo)g-CWJDBer}WLx>xg6Oa5GGi|VFzH`_xU@DvI)#JWO{1ndox zw||zDv{8f7`HF=_?JHp*I1&bf4GjH3dJ4D@=w1tx84OT|GYsuh=(Qq#Q0c>Kt5$cO zl3bH;HqYJbTi~%KwQ!{cy**dGmZe9>$Hd14*&(Ukx1+u;|0lnfv4?>^x{!5()ohU% z1}^i-bLr<(Ri&)B=iZ&CLYpz)Iw9s+Op;A;^ZmVr8PBW^S5G~lOoxK@PEAH}JWp*f zZ^VJKe~tFMi;3oj!p$`{lRvv8_J~zlQEt{Ws5>o3_{@z5Mm-@@S&gNhASW zCxiP9?H-N-Fz@4%93W@)$!k||Gr@6C?1?NrZEy2+oQiqt5#OeyE~=Ypm_wLW@cMPh zXw1g=otK7xT0plunerglBEspp+TlePQyTxQ@IEoVH2=S}<} zJ(16Nqs!CcjpGl~7a( z+0herO3Inn=jVJ6lu<&)PxPWS$+!e0<9bGPk?YN8g=N`pu#hMPhjV3X({Fq%02 zcR{zzT@-;$$kdCzZ`Jt+V>H^XSME2<{I?)#T;0{nlY8}|Q| zIQV~p&Ho8D|1;S7|5?BD|No-9|6%j~ez^MeiF;7reF`+SRj$b@tZ20&U+wF@6knNKt?aoDd=dPBI#0-J-n6&BH}deG@86mW z9eWa8O~{#?(uJ z9+y8i{iDomut-01v~c3{P>=tqq1JZe+y1hduI{Su8;?A5t(YyeUU`t8YvE@1@?KjZ zq#jR(QtxrqH#`QcO#3j!5pbvU!*-k8bh{sW6}9^f>X`$NtsfOLHPrj$^3b z??3r>K#0LFyv934uSGMx6&v%^89^F)MZtgQHgR*CT#S5tE72O;e?O4stnJKVKemJ>pi0ext z(y^a!3?!F7o9#dIIq_@fBY#E>dX~Ph;_n8hnfP^B%U$Mo(*%N2z3(nHc3`>UlefhI zF@tjBI#9TNa{iIRPOJ6LO@;hCOYCR)prL`TDPqGUjHcfTPL zyI*BO48;de&w(_Ct^O|Jp#Mq?OBJc^F(*OyYwqm~U(=ifbs*ToPg)voELN|7pNsiq zImb~y;17LDk`(OSwKp6QdxM$_S5}bkm|4g#84elS(f;^0KYl96NvQwZi<@KDHZIYz z=V(YyFD`9~&d824saG41b$ub9^YnDez9?(WmaL?VcemtcYD*QVpf;5HRNldu0Q-;I zLT&4RWhJG{=j83N(N(E0e2}2?LH@|9&s8JG%q?%1kuSWQ`TR~X$*=8kb&;pH)$ww1 zuBk0I#|DxD{aeoQci_7_(#}Q8yyPEhy>ois={eJ~$w_5s$R9Ajp*flgTbnvAO;A{9{Ua{w`t$A=6J&&@?I+Kk1*5~h~E8_uj$c6UVX z;al*WMOUVmZeBAYc!5HuzQ?TS7K6jWW1)6M1N`y$xNJesSRchVCo3Y1{kWLTMcM4a zfBW~njXY*A&nf=zBnJ_xs?)-$aP#G|`!1_%AbOd}V^p!1FqKo-pIP4RjM8AEF`aWXJN4EgA3N zg(YxW5);pM!TZPFkgA_HGM;$~bhME@d@m7}6$W;1Cf(!q?|YEybo~>Z3E< zoVJPynrAg*Kw5O!Oo)n?f2``&joVq)tgrszrTfQel+-* zswsX2kne$5AJ?_QnV--11!rU0)}OpA2q=NI$?>W4P-GQmcc5m5ar0UF2ObDy>Vh{@4o*#7STTkKKn0JB^oL^8?mq*sv;lNf zLy`0fgn{w<(@=wc?oWz_5a)_|@`Pw5fqZq7Sx5%`v#T(l_;W`{Tk@xF;u!|3i+QOk z1j5}!Er@7z_20aOK0>JKy-7gTLemP< zFT0^c^_LuvyHxi^;&V}JA=`vGr>M2wR2-$GVJg-sO* zn}Ohk5PzVQ2?^5#0UJY>ySwXa# zw^&zJ3GN};6m%P4x(iv^%g#rm3Q?Y>rlG-6dI!P~u0CIj!t_85G}SPm%X1>ohzzO- z_(~d~Fy8@t)dPq%A7C2cmA-VtYqLtl+B1j&+|Z()WM;@o+swJv+_pXpPj){ z=%an8^q^vVKZFY*os{wJ-8`CdY;0^!=^3`iH-hI%6deOuA%~7gQCg^IzSH%ssgtv- z>k*y061Hk2hgDivS(vBrA*B24rk)uaH3$mY=dFv1M z&u`GXc0<}-SlE_Gj!8J|J-yK0-oB1OO7r~rJTPmq3V$GMhU&F?wlBzbM?^)*p}-hl zOeJ=XP8pwkPY#xi$5a%W0|K3?+Qg-%6=-4L_6Z3UW8H|X)AI}4wr!h7gZFRTo4PtX z5QIMID;v(ix(h>a9F)kLpkk<2me1A>4Gf%z+7K*ykIrVlN1_J!$f1VqY zJ3LocKs=EJvkLqJ)k<8fn-C7f${>KggvU^=B(N~3zpyE3#l@?xZA*sHLtOq507{p^ zDh9kq3W~%<6O}u{ODOh*p@Ax+IZ$NiQCX1D?Oe<4G^)XWaejcVtaQn)bfNoRxvr4$ zgCc`8bJF1IUQeto0P0mjO9FvTwQ^}`iO34)CnolwT|#!bgCUgDB~O2p2)u#`Rrlk^ z7T1NO{l=ix0gNpKfDHx~*(jLQL#G#D2H)d+3_*4GHr;`FGF}_=l6LP6)(E{;{C5_} z3(=cbW#v*J5&?+lI+Tp}VD zWm6*hrs9vqA(S<3; z!Vr~2#6R~<>2S|+?-rm%`W|llv180R!}jgO@e-v)XdW7Yg9`StN_3i4%x@DDoDGc5 zQF~mf8Rd$0``pE-^&e2W*oYa*XX;rZY$S^SmAqwc6-%l-(L<@Pfg%!IKa640EXk*lC`5<1#IX|DP}_Dn^zb(e zDew5D0NqLiDugru6PgdARG3;2awP;Mf~VYDDKGq=QQH zy}U6ZOGN0Bpq66xq7=$hXqX`J6L|pVF@y;N_KRj*OHJ6!IB-{CKhEmt#JW#7U+5nm zmcsOD%-g|)Z=xRz7Abh6kVO2nhigg^=|LRPvxOb$t%+;H1V?CC#72zL3n5_egjKeX znTo^>g~lm@(l!jlhPsBhD}(>rS~S-XmByZZM#-;UJ;6LcP-EX(H&4bI)$iB~xlFWN zwGf8{j*z{?UnneLKj()78TzJc>3G0xA8E;-gW`t^^e?{;*h7sL^{A>D(hGo?2dX1w z;Lef3lAyjJxH#j!t>QmifVqO%n=cD6^PGrqEH)OCfRyw&p!h}vu3a_kxk40eVBAY- zxb*)O$wq)tKxFwcD-Q%7x=(LZ0?r>i7L*r=WlxHAu|lMS7|){krqlc?6bL0?UJ%0m z{{0(g#0|4tUi=t{Pa3;-Zfes=6HFm~;qq*5aUuL287q&mkyse?9m_0L_KtUTLW{Tv zV%%>aR*CUNm@SwMTPiKI!eLm14L}1A5%eVP6;o~C^NHg@?t;KI0L15TaEXrvP-Eda!cnx64-wM~ zZHqsN#zyrM+$S_m=VH0Cibv?fhzpwryAmluKBj}=uaMRJ`*F9-L@d|A?jxS)-@q!v zeK;ZH;&SPaM@D}t>gdR@&{El|4XDacyM}*x57A`IE5d9X^a~62{=gKR46v7p_O>CK zy!b;=A;1&iL`^Uhl1l?RJ_#*sY{qcBzO9rT4~L3O7r9*JXfnc98s4Zr0`u(A8L*ou zqGt`umQ|8i2#)of=gc`+2#rK74h{~u5{!X682sl0Lm`|xlv&)NECb_$+es2Iv~?iV zuYyHuZ#R~RF+^kp6LADamfStrX~GE|g4_;?yotJMQDNWq%JIq7p<2nMY}Yq_zOeZW zU$$4m6%|1!27yvwU9L6_4b2%?QPIC2{C&|MUxm@TFp-h!{Jk^1edG5o;z)s*Zj^2; zfAVBC=!%&6M09(>^~`d+ILJ;<60{a*)J8y|1S;z=*;p;4ln{%_;+l6pWpp%Z|DHXO zIP(yMB*q(+#H=`5`Y@zrP;UPNiD;xZC@D(9s353C1*}un5i0&Vo}Qj3PEHtL0=(2to1afs*ed}iTub8`&7eaYH`Fqa4j zl&S*T6=GBOkgw-Kf^I#fQ}K&6`HsZAapY0H)CSu zv2(A`D*7fj*Ae*wG(Vjoq-xgcfaqrW=pS(CVH_a}zl>}oz;jRAxX}q{_Q`)Yq6hU+ zv4xHYT;8F#zpuGs@NJjP?$C;j#j_?j3qpm{T2;UF4-kjiZ(1hW=9YyF7>(rE3#k6c zEuXlKLL=dyp~3O+(W8dfD|Vs$MZQ(Vl^TnNCQwoTrJs`iHC!}2EaZfW1Dttu(d>vE z>)DyO{*Oda@Glf*Iaalba4O?Z9Kl8rzmtogGtcSh!wPf1#b~ue$fmQo@7`|5=0l?xT8p;hz_A{Jb{I|dgV%Bu`jZVvF5Bk zXhP}YLSoECA?ZXgbmGx~tr!>?36e=dFBM5Ppp?wz4(Xg`_`$0D(Sd>OY@bOUf=<=> zN_s*$+1OT1ED)JtvHG`om9=l*P97he?G6h;+!4v^-Cqzd?MMPY;SCHe#(UP4e-v%8 z|3S30r}Fc5qE|0BCx-|w15H3`K)M90()KDtqjPa-X}9|0aUrPwfFk|}iOfHW#5fdo zR!9mG+Eli)vkwmrE;a*~!@P(&A}C&^NEEmW3kyA`L_KdHZ(VJtk=?dp#brT<-N2Pl zFAYdUq+&*1VB{k(g*?-B!dZD(}W;;jMad7b>z|)cu9B} zd-R(k861NPg-*f(nJEH4Hh)1k@A}2*ff2wV3x$xfg3ooEt~=hvjIG9fQMSP3y8UDp z2!qGCH}srV5s}<;ZbZ%tp6ge~qNy0bEq_S@QyXDmT6B|ile!;z4Sh_aK99I%3|iQa z=UN*YwsJhjOCYR}b{aRfu;?ShCEyi`Ek?w}rwK70o?M-Ois<3P=b^z1^Vaf-%lp{& zfvDJHi4BoflMsz04(R4@LzZyx3R%!Q&#-QZiMw2y@5v4@J0YVNWEM+yXZ)tCKwFpc zx3Oq8r+;!4NZTj3o;_~50{ix%W99=<11D0}M9ivo%jO$@sbVvxr>B*Ah<{++; zptEZ&43NtKiqf*s)r|^OamJscd|d?Z(mhp7E)$-?vHuV&%rlA*gG&Zgh6$G zFdEMt9ev2NN5~CBK;0==guj6cPo_SgwT`R`h7H63dj#48(ku!4+HOodK-`17i)KNh zSdMrMyXdhzQQozDh6b<=(h%ajF$w@rh>>wbc%BRmfmS~ZQSgmp6)5Wys7x&pNk=Y} z>)~NN;POcmDN0S9%l9s!j}d|9^d4oTdFa!Ea&Dwr;xn!Zw;H41{Ra+=4i8&n9tzl7 z&kPZzdjRhS>JfZH97`BgErW*BGcVM|5ga0)B69MghYu@VajN-+X;!CCXCTJ_!d8T! zt}aIk&))jpVF>Y$>5AfJ2yu`U3a|tqhXthcLK25Cu0m?*91AZ-5u8fYB3+i#-tmYd z;eQPs9UXz9MYn)6V}&pn0e)?~A_#8_Xw18b=0;pE+)0661};{oekAv!$w{#om2!Go zo(y+pmeNP|X}4$us18yGD4bmqi6nCqpyUM=`s6onWR|G(AE1k#;KA6s^O@$Vd&9_3 z4brebU!(W@-8(0M0r)~paRGN6Cl#Y($dM#^<j2JoF2TV*)*d?^k4JizHvA?z^!1O0@piX?Yde z^_0&X(=+VGcG(4<*?lN9;eG;_52-P6Jrly{xePP1ZLJ4LQB!nldj2Y9&9a?9oYaFg9M}dO_qsL{wZH z7aJR9rEQ{CL{#bIB&L$@mz4CNqPwwG ziL{g?jrjBPPALs89UrLj^uL*lblAshVqV*o9KF+KpG+q(wz|8UFFY-_rf>J|-8D5e zhqm2Aj0j{K6T5%^4%{^pE645Q=ZDeZ{q_2I2+6WV~jyq~rYx^RGRVnELqbn})wcNJV#YGIGpUcwOOINLy1&MU5zVviIfICBO`{R8YOn2M=I`f(?(RHQ|f@1 zoS4)2Q=OCs%fmV;IVmZ0uAvMMRP1rw@d}Ar>-C1M+ln|UUzc`Gpf|YReh~*1O`&gZSz8FCZOfL2d&1Uo# z?A^|kbjB^sm6a!wexPRzVEC&BtI!I2%xI6%=(C-5{BE|HmJ)7s1cnP*Jb+8Ka&nG# zbsZ8H7Z(-nOFtGmRZ8JsHZeV|uBL_|h$4}Kyu4_q2vB;KnJFSzO0gzVo!Y``7ZV2I zy1KZ$$C&2e;9$imRlbL5X+qwmP!U(bq)Wu^Zf;T$m6$_;QPky=X?=ZtK;UxpQuR_n zO+;ooH9bwaRc*nosElHr1~uId$?53e`ZYf}1jX`HZgZ<#xDbV?+tIPnDhC$_@3%J$ zQ)N&$psP%%r}X$qNpnAfdj9;DBxB)i{JVFj>ZE8SDKcEajOnaq^pB1G$xCRk z;(5^h{rmT(rpL|JC}b?njTPH9Kft=&1M@8}@U3rZ!A(Xg zkTNk#SMb6d)gx6jr>ow$amak_7o9?66#X-caA66T9i=!KR$9)d>P+X~zk7EB14B)9 zHTa1V9?N1u$~Uk~kKeU4G+aCywV4t_ZdWkw6Chw;N5|R^mu$zkbNX-Gv?<=1#kkPs z`gNwDCdgp4C*Pp{)U@C8q^h=rsTNfKvw|5>_LW z6TH;lL`So4@TDmBy|tjkJ2BH}MEWo1$9Y~+2bbS?JRvP9Nw?C7TtSRoLrv`~EFmxj znC6V=t!n~K@G%Ww_Da7*nnn_eYabp;SR7`H+3o^+d+8GO-@7?_`vsW5O4-WAm8O-< zuCtM*7t1gF=UGC++;FoZH{%!cOfH`faJ8a<8j%#ezE)SC_Mvw0~$E0%fwUSzD-VE_cz$E zMvfB2BBEZ4wT;p6Pn2GNOD|PfRBGEs>e^+5@Y;K~p4h0)#{{9AGFZ{u@7;Ski!#s1S8(LrArS)$_f-3Z;uIkk zV5%9ZHuih#@iB=Do{fu&x^U*qx&yADgQ85lM?hd6)xm8W{Qw6yHBl#yVSY8j%l2cK zMRM!b8bN~zaGq<+4to7>zmE)hSs| z$T5JywCVi2;{yuu;}GXv#C(@uO-;0|yo|IIUTaonysY$SZ)3qp@-vUIE|gYgw;fga zn53jnq%}G^IPlPB7R6iS=+&hhV>Aa0iP1n!#gdfrs5e}7eTg%I=(Y<+BiomWX5&_A@prJtf@(U0@JT%TL|El3nZteZa{ zI+O6?MeoYrC7^U*grgi|d9fAo2_&d`doM9CFsRJ_M6eF$jg!PF<7O!miMz|kq-td~ zI6N#ENN{cNKAMW$^9xlsYrj`lSEo!#w3jeQX&^V^*B_R^#H_3>ug%_U$ZB>&eHX_P zzjb^=m|9F+oRFa4^uz?u0~LH+M@L79OFky&Udq~DU5WY9P=tiL5@ZQ1>j2Ck9I37{ zXoNQIix+q4eSf0PKV&bFK4O!hyJ5qIclrnTrtBjZ`j6b=!ehqDxNoRfdp?Z5wzig= zDF6sBl(;v!-WU{_!FdOo10!!@f;C3nKAm6wCNhNCU6kgm9R6cz8K(TIJ zDcZoNRT8yS3McV&@E$m($qiN;eBs1Z`Lr}N?xTbfTk|`AK)YX07dC!ft!SR}9=(f|_IXG-$V4yMTfuY9`6EGFHEvUll zHdC$*eB1u3={>JmM!S>QN0@u4mcMMH*R?I z1-*Gb9avK-PE7(K~RPp9JI>Nt?HWiDKQO&C2##t0R@H<$Z^?%l(9a7UH*|KG1f2(}e*vJTaqY#EPWmyClMtSaXPgP`KPE!7%=PcFw#IF_Z z0?je!s+TFK0u>b$xbs>sW#wViW_=fR8eAI2RwMCrc5(SuRb_5rf#7J%LpDeYP<=ZW zpH^#`jfe$l8B%zJa@a)MwJC|hHtd@mZk}^?896jOa*-LLYbTK-u?S85)(OOJ^mQZrWmHJLf{9% z_@P6GfF5EvB62?D@zi(E;1D7(R{SP`9Rvt&VQ!93z?7daJ=dpskPGMdRBD)g zh_LHet2Ayw-xTCi5KM5J6~BDhk60OTFzl}s=PBL?wFA?59gtj*J#~Iu4_eC?Drh5k z0^KD|;Fm8eCt&qA2PhrRGPknYyJyb;N`kZe)fWdB=I5V!Kl)^fMS#X5akR5Piy|V^ zGzCz+X-2E@>WaJOyDl8fiHV7jsNstG8wp;+ZpST1Avf@$m4i>_?9G?MzdyB~#z zub^_SCBO{G%vWDdOA8UKmbJCu;)bRn3NAnuGr&j`3NGGRU<-Qj=FK-K?-@kcsmzU! zk55h#vya5kzw9#LNNa0|z`rXTZbTi0C;;IqTID>c?78j7h<5*WXa5!gY=?#d*birtG`!r;xURaNwb|~P zo~|YR+p*`mGqMDQ_*;~8mGu`=$}_7>%tRtfOroNrk%a@t!+`+mk|EmnW_qqRSD2cv za#>pViZ{*7hYt!aE-t#dj|<-@q%68hapINI^7AFd#B@^{s3|Gs4j3oq2R2dCp>)Cf zfHrfO{-6;z=x6fsn6Dp70T$!*`Tl~z6fRy9wCHC?qAdPm=wJur{V&wpWT zlDHrseBfbILZ}K~m>Om)IrZ1_+{rIeFU+AYyhvw{@Z}1dOC?Lcl(cl+?~NzYjp>$O zucv1h+B9wu>R@{Px(MtFs9Sd0+K;sNx&yg}RaQ$xTmnCA41H3YxWa)yRyi2&J%dsJ z>K*H8X`up!5;>IxJ<=PL4>nPkp;S5|eIQ7=i%^h8|E#~HS!kHnICOQj$y_8aKVMN} z?2@_pyZ7($1Ky{wZqI)Vu+x`Y9!4_Nh;f!aKDT&Zr96XSPDofMcuh|*d}6{*BogTL zU|(M&jKul#dl+evLtdPy0sM@2=A@^7BxW|ZqabY}rr6ihiz z0GU#;SbxRJ3U&a+(njt*x%(QhZF;FXd`u|EXJ=iFfq z4V_jCQF(ssDwKZ`wO|(H1)s#m8fs}#j7qC8ZFrz!ZDsWf^*a!#gUh$zaW&c+ zNm|M6F^wy7n!{jrwz(Kv-P0dHKrNKqFR7b6r|k5*}r9erv##_ zmdKR3@-RAjcx1#K^9m3U$H(*hc9D6SBj{av>)xNU1Nh|j*U|#lsrGEuI)7gL;6YO7 z$b0{ug_YGiYoSC}P|*fpk*Me#T1)9RZL0qAg_e#^@l(0TH22`aWta9SSzCC-I3tdH@D>HsvMhzR5{qf^%Up9PsWsl!rdH8mi z$Ohlc!D9v%0e=7C0!XmC5RW%9!okKyapmV*8+gN%hCyVl@ez+6;UK_rZL`02d}Y-m zug((q3NY&5#Co)-QObiYgaRfGQKHtK_eE75wsNy2nd1&U(tn^({p5+Bre^!dNa5?4 zODIFaPNCe<>Na)KbsquTQ87Mt_UzUmTFgUVvb7kEZ zwUd6Voq4Q&$<1vU#ut+uP`3bml}B_Hf#q#)Zvvvgc!E6xlHq4!fo%`61>ygO)HlLh zBlse-&r!(ad!T|wxAyCK{c0)d{85pSUdwZ52TV*%aIavM5ii0T0Q$c5+OP!`Q<9qe zyDoo0Lc4eG9>6eL<%~llYdZ{G0B86|L+$kSBww0M#%57elkIzRfQ3loy!ypg| z!`J)OXZySqg{&$VyepN(%XH@5Zw|wXvCFvW3bH__1!AIzOcA6vaJqxdLkim9?v;Ez zjI0ZbZ+(#V`;)C279x?xs^418JaK`@08G^HkfNqL-n zj)(zLne!ld`iYi%EKXlGHa5oNVi2^R!G@BKT17^sv_=?W?@~?3da$#r^M?Ym1CICg z>s}!tz*oTm0baEg=GWoOot);ez1e#EqpJBIsNfIS=?Srpk@uq;r93bWJn{L{rzb!X zQP6rcT(>zYoVoxB1)7=f=6lLQNtr~gK5^KVZP0o5U z=#OBp}j8G=8X zNoSCDrL$)Wpu`V3cxfcm-BRTuF3PR(U&QTAg+yIT3o<)EDYv<;k4g#)r-Ky^c%r=A zztkAHJ)l~JK~A=fev6APnzy5s6R0RD5ey&d`WmLSy}i2Q zHaGqo>W;9l2uuKLw#R+9JbXv!h_Eo3EWJDr$MdJPmBc=X2oT`IXQ%4yU}dGb#O7+B zQ0IigEtqhC>tXb8mfz!QWoIK0aB+4*x~bC3sxJ-bQF|}Xf)L{jNXbaW03w$ScDuY)<$~bCd0)ibgMIoQNmZ@vW*P`9Uaac9;jrUSynS_!M%WhI?KcK z2G4wbsRBPe3<(K|jlFi5O`Kf=L|f#cmX^d{mAzozNS%H^YSwZu#W)O*9Q zdiWB5opv=?gFkd9FE4>*>|Fi&Iu6?fd2$mQMf~{mw9gNe)z?u_=nCp6EBh(Luc>^5Dh9R!1qW*C4}te^oGu84 z1B1llhb&R|!{hEdbMYLt9;_TNM_3P3y|P+_hnQH%BQ@pc=#6b?qJ&(~%hZ?rs&D~|Jl>^j6X zEiv(v^-=E)!)`LNaQ+B^L7u@Dqvk-rPhZw`_BANrV0e~%hrleh4f!Q}I#a;MOIg9} z;uL9Vn@$rvdEQ`1SQc`ayu7?9aEW#7yA)= zh4dLBWy1V+fg13bu7jq6XaUC)Gi8I6Nnx5q4ynHz8p57DSp+5Eu|hn!>dPSOlC}i_ zf$^!S-^HG?-EzVu_(7t|iJJQvJ|{($l#aX`vJWtq*`>D*)e1jvu(qEyx14 z-6RG#0mg&W6F7Ge@uJYkEQ|N&zN5mYrlGO2P~(ZW@&MEoqd`VbFfyj29tw(=m^F<; zq82zxNOFMV|W0iW5-GxZ;Xgrqp~@^hN~nt zAE@C270NDFUYS43h+H85=_DC?wt6=st!c(K;;xGEy7~tYf9lN4X^OGCFgmiHc<$F^ z=a@l5H(Pa_@nZ+?`sizTA^t4|0Z*i7;0$M3`sEDN{1t0jDLD4Vlo^+@%)j|RQ=Hq% z37B<3MMdRxe0QY!Ppcf5wf1eV)e>*hd`C+Zj2$17R~Q9_*Hf)z6bQ@9%QL2H!_^YO z5JSYOe;_wLo=m!u$5>z>V>UKvWd-7t@?z}t?>uU&hk@l%T=s)G+Prx)BK%R52>Ecn zfu`r_BZMu${s3kK7Sf7?#Ld0t#HnMTn!&Ve@D&jjE-@Ac^Jp_OGk!U;kYNs%&z40R zN$Yme{ycszr2!eC$0pkuc0;K(UUJ(wIbYOS;;?U|?m`_MG-1X3EK{!rE0nbNG+jEO zs(ShARjNGk(p%E^@=iBReKaJ>&8tCtTRxfD@Cdfj74_Vx9Z zcTKR_w67O^v{;4Rv+boH&Yl1O1XJ4jRM@2hZ%JHO;|gxlo!B zi_|9FhB9eK(C64#&h(-RV`11I+PB-Gsb6&|tL%5MIzJjCeDKD{0m0-(MeXn}I~Y}s z(2737gS!{*25rLrebqd@`S0IL=u6(vl7{g|x&eDuQc?mw8+?lGH)~|<*47(O?CuT^ zXG#Bg=*STWx^Max8Cl(nLYttsqp|TV6+T47@F_6FGI0#EO@QI4D7?z#w9^_9N_yLh z?%WBqhMqkOO&&mIDtoKLynZ5?Jbt_!wPCy=L}$^5M)$A?T{u1pJZ|}P@{D*GNKGSv zMX--b8Pou8Js$)3gY|1_()FKX=r?*25+Z!`=uKSukmLZSKQtsV`ru2(ozZ@RQ^2w|@^mjTKMTK}m5?n8N>M`K7E3!M~DbMF>m)WreAY z3=X0=kAB+I0LRqSFf*DiJgrp~m0D4O_yf!v5Q$C`&K9K3(VBrE#s8ex+V-i15>?oX zd|*d}YR@TQe@Bk{Prf5VD>d~kb$)2(c_2=(%8`(k{tGq>+Htf~8jRd$w)S)Pr$0FI z#|`nzyYkNGE^7c2NlUxqBA_CTSRK7G9_s4%u;; zj{lB+?LFGt>qjr`ls$AWccWdC+^T{YM`yap`Fl6MxA@lb_=}t_`74dW^`Dk7wZ!rG zzUMBs{?#Ts=f=LZ{kC^~D5fa?9l633Ia?M|0(jXin21vMwrjPBlEtHW&L zl)E3Opk!xhNt+-#+}jJ1DuAH6g;U&&Agh-C__>Cb5;kxEH`CH`jd(0~R6;=kyWuZd zUtK{Y9sn}it7vX>Yb8&^To~{A#1m6}sj_DhC;LDI-G;MvV$skEmx#H4akG~~yk!ol zy<)vV&H-kEL%<(OLW<4QV$p{^%No`_)f6aMeH<4DCfcEG8@HLQU&9$35fw$3X@mml zWA$F7N}qGgDCI2=BWPJ?`&>^C?KS#PNdy-p!&-a|Qm};uXGC9!))MNP+S-7Jvd6yj zG@K67s`>PZO3baRtLteLUH`5hfBxLNxOwd#SK8YUo5o>9@%#ceRfr83&Z(r9befb=ctM|@o` zf==*KAE|-PWPqgE*!ZcU#V_?apB=F8izQp>2dG4S`=zeDUTLIr&+ighE1E0SOYZ2 zdgtjEy|!$4g(Xyo4}pIQkrWqiM*02ubMwoW*9W>FCn)Q9_wL=TBWaHwF=sVP0Sq@X z;$mj*)|6%(UQg;S$v*}_=7D8F=Pk^bre;W)!IllaAB=^iq@=(fLi&ti3XsJGw-u10 zumI^wI?Nl6#cSe;zkK1W~E)py0Y8H3^j=~r)h+JH&f zmQ-vpw&iF}e!kb>)nSSjk@kFkG24Q}xcEOAPMtbcXt>&5x-LM8g7Y<=3oJCs2l+B!NSF~MGy zxTF4sAvo(UaO;*Ji89|PLW`Uk4t3kst-c3W17V4mmZGXJO*?rYb4Eb+ZhYkV!j3nb zx4E$*PoJVt|NO;^SP6#>_0gXm%2BS-P|wnRjmRAs*tNEz7$sg4S;5=fUjR@c#=CMQ zB`~lO)CnL$V#W6!fFTAl=}T=Z$SQ!f0%$F`yv)O@L3PnD#Uj78zPVYIKQzPXnE>vI zo~j#49Vl(RwH$Lid7P25z7g1;xd{B@$4{S3+Ju4NwzP0;k_6TZ?DU0Z&Cv{d9DWxU z)Iq(iY;-l)n!lH>cL6z`5D=tYm<@l?t+~3oPV*eX-vML>*?OrONf(A@=BB4@#iEh) zH#eVm+8K9tpsjd8Cbq>{zT>TkCI+C==RZ6I=iTh;fCgWf+2zDJPc z#?$M&Iy;#d8P|M093zd?%LN$L$vwEz5;1R39!DOJE}4DRM%yisdfEpd&O{)AK2`o* zyWGKH-IgF?f5$6}UMFP+oYf|P?`0G{Yv8&z>0A^62Xzs>ck^y5xO4%>q}hU4wrz7l z)daRORp$in1B~PV0}ez`Z(sWGZ*ad5m+c%It1%W<=Rc#Thpxuo=~A;X&r#b44-3At z>+>dGg|$BgG4i43y7=cming5npb#Lm) zPL!a1z`7zN7MHT5NY5Bti&_Wrd1#^>h*$zK?}iwAfYR-jwk}&S6rT~2K#&ex*gUYm zRQNtj{#l1d0ks!tB{(U|6{kEfcS>h(*xg-bYzQ7?ohN-Ndq}AQz4|BtQyn>W@cZVZ zYX2V`%K1=d{=)CrboA#1<)a#fef{ZICH`~ma`%#3*FkPw%>HqME$m{3Y`ALw*SG(Opi@kk@^27?%MN5DwsS$zO z3b?0i2Drh)13{N;xB-o}bgeFfd7~_K%M?{ z0{e*XPHP0wI$Fk^?Zk%}k*Uq(Az+x1nx};O8?sosuPpSr6t>O^RbRRRSOA}v(H(^X zaCcvycY=ce04kVw`FvWjSd8pIJ2FT?zix)WgM-sX?k4>hDH0-{T@A17feA$|8kh+x zt2pCdtE$|f*pM#hPBGPBnSO0H83;;I7&Yfji+Y=6sPLq5xIlKi&`XJ8+a-2 z&Yc;w*xHy#TCoJ?FXxVAGve}c~1fNc-g zfK+tbkdNS*U^#9S=B;w{oX#mS?~8MVeWCX506?ZIQmpezR9t*L)47apNt<^IZN4t} zs39F2d_Gb+RAUU|a83T8Kz8t;9l0ix;~k1JaW*#n`{}X;St>LAE+7>Hbc4q$nQZfN zd7HQ%F*uGe>18rG9jp*vRZ|1vw>CNKuv6p==qeuo(R*lyEy%CJ9O)vMLwD}b%EWo1 z)O@dE^5sH%h^2x8MO@7(6_t|t>6;I)rNsLCA2&69hTH&#>vLahstdq-85u+PDZYn@ zKh2VvvN{G+3!D+F0yF~_cJGth?ty({g~&NK_+Ce2c228ndl;+=s!Zeu;tpT+kF78t z935?iAA7>7FLc|bJ^dG;kPI$6-50T1$v7`1j|b_DQ}ExEg+DTWT&)IT!y2Fj9I|QP zTU77^awy$e49vGkSnuc`;}ME=x#G}tG^aQ>xus>St?h!}$&t|_%|Z87I{STIV^7*k zCcfVSU8Xo87%R4NUuI#c96U=j2T6*Gvi?Il$kCCo^u??SQUgTO?va>E>i&_DW2Xet z)_Hq-BSyO-@o<@a0G5=GslsGT(iO2P;QunG*VoTlzjnb*N%2p~RrPNTOp7&4^QRoA zZ$PUN%G9$Tw)yu80qEbqzxhPO=VzSDiyW_Lk|ebmuB|wxA`0UVt!OnL^`i)B5Xk+)&S~n&R3k?JzxtD3@<(Wd!bTT zMuz?z1HIs2X$OM46hm~=p(up}YWeS91`dhr7iX_i%Hv8A200*6AX^}fdwrv9TDw>d z%xc`J03N6uQJ7Fdw-kqb2%Dk>Uig(e?g-UcIQZ#)<>^(<&GPcUk8}s;2RZtxPuS4cI{dKX9y-| zwdFAfu(OkQIeQ-H`PL1`02RO`A$cUdr@7clr zA+^eJX)d6;>Fws`#vLfhhz-FIJQ%o;N2*!P%c#0)>*%11A#9(eZaw-p(aZuwWgo+h zg84!DsIwj9IKe`D9 zyWd%8^Cqxthz(bu3!?;HyVLA6thr)+zVp;2L&I25;#uUtaU)F%OaVUSUGnw$ZVT7d z)HZ;L6B+IbTuJlq8dDFbq!K+6X=ws64;KSR080V+Kw5BXTbm~eV`wG#5+f@nHc!+( z;7QSHQK_U{?O*SV^Sw9~x4Q8hgCRe~zfbY=IJOF>dZ`jDCvQlNpsNsVOA!YQz?8Gh z?<7j5pb+jfxD^TjUbzfP5o4W!^xg$q-mJ ziwF~u9EwvgXgK!ZgJxglV|gEnjq|jt_nzN~lUa-HnV3s|Nn_W9|8aCImYhj{9DGdr zi)T5utgXyxO#T}32J$X9CR>+A>%F5^rKRTBDP*tQURQo%U3pT2Ef!!Nkcg`*uy``_ zS5i?i=?5Zgo@s=833W)klU#1_h_!hmLiwi<8HE`Ki+fXN=|Kwkrto`Z}?tviV zBCLdxl8;{M3K3ut6SG`mVVMG>z;@H z==}rd&RHr}h0g^-L4*VV4FXj9*EnCS&$3v#bgrf%iiVCDTwdPW=q++8z>Kh~kX%8x zIZ`~@x98U>l#5&e1PuZ{$f3r!fv>i89)&5zH{Qb*O`?7-LaV0h;nAig+E>ip>40U)(0dOj*9rpH#S zQo=7a07ZM8tBx7ZJ4&YK&o?6q0l62N;1%W+eOw@fb#^{O-Li~A24yITm;(S(4ksvX zxi9>rI0IJ&88mE1)H!LHI4;aCFK?vHm?cKHa(0N0nSb@p_sK{s&!(n7C2#D{kp}X2J;Az3rH#*L8p7cOw%tsrz4H{wCaC3mwk*l zlmC@P-{)bZ1;h2$P7OXLk5v5KJzh_!3_&`E{` zG2K%jDJzSH*JHd7z(!;WK(7?y8zeAbk01x7cjbIs-J6#u4gnAt<$(cb&}Dfa2r$yV zF)BU~rpEEcP+S#7Mf7uF({W1R(ve8RX@gpgc-_u!^NAbjxP$-=VN7E*8h`u%L^9ab zbp{;X3l{D(>U+NM&gGp;lw*I#Ao(Zt6s~zf|~WI6+A z7AQ>kH_9G7$P-bSr+*Cw7)(8cQs6bfpF+he!~RAL+Q@$lAacaxpm_))SXz6-;OtO` zxaj6qQ0BK?<2&pd@~;M~BTa3j9bJX*A%;{#OsE%}K-(H`Ic|WTop==K0}(`IthSbs zoqeOuLEL+wJg84zy?ovk{8{Mfz>c8`|1^mzQhj!O{L9y`6cx(!JS>4ih6VjyUEbkS zvokY=ZVQtj*QaM+cX)_(3w`(yAE*#7C!7BEtqwB3fs71T`tQrwW5yBS4yfRPXks6O z&6Eb(Qr2O7`C$iN%coC?xw)*b9VlkdhX!{zJ}w;2auOtUwZz`;Zp$3KbWvsA2R;fW zxTfznQTwByeext42$TZTfdimcg8_6Vd2>g9y6H>fpTg>wv7x<^X|am`7X~_vdR9h$ zeiRbIZ5z`sQUJbVWoO50TOVfI!o)OOx1Z(2sZ+rf=5QTv_kY2~agqX6T^);0xc5TT zZxcZ_iPxkxWDWd;EdW^tSOnU%DI+R#9M>XT$317K_pdO2Hj*mFeqSf0y0UT~Xj?%+ zzV_@fs5x%iW}MZGvo!QHVG!`$;r4i~WK>ttH-HdDA>I~|<81%iURP&lFF{nNaJ2u$ z-C%Q)&mS$=KlF`{aLp=x_Ufjhw6DAlh^P560d+uI9Y|;|`g! zwOF#3Vv;0FNurQOSt2AN$=0IMBBZhwNs$;!i;|E;rIbXJA|yqqq@*T^LR8Au{rsNH zT=Tnrzx#3D{V|uBYo>F~_k5Q3`?bBrt{X)?0`XjDZ%+wb|NcF>LGh(gxM*p~3v4wZ zcCq=t-Xbm`K|m+LOm-j#=mz$T+VpuOxRbBo2v0NPetmkj&$hwMm^z2(u zSg4_+qbegwKcd4bsDk5|EFYL#eM+^V^*gd|Zd2>EYbonTtEk*n1jj|t#B!UdyX-T( zB~nQ62L3Q@;wMTToO4$~sd7zvfGNgi=nN7e(wUUiaOia~xG2W-;Cl5pt0QKeiSu4R$?j`Q3j_>W;BPH0JBBaXyqTM2PveA? z6PiFDtO8Ep=SQuO_i&NB-nBLl8!00R^jnZ3ezHK{%}vul*X`j(fe^kd_1UFKE8ZhT zC~EEtMa{El`Az>>hGseNBna7o^f1@JA33_(PM_}mbY1?Jb~_8G}3bP3Z| zrPe=`^Uiet+8A@}SP>OL(X^bW8_t!F`;5$s+mKg6CJrJ3`Hira91CO59?KV>kAAw2 z2m|U!qj-j`CLj|9ILW9l%Pl|LpV_PN#av_K6Z9crVYpAgS+1nll+Q}T zZ=G9>?i>UWkdD59E9&5x{Iwh64!^~XG(I>m_R5y0%k1>x%16e^hvsc^eRFY9`uGkn z$7k-WI@95XeWH$_P-Q$Vb|)#{LNt%do(h`X*w}XzvqO$-Tm(!>r-42bSs75C=4aVy z2QxFLIp5FD%33`bN|DutLG)O-EEI0wCKuW|nJ7!G5rq0o)PSF%J(zZ0e7NUiS zaZ_MYH@X!B5*4XRn{+xZA`flMq)Fe98j1~nQ?%|UMlTXjD1rAXua5IO;BeVvN&E3d zFD>r^d?W`G&aoy$m*9D!1>f@rs{?hR$w=Ybs8kCVFQQ+_$<9u_ zdKJtU%Z{)K_I*nCdb@H0C)7C{&^sRvsBk!g25$e}p7^L7pT+6eTSX6zH4ed$c4h%$ zC{&jRjfNF0%az~ybY@{z)=**q)~|nPH3ro|kHo*OAYFQedIi-zm^DSJ(UH(aH5S94 zE;}sR(CLfva-Mpw75;Ya`737sI+1oFS|2s4EXhWC*AS0%q?Iw~>ybYc79O5;h5)jQ zX5B^?Eio}cEoMeo0A-lHJ+K862mer##e&a+M}64R;Hdk^z|k=-?2UH*NxNU9a_E96M}{ zwKayt0n-kmQ(((Nu%N+7UTVx0@k88wO5o|!r`Zx|si`u4*3y;Rckn`MYvrX@nTqMmA-5W{LsbWCl^NPN)eQ0|y-|f6)OzBq z6DMy0jGz=`M5X+6-CgV9J`h-(^|0Wl=SUc!+>i`&_k zhaZXOhabzOZk^6WvcrQ4G}pQZjI)VK_NuYhFCR-c_s*}Gbb7k7v3wx^B1eW|CxuH> z>@ZG}ePE(8H9aKx@w5{PWK3*%t5h(tXl4_nx$w)hl0BLqP`spi#9#0L%ngq8ou8iE z@jr)1SEFG)IkPFg2JEN2L0^XwnAQNZPLJ;0*U()n#GF(V->pA$-n_nDck{qVEM&P* zCBjqIYoLOCFZRWp9U9B0|=kIaU)KiF2&v3;&4bwd=I|8%5U#pvHh=+;NDwv>r)FNK&utL zQ-`#0Q@FdE#F!#40NHiFF{-PDuK3~)M@;i)@;05D4(17XOnAJ z_3EKBzM}jwX_{(2Tznc;NTY}D^{G7s_3!uZlUqnT>1G;*>YSe?pYo8#p)GC+&a;l% z{bWqYzd!r;9RgJIrEA)tP>+XyI5%0!HGQ<|Af0^h!+c#L5U$^c@j9AiHAcY6xZU22 zgae^Kga$+`ck5FZK%d;ayg#c)t}jck;Wi{nn-1jY>s3BgfK z<$LmTFQNA5y1hzN$O^ml>xC-i_;GZ08;pddIDPxpr%yIK7ByFmMNsk5-__L>yXsBBh%-Al zgd>>5uHHX3(w;#(5)as|Yu8<04s{^V?;AN#h_H}D-Pw?Ca56PldiTvWaP2j_Ba23?)0>L1tUlgRz9$)n(rc(<)?Zhy{*iag;Y zAt3=c!IeMu{pv|GC-mzMYV{^4g9;4EDQB~bLb-z$+xtn%7XZ!?#12YI?r{5(*f~x< zPQImS(ZXMw#Zso};P{ZXeX+Fsv5(<7`58OIg=&*Z>g1E|yM};)V<)Cm?ib5h+P$FG z%`}#y4mYu(fx(V(l2Q#6YUpE4W2r#^l5m~yqt?g?g#4!Tes_vSF4rg&B|(dq>1NxB zHfh0POY^gdIoUh<5y8P|E>|S)O*rhP7V%N^ z(F8Oj)#F{1(*=*cg+hb#=i8O7;&3CKF5>h%dGh3uFi9lPxpuhzP7N9i`~nZ61(A<{@j{qowopgu}19jjOpe z+G=5}uSB=@7o8;iYty?=aA(n+CheA&0ZPhS+L6&1H{2UmK?a?-)SC*DLbbkeW3s90 z@@G?=u~-q^xp~8eUXtR?Z)QX_aA?7cp<7dvi$8K;$XymDHa(2nP&SF_U)djX=FQ7m zC^n>#3YLI-OhA%9`Ye`S)n0#BHvWRD{y|iy*B<=s5IcywkUhv(p8J4Mf>uyx1xW3v zN6)6Qv~ITMIbkL{{rDE=0co(b6C8SG&mw=mZ2R#N!>W7SSN`#%^75ZJN>0qZGAEsS zHv05wY>w04;5g!bM2Zetc=Bv>$eX$6CB|+~;u37X41K3^X>6F0E+nbDpW7{QzWL3- zxboZqYSh?`nYZqo|6;LYvv*E=yRge`(jsedIn(nN>b?$! z|2B$nSTDPR5R9y%s}@o&)u1F>xBftMMaMl{S-Ie~=`T<`f`O5Ah6v&jUOrTC(83t8 zvBdO}vQB8;9*LeD7c#>2XWlf1@0@N%gh#Wg9u)BOrXo5(%2HQ$?F#}T3-zLuP8~w? zs4l=mPs#htB~NV5S?H&fvv%G5Z!cJ|;FJG~@0H}^ar6K;rnLFzR8eob_g=bWNeeM$ z7<6~+DADTqx&h8!x_lvX0>-MU?#r`Yk?z5ajUuhxGVK7Q)261d>svTs(a8(%Ykd=E zw*0zRJJ0K)CHs>28;frsi|fT(-M;@RnGeD)!cz9>bGxd6zNy9QhS4y6nbTLVmhc^+ z^xU>T#l1 zC|X>ap0!gCGkYzP?rEF%-~sp|PaEp_V>@34dO}9pnKQdHt<;vyvh0OQ5-selV^TAR zJ*GrHFlZue$wFH8`SWE(&P2q~oSr{;pUUrH)oR_+(7|)Q(Z1OwFJ%-22I*CeIEecc#(Yxtlg@z(9;8ZTSGdK%Wap+ku$J9PN)BGsonohR#(v!0F=1kNG& z{P)iQ4j|72nGMlN90AIQyUZSlc>aFP=c^WROVseAKphZ7!mr_`;PFch+_yfp9d>pD zb}rG_{`6Gq$hL2T08E<`DE4SX_uAmD<{V6b=ajc#DB=iy8{%*UQm4Z zA@K87*M{lZgIu5dHSEi~`02MMg?;Z<65@_LO*!!x* zw$HDP(L2h^>(wS04x9T}er~Jj6~j+?otiJakl)s7mA}3|=tW~jcvI=nEd^m0(`WWF zIzR$Snj35K-kLCz z1FyGpYQma(J(0%w&0CJ7katAj_%}L^Xn*wi$hOHc;qA{{0aTvy^V`cdDTHFgxke}X z_F5ccDpX@;vBH2FkKBX!?7 z$z{lEc9XmO#bIYjMTZRQ5tk;7`dc`}thRTAehHZzVp{*2_uJ?ymZ_fIkF1OEz@s58IHpEJYDo)5iR zyHj^0U%|@;f6a*ubT!lVWb=e_dtlhon4Uv9tKkZgF`E5UHNXG`_MGWmNGq>HmgD=ZylYkILT zylFx=t2qWAuKcY9kPhiQyQGtt*l{V(L6NZ>%0MONNi)>ssOZ@JpvGuXjWsrs^Np5| z_>s`QAnqJQkjsU*#&bS@`h>c5l$<|pWcu~%pi`)-6W$$vURsLYf!Q8?!UjrHHIiyy zgY>bg3P>B93<6q7(D0BnsI*F zGZ{V?@wj>KpVH0e?4@sdCD`OQ8?E=S%D-P9G}$&}rPHc~f}@hJPN;=EJkS&O@4km* zD7=miOOBI!4+zh^j5%M5xSR-K5imJv=|HsEbo_P2V}a8MQc-g8F_|^%etEhlZxF-` zUS*ty1}a7hgG)0z6GZo!$uZ(NmZUq)QC@c0HYhM~9_;|U8qG8embZ5n@Hq9UFe_+I z*k6a;2PqPy8i`4j7};EBh#8w&;>eNRc|8OPpRv|jOE2CQA6#2P@ZFP; zs-S@4Sw@LZqP0L&u*~W zlkT_w8TuILYNiJyC?Ly%zaz~+PTk^7MFlZuGQ4l6(Nm^uC-!~Gen?9lov-B5K?%Yk z-O<)RhlC0*`mmmgK7$4ihLJ-usxxjJs`850ueF@YCwqC)fP#XfVpPO7h`fM=8lbCH zt58N_6ur}0*=NcDnSFtQIT0p}SDz1EpjR9f$6FoYDB8rvYTNIx?%w<&pucP362fN``Vngbl~q?)KaxOWe0EX`u3JYGra zVSX>}ong5VV-Kv*E6xh^*6sFuD1S;?+vPIo@dypt&(oZ3_znpk?K zQ9{d>v${Cyl?UTf}eCVi^MZ{B9HzxO1klef)TR|i9W$q+?$V9wCgj&h?F z>UQexW5Y}HzpBrNn(J-xq`AnaL%)B2TnS$iB6uTS2Z)#5LR2#5PUcgm{%w&|Sz$4UG-X&Ifa=Q;5AM zR-ZlMrW2WDdvuiW1m6DZ3H)@ZI;=jg%JnLrkBbA#HrUw_5e*YM!AWa*p06||pOKNR zg9F`QUrBL@Q+gAg7^Sj7rDP;WW4h&b@*aNk&V1#pzTyTEn+da1{3`gOYHE%hIs_Q& zKG~A9jaX}16`Sj>AA_?q<%^R{DLCZojEm|Qd_6g{X|;NBC(mX(>1jz*AC@O|elIMB zoz^$wGB1-xtJI`2L}U5lG69K46n86X(%bg<}O}LKBj?z0Zx`YEwZOg z=Fdkyu+__p`3w7|m{u1CV8Adl({ukQ$dH#@+Lcq4r@Fr36YpaB6AB)AUfT4sVWL-M z!?+odApjBR4y3E9+proWf z!^%iSU)@Pt1||GyqCH|_?$P!!F9ccC=y6ib8R2K{OL(R@O5ZF!^WTd>cjVdcW9A8X zTck-#_r<@7iH$4%Y2GX95h6ej1Vfa=WRe}K=(C^~QuQ>PSjTdOO3LBOH%UcmIuP0;WzN(jK>;R)$KmNh24g=l8C*~hR%dLaq{qv4s5AD95D1-im%Zz zX+GWH=hrsAJ9+I5K1Ie} zN&^=&Mk2<^5L;w3g49?ZWQN!g5YI;_5{MXGaTY;0~F=T!X*`Fq0hNLt3;E;#*lY+qjW+hv=YypCdG z85a^7wiq{hY(>?|B@Yyi_KCV&$m(hm_cb(-WZc&lf)aRiM~sFc;p1q=JOPQg<`J)IlpqnbY9C?D$Ad;U^&QlpLJS0Cf@h3jO-Y_}><<0v1L1LqW(} zavR6Th zHSQ1ZZ`kZ89i%QSsBf1S&!4|CU&45n!UkDk^RCN(7`nS}rw5|@Z~sgCRhk2c@@US) z`d5u6l(mJA;9^{ya!XhIhqqTL`oIBvB+8Gq0K~+1-ZNle_uuNo#$XyjNyHCH_IS&w z6#L5XY>O}Wfm;Eok_w29hna8)yngS=O31HEJyFVe&fAczn_s|}H~bDVDRk{c&!2xK zB+BCEwiBG}K6y(6WY90bU8i||S(>ylH>yXQum(4P@qVr^vUH(JqkU#Za zD+%ZQ)9@1$x-s`Q=~i>i_)L@7r*s2sJ(^k2R*VKet4D927`vDZ?&T>C!E~~P?%4E1@$w-Qs7}Ej0dVRiC$y#-=wOvB&s{R|CQ)ookt4i{s?VvcD(zg9l zJyh+xd-qnP6kKpM&e{-U=rc>m6qK%X@hJd(6bftnkQdFqp;M^k^ES~A?9E9^Ohjh} zoFk)8t}}@LM;f#W*PNpPAh)UcZ{Z(<9M%- ztNn!D)}@r%eRD>yh%vRixlLD5G4r~1an==IXHKwYhrqwiN(kNeTrR_Kq5FQau89q2 z7H_$~m(#j+I>P*f)#LE@(R|Qagk1`E;nGE3lydoU_MJO(`)(((j=AKj$8w{+nmPA@ zM@E`mIIhl;mQv8OShj3Zb&|pTd_FiO&Ln#Nf0~B&oZ~;sp+41ys!!7O5f%1lgVY@=s%EXDreTk{lNqI*K=J6K42&+NS--*&; zkc}|I=W&&Im6g*BPi+poYsrQQqGnY18_yJ*=Ci)WLt1})c^RR%RcGv2*_vy!eXtGr zqKhNV5E)l?%us^IrhKc@P(Q|#vJA7^AMG#9K_mKw@j_cb7hKW`zYHspK7buT^>&w(Jg#oZ3MWTy>C$~NA&vG1_Z0>Y7V1ebaD*PhYm8eFkY4)_3h@I( zLc%jCaf00~OVQ)B_Dp#WqZb>m6I zJkH~|*Bl^VK3r0N30i3`myC=Ij`M`8DKh%Md3R9Mta{%!BTLDvB_^Ud z6&YQ>?%E2KW9f0Q_7Dc_#V8hvl;d$5mHOq3SP@;A=Uz3ec<5^BXcqq!&MISR0fo@q zDq42I>9s4TE0T8noA=nLbRn^hL*phzFyAn?l2J!yUCQb5JXD=~v&rK}K=ld+zEK6j z!vZFhGqfl>Na^y@`he-b3nRa8Z1u$4z{HmAq+Maoa{RhoR(K1-Ks)%a2m+)_ii*Af zHGFcPT+24lci+~(;taE1OZPc7c6_Y1=J|qkJ9T3dea{uB9lY|T za_1Ifu?*{kv>)BJa9p;uXb0wyGWdZ!C$z70RDFwLhVxNxd7XU2NSweyl zGuH{9Qbgb;Wa+I5@%MNzF>%wfE*1Unb17$RjORl$p~e^oJMrw zn10 zznc!r;2ld{$u&NVbsCXRKf|a7q>8Ym^lm_BTyBT&$Q>s6@wn3BP0O~&Mm7!iZFlQ~ILZ#e37bUf~8AIl{yirIVU^Y!!)&SO*GfUpyU z4R%=h)2OM$szu}*N>VKo{3(p5#$>a*q`l_oT?T3zDxX z@WfP$^~e*DKhK%d{o(apy^zL}2e%Ao8pSe65lG+%YB>yXeKm|~HGC~M%GtHT3$LL* z!IlH#8eo?Y;+321ld zDipvWHx#M&0U_vr*;B%JJC{4J!zG(78gvMD4dsqL^0Kh7 zQ~N{kJ!vlHDXDnvGMhF@Svdb**E_H}&$cc_sZY+9@_}vILlNv;G+UjE;);Y0Dqry_ zIYWIk2N-YPezP_QJ2z(_#@L>gTc053Te{xKiAX0pQ{`A_05}ewK?!f0BclNJ%t#!dDri(O`#Z~KbVt? zA`N&>nDymXO4@qly>QZ*7`Li@FEe0{8pqf2G`D-ZnjfeDAR67+0!Uu05yfG;bdRuO z_B~I^0s#s>I-*SNxU7U|%S^T>u|pWhaAtwu4|h6~MX_di!5Y3+UML8mxglTAF8G+1}_k*-eb&Az1UBgDS+dx)#o!J6E|MVa`7RlaZ)hQb23K=jWuJJB9;1aPXv~5fM(70Q3mN zXwM646BMw_Z38*(b^Wc3a6UG-)`T3R6KxRM7%607>=8swtR=kzH_WZANx(@H6d^?RDA$8mrnM6su%;U>2k0KQ7DY zib>2OL+mL*m!vcj_b!eBhp+QS^xhY!_th4yiMYfuWO9lT`Jg1lfk~rYCN>u=6ktxJ zA6#s`6DP!YB}{l!9#Ez(kQE{FkwJb`P`3FI*Vm=+wuH! z2q8XX|Hgs1kzhaY-N6}Aez#Zc^89N=RdGv-!Jf?qk_i4$>TS4cfkC&>8!?i2{NnRC zP;zqz%FC0QP`u)_DCfg;sUg+IC;ODPFYr#cSYZLa3f}FaPoBN+Vz&T!EwjdqsbH2wmwPr zo%T9UL-c;qM+gVlk<1U9BA@P>apY9`Y~znbDuThOE3?T5{D zts;ucZ+3DQ#6@Uxr{w&QAwICCL<2Ei4w9TH4Gr!To8nFrhb!=<&@vXoyK%FUvi5t= znHco4uZ?Js?Yf(lDXH7xB^PN(`yHeQa`rL+`N_APOeX%vKw2MDIZ>bbKBO+jPWgd zZwsy64Z1Zd1^Nm9y?avujqrwLu3TqyhX@Tv$9f6_{$D0L4Q$7zSND{RYvV8=bT-wc zidFY?9aF^YNxf<~`y{cw8Pcq<6AJUdQ67bGjoth?v%?tx3w%BZ%IK z4G-MASC|fg1|lF}*tRZx?xhl_gNhzGG}3n%XaLphRhJBu6#D^#0KAH-15BX}-&;RJ z1;Q+6=bs@v57FnH+qa?1SqNx$k%w0DR$>>D!DiM}DqpTKH7kP!D2?lNi-YX&JY$K^xWHDTm4m?F&) z57ZM_DSPx+Kw6?uEt9N`QGq}jL4ffN{qhagnS1VKv4V`b6(%`)YHYeDI+^E-2xxAp zo)s6mh!uBtn;kD^p5VWgix_lCWMETOSAS-!Ia>LE46zXWN+go(8M+B>M%Sxh?iR|2 z(ToiB;Q;3cu!IuLrm2WG=qpnx)J?r68OVxwhv}#P0q2CWM7Pxcz=61!n8-)ANLt8v zVdpZX)_t;~;ww?@s~3@9^BLg`e0I~VN;FwiHq#`prluw=QKNT0al&}=fu>Rz+eeRp zxMvMJL@$iS^?M&R`}R6Vaou{4P3xrvE=G2Iy`sP?tgYwvnLPd6=6D8l2@^<3DA%_!~+{8(foSt9y%dM{LzE$N|E?I)lA3wge>XLZJOou9(JdAD>e<*LhjaNVB z36m}7zlizUWMw0)BJHYd>&tmLB!E#(VBG|9XCk(2uU=IZ6+4W>nlyj&j^uNmI;9_D z3UbD6_nUVEDH04BJbX9_jV-~cE32-To=%Sz`U8Q=Htgd$4>a{x9W(!K_!bG{!fHDJ z9w1rxwzWwm#Rm%}%g3KQxg*b-kjCrmC1z8o$<5o`^pcvA+tu8hX#P9OJ&Bd$Ka%Xx zLzkp&f=#X<3zPHTZTx8RnRK8wZpxoOw}Jl1`O{+QpChtS6w5=bH9|m*;0LH#F)|6+ z^CTlN1tZbhyVJwHJ?0&Y2OT65Y58&ndNA*LlzbpwqVZ*(`OoX}Qbb+)ykqn1Jh}bi z>U7KM^<&pAVml@srZ_6ukYsftBVDKjP3kVpB$t>l0GzE{5x7+vJ<=)3rVdGUe$~hGl5mZ%CS(4@!gEoRGcN=w={V2VZq>TQOe2LF&p@s%FBWzWrW%kOywE(EZ;o8;Y zu*+?~(?1UE=ga~-q&~pZ;7C-XbU0|;(ewnlgImu!voy(?WcLGm_tIGNtFh2C)I<63 z%HenN{5g)v_N#(;{=X#xtYh-oKti?+n*XBQt(xY4K~Xq!i9df9K?!E-X?D>JiMCWQ zt-<_T;UyBr7alQajkit*^r@j?=G?h)@$rI)92>lp6ywNp;wtXEqBr9n0u17UX0jqI z8&hpyM8JJMUja#4;G>B;6l9Da=4*f0=W5@;oP3hn}|Mr{m zuwi&GQm$NC-IgbCNBtrazY`IN&WoYL`Nfl$MeEkh>(x%`&!r|hcJN?DZLM8%XwIH` z;)A$pv$qGs``>7!x&RDQ&U`xy@Dh5 zWm-Xet;{8TmdUb^`(T6FRlRav@mU%6;YhYRgzZ&Z`#aFl(x6^rv7v*^&yCL7*4We} zfX6r$(S)uYR}$c2;KB>Xo2rg*%r7fD@j#HV+|<=HZly;N2L%b*kD8@a!jtCr^+|?( z&~+rNMGXMHuA!;fh~x%+iGj{orZnp4to!Oh77DNplpM>JYnj)MF5IYd!cOKb0@{~9 z-f!m3a_xZGL(b0`Iiz=2VE~-ow(qHc54gCEywX0=uuU9vpu{EjxiB9q6HNC^y|FpT z!m#c%4mxw>Kr=KIa@ zuqOKK@IA@{uw>)xUv$==x`$|)*Oi1msek@?+TpYui|)J`&azYPNmj{!AI_GCX>Vw} z$!H;kzfM;DnEjZ37~q4nBl1}|EHj%A$W;C_9K60W|rCc_qIea%l98mQ&0}>WwmN@Ss7%dQutx|KR7v+jR6* zKsHoW-{RmUSFCvGWO?wz<3Ibh929{Qvqd;f)MedCQ*0M}J>Crpq3n5-n*jBHydGJc zt}LnefAHyw?rlT#F#{1i4Fm&3;(GN3A~oL8=w&GZbBDWiy!YtQSQa2qIMxx$>|F<(XpYKmt9{&3Og*NZs z{kNc-5360dFM)Kpf5{C7^QQww%i@q0BCYV7chJFu6z|+V>N1jCs$3!nDk0wevSsx- zyFAi=0=@$xX1!vlnK^9a^@_pmRNk-Wb1*&n+Hy}l+Xaos?K_GXK3|n`wI#!ySJGCyn^6hHY=AK<9h0X7)V+e6b-<2Mo+)b~K z{HlsRn3rIM86&_hzl2)@>R9Xf=f6YSuk1!A17IP4VlH?ovxQt4O~H_7=I3QL;dQS5 z+{y_A=2&c)NIfXgxwC8lb4XH?lLcuS9wNRbkS@A};p0LZPrI|(5t$=`f!)X*eRFb^ zTS3327n>onW6ds7`)b64_i7v&eJnRq{*QVL+Mi(ngf71{xn)|fkj@E)kE9)}@(0w- zzigf`caFmAyp!qa%T;>oWgY1twxfIRN%pP{m486pJCrOtMW+K8#SulaLQNN%&L;Y>YCTDk%G%i4&RwRGjNAM?a)ISDpL4TH12KW zQkj3dyl^DP-Qn=?pA1=&{r=YEqS?If^P>v~>v^>x$@#tI>8sP)`fnJK&i5mJQ)gIz z1|=M>>(jR{D96v1oGHq-PLI2ql$BrL3pp&`0d{yn^GWlQ?{k(X*i7LP2yK*14(Ti= zwxe(0k%#tJ!i9mjIK>&7R;XT_mp4jHE#Pjy?NH71RP+G6%vsM)s0;BeWKPOP-Nd%T zAY!L^&-^y^GB_4H4%UDtq2^6whTzn1^w>d|7sO!|k4OEdV;b$U%k`MUjKd8{3 z3BKW~FZqqAcFAF+GBv0Kc452_t|N^eFQA2p7nYQoRS1oZq93h-@t|F#Pa?zWHDWuO zct$o{n{}ou*Uk^U2AH79UMYQt=G~F8$%&(G-%-T7p0}& z*akoWmkVDxYl|y8 z^E{aKN=EHwWaPA{M<9gdNI$R`zw`0Sp#VfFqjY4}Xp2-#KL@r3G8%wcTbWJ6&2RL1 zKGc$O{jvyT60b5_6`z>+SZYebw5YB^T`;}<^S5izW*NRA{sMfTv0O-_ke3Y_G$>m> z!fl?yT#KkjAYsA`LYOhq3dZRE;Vj=*&c6>KIJD>-WSl`E^21X*GSWJ~hLEIq5KCR% z<Y5|=|Iw(nanCMZCEuO!?Ip+^E0Zkf+`f~6UZZJKT<(q zJ{3p?R~(K$ge_0sf(X;LevN4RZnI%SQtgOczv%HZbwNno%wNcF3>;8!Zo!wK61=48 zi^jX9R6YrkW**Oc@~olzxVP7rrGYwAt76H(?nx_!WT}4@-OnT&`Ch$}I9SOq1nZYj zWPB&eh#6}-4;nm}v{FI|IIGClz(9^EmTG6g!i9d>6l7+x)vi}5?q*0b8GRkT5BO4U zo_T@Ftq-a;t#9wye+lq-W6zRmw~`UX{m2L%6sou+9zG_fwYCBF)*_f5q$uYYD*F-wzqxRj@p)idV(C98(a81RJB8WxmDQtQu-!0>zm_$Hew9 zbv;c@3R~sGm+J9n`>X^wcew~9ReTH)l(bj(LTU16 z>kb1Jc?x)pX1Am3RvjxX1lKnN=ckt_2M^ zw>gh&3j_vh5JkF!gM9#lj=9oFmg1y(9MFQ~hLfB;Il&n^vqy>_`(231Wl$kAe1S-h z+k#Lr6RVG$oX~30UfyrvyucwB1R5*K->YWCbnK^5>wj_k!UDOFC;zPeIZ~GW=N*yj z3ljbD-TwSd1fpjyeHa24NrsA`frH#c>PJsjq5xZ zw_;CzBqd^DNmk$lMzYn^w7p$?GvxiM4Mf5d(DL)I;ZsVO42zNgpF-bJOV@aqomns# z1r8B%cdizHCxe4Z+lX)4j4bUBf4ShF3k~jHx$w801BrN&zUPuF_UHsP&!?0D z(%Z_ZJykOq&@Kv3eqjIj<;%e3XMJRrCRh>cG@yU~vAXE@t~i$Nx%q*Um;WBg3v9)&ldzp+`_iU{2_i?LR>ol=X70lQ_||%Nn{1 z1fJZ00sG3*Qc0x(oHoCmDSsfnKPTItDgSd(8_8>4EWvl;FB)?^aqe{#ZuI4h)>i3_ z3P(6j&PIb71vH>h7fNjJzZ}Z1Lw|czCJmCRA$c?VlCJ{Nn61P%r&_#sYariAKG3(R zUih{%GIrSME$}H|xuR1WzNu**sbDu9O2+w^Fhpa?k|hNG)Q(W9UiR#l_o)5gI4MX+ z5hT@f_D)OMq4q?Lvv*0SXRgnD@@u4}rBMj_$n2jHs$p|rL5zW9ZPQm22lT6c6B>>E z29l0?C{MEm@h% z+n^G>a}?bI7KJgZU*Mwdjk<}O;?~hiA39KW@1ByTxotA`tjdf@^GFjnRXuXAoXho6 zQ&FuO%No8r#QpcGKj)}o`cYW6-rk-FceC{(tICyTJeeYfJDbzA;N0`+6y|f@N#}L+ z*eR$|cZ|0hWn+xGBzvbD$1?H{eHDhlJvMKsEhb^7_NN{vJ^oss0?aL(KD+AQMc8{G z3FUA-n`##OhvdELPu%r$CJ&!77_bPTTlP_IUEeHGXz^=bg>7TDX6JOEFI zpvo;dz?yB1(Nlu!8d|-Qm+qIj_1nYnu?J+nHpOpu9MJi0Z{kE}5QB&zO~k7dk1I~< z36)_|iKRf00iJ7eDS9YC{YyH{$^F?%h#e{(f)xlj@T*BfP(ncEh!MEFW*=1xR#!ik z3;#>rC-Hg1%loh-5b+{I{Nsh;9kiB3 zJ@P_!g7jY7+n)KcFRpJ{I7CLxJaJ9s_*!uxf()#YC@_M2D&43)mx(kBd|CnXPSc*- z%Jc-X{-#W66LQ)6{4x=hpZ>%+fe}*84jJJ+Ca|vbSymU`R>hqt7K%kJwTT10{(6|<&6{hHS_u-<)z*|L5IuQN8-M0{`^-TJ_HUvx)-E^8=L2k?}6~j2@@96XBjB@ z$arT`rZSx9Cw3rWh^z-1N|v#zk!#<(*JWT^-@3f>B4wM%&h=HKA*0{Q{4`?ChuZn! zsF*1lMDefOD7;H|c3uga@Nu~$TjvcRB8|Zm*hw@rum>e2X#@$mD44)D6){lqwl0xgQ((=XIsGFx^gf$h z;+ghHP+XH*hLjW)5RNR4UxJ(gU`5I>q-&7lS;2j*Ft;L)k&qe$aJn}j;7_Arh%+{z zhiqt=CW+4shv*M3>&&a~M-xKH`k_Imu7D+hLg3znz0n-7-)Qpi;fBhGv5MTy$r(3%RTE>5Y=aGC=+lbi9CIT%jEz!t9QtRl1U{mRb zFa|`Js=fH$2I5@@4GKfD%Jt8Hl>Ytg(gxiNaA!O;;TtzpsyiAb{Jj1deuC>Xm#N>M1mM* zMC1Fyjvr^f<+0<(wadgNX&fc8ao^T6_LeUy|82zV)a;zLeAeIR&%vgxFOs)-rii!q zZ5GO>yz;{RNNrTr)L3$7WlyoP5tFtvk1gV9aF9532%q)ocGrtDG z-goV7t;4F0CX=aQZLz)Gr|YfzU7MT6?b@H~sh)NVbkVDv<)K$>W@ni95=-c>HnH16 z$}SK)R1_HbnBXZ)Vfi)j%dbH^Cz0ZmBM(mxV!LLIk5Sm%XxiOmQbtl! zi)}SmNp}_Bh00~uyPN+Q@p!fi!zxw`SGcl4)I1BygGaxh?YML*)f#xNwQGax5HB5> z^~bOSGS5*hGlPdvRyrSJm#|A~m1T+7=+mdEAxA+_oyp1v+KlNpr>&cpfzl(Y`5P^j z{%L7Cb+RF*{WG>i|6Z9<`)0JJXeh0&& zXP^Vbu0>i!_dN)|@v5!5g#4A;tW`e#ziY zBS*#((AD0o{bhN~||RIwfj%$_vq8slpa1?5)XUz6C} z+{~y-K4QA%3KTYj2iL!PHMZ<4V^##i5lJCKWWak$?#z51YWkCg@SOcTmEMO0bzRqz zP}3VGD&n4->;wN=kLCBSywcW!)8};SK52@y>st{2W9*JGef#<~NsyasAD>~=GJd$L z7U4&ZB$HPk7TFV^p4l*rq4rmjS_oo5)`c;Q~V zoO|(wC9?AJmW-%cb%_CL=y9l%5FCS2F-HYnOSepY!!BV&0x^VeK`1A=B^&TDgJIe+GIy>B##BYL_43gp*}9U8 zx`zNk5Ce2iM2M${#yG`c!;UsqC6kXe>#zRxRUbj^zE z?hQ;tMGI*(bEY54htI9N0eBFWF&~jDb15MU4M>;#O;wqqE2#Q#3i%lbNe1sj3pvHn zG`i8Db0Y%SkU^7^W2h!a_01f3ONd`I#i%;9KO40Pc?(^-l%TDmDPURf5WuY8@O+#!8FrG zBQ$1oVP+SW?38)?=8cM)noz#_-5hc+6;a2$c{xgKXqXi*C<^QGX+jv#C8Ww~!q^gy z9I_iL8&Hg)YhM*aGlGlvg50hph)giRUE>^1@Xe6#jPxubtr;1Suguph)S1ZSR~_!N z{cCMB$OgKCAvZdbjGD(GaLEW++|rBXNKw1_Gom6L9EfKm8Hvi1+7xG0V0IO38MQ{1 z5*Mrj=%b;+R?R9k$zC16gWA<@mZ#JG%GBwfe zMGTSEEq(rhJnPUsZi0q&|Iu@WwcUTq`g{NxC93{aH%WqnEgvlIpMvg)B zgc&)UEtuUSLv-Q*8~RE}W4Ih*@_YVXwqscC-x z@Wh{J*83oNO+-vk$pOQ=8RlwYe%W@ukBI3lItGW%w78#uhw}RwS_R&32gb`!w{%NF9(Z}_ z;Yz`Kj8g2b=&o?Jd}H2A`LNwrl>ix#f1v1d=fHSnuC|3B!}|+teCZvjE}&baGh1?Q z2xnzz?Lol2lSS{iF~|aE3(Zg}Tt?DTq1f)?`*d&ulQ?YH@dJNqFM)ZnS^Asjljj2C zoh9b^B$3s0z7$#Ixc%Yz)=7Mf1u;TL45Gfbc*Dkx_#YHK`Avv-@sW)(qb4 z?0j6?aYS=h_B1Yq5hFk;^r>xgEK$47Uq*{q>o%k8IBj1u;0Q z5c#yDXY*>nz{14-&44Nw2A%EPmg4O_9Ww$EA%ayW$eqI+9VS`dd-g|68i~b*?+=?K zfi1)3Rrlu5NpaWlExTBMxs@qerG{k?kZeaA%doUxOB8bl!)Bifu+O#;Gi9WFqn@r~ zcmuo2Tcg*f4f}@rFh+CcOyOu|Du|WkcbZ8~w+}blZuBo)y-Qe?`KN@9t|qWkw#kCS z*xPz%fG+QP+7uV`p8kKju3OgXMeF3(MG+BOt?O?<-9~##rxJI}RuxO6fJ0Q68Nlz7KlEMEx z*t>$N_(?;-AtK?;ncec-=Lbi%2m2`8LH^8^2dTXX(U zM1PnU+Q_g8A~X(cSuuE(rj`~3yp->1;TwyfxnL=cjx&pe_sF_+>w&+w?yO&!N&Zv$ zxmUUgi{2`KGAwUM=W)#re$i7N^omYTA3S$bhaF8;_h@EBKN$vhHJ9?IjBcIMmh-JhHK*Xa*w`Z1^Ok)f+r3bIAYW&i8~1@Xe4T*n^~YXMDQWGu0l`sa0I1f6mF zPwyEjz0vrs%7v!8`tu@98x+gIg9m+l#8H1vY5P2d%JV@t;CyBt*`RWV&4Hz6RnvFa%3yybW zPd|3z$--I+xAN_6Kl1gy)n!RfK~MDc-HNt-GWYZH(l^yV2Nqx~9}^dduodj3%a^B% zNKXgwk_hsu5yu@i`w4B@O-jlv#&mmY?g}u?XBW)jpMHX)YiSAz3S?M(c%B>^6;;J& znIC?$gJQ6VbQ;j3QL2{V5lbPZk+#hN6`B z9vdHzDKZkBBN;73crtg--+#I!gGRUl2x~%(I*T00Wmn>8OCedT_tB#K`Z?QC2)hvd zs5}7U&&Uwdw{>^#r`WrH|KO02rA#L#|CQm(7;0g;+8rr8#kqv)*7&Mi?uRKD zE<5fdZ2cLgqm3K+NEeqL2@QQmuTgtp=GwKt>kB*vXeBeOfzpbT?fW)A;Xcn^<-%L$ zH6BI)XiG){p3uR>m@?de?p_F?A}Een4^Zp4w6p=JR;us!A(qju@GKw^cRfSa8A0LB zpx7Aczdw>#OIs(Kf4-@tm05fIhPrKWcPIIq_)(g3>Ry6~d`t+!M2oXXm6V)m0+io> z1)fVLC!jPZ(u0zZqBU&AHnM#6_h!8sB1HK>ha+(gzoo3VavWl3xtcx+eKxqd5-r#8 z<>mG^G}d)}!YvooISs~03(;FV6cvLIL?Qg_c&l<`*6etWg*NGb4y5AVl*}~cq%T^H z3ufP-E;N^yrjd|z5))^WA;I3IFXdxKZ zB(6!ZH>^$HzC{HE&Hz*h9%!=x1K_7Q!#P6vXsl+)RUpqX{fPBVIJP`-jUWC^$`mjn z1{RIqKZDWbe0x{7{rJj)wE(WF)FCT|aZ_u7H*eh7#;;zM;-HxNiNXc|k$x^dz4ap&ePRn`avSpzI}`92k8ON9?f5I$jvY1p3HJScaD6---i#McfFUO6%c-Y z-fVt9UirMeV@1oVb1zPxQqtcz`Oo>{?|PW_F4$${ed%=anfPNwN~%my+)+O!vWi^9Y{u zI`{tlC6V1)YOLaZT`lYi8PmTvtC-lZfBo6#kXW|}&62ex3RU1)JpQv(z0UReucv!};E;7M5D7gv0s)~a8c+7IemPS(C%f2y(RS;HVLW%Hn2>dMngnKmsM3B=>0?bVVH8MzW79A+FU zAbL))l21Z%@{w6)6h}8azr@L$qAq}D;dH^1CZq%ZUsz+ykneGvfbg?cBeb zzV9$jPuUr^v!>^$8zN(Y3R+1N+Hq5eL_|6YnRr8#AfSyRcnOGAkoI&zI9^bO)K;u^ z7L1@mLFFR2R_M5hK;eL98ECaZ1VOBogb2!BUlq^(fbo+DJh^;7pZER!JP&wWJ~-6eqiLd(aN$tw(9f8^^``}< zUy!P^b&Cx(ofuA=XtM%79fYp%Nm{LnD;FC(f75kmim3zsS=re`pmN_7L*UO(s)z|I zg1g^;`dU{Fj~d^*j8)Rg%8@5e_N1n6Jh5or4ZpmQIL?D{%bcSJfus;}IHq^98u(2Q zZNjx{e~kBmj|OA|3Y)e2tr-qLJz7>$5=JT`viI=N)zzucnIt-rQAF47XS*rfWSIip zI#jUNz zoZ}{u$s(+ZQ=aak)k>EKG#yq8Q$rjJ2((^5G2Xv5yZ=?mQ1lf!1YPuvG66AwWDipx zuIR!&zsn3JryL#`5h#r4>%qvWujSd$EvL2F$vy|P5JeH+J-Bm6P1Z-gM+2TJuFg^D zY6!G#Y)dhPH-iZwmeC$$jL<`9(r;$EA8~GL?Y?yl~<0b!&L-JD|Rt zBG3o;8aJ9IG;A4(9rWI}jx}ts4ZG_XgR5+5K`a}T0>rKj zH8tP#2-J`9?6ZVdCW7bbs@nOUgF`gtfP0gtlfDD3=KBb%yJqvh>gwFx+;ECM&q|+a zIZFHneSAS53&F{bK4w~QrGj*aalJUX-YU0p!jd*W}@cz%S_TJm;bM&+VEtun$2oU;lL`%=HF!1sw-;o=QuF z7vE_?dl;Vtr6lDyF^p-MM%4D%N{kDsHL=*&Cc+9ka>1Sleg%Td&cQj>NPT>iVWoi~ zp`jbrum7{!5C97AgDgjuy^P2FPy7l&*)?HqJ@6#9;u> za`zb8J3mvcZej3|L#R(R3lyaPeTc7u(Mnv{YzL?{+y?``UQU);RmDh};O;*< zsOUgJQ6h!qto{Fvw@HLwBB<_LKbzN+nw zaK%92$UgJZBIC82H+^KX?^r*2p;sR=;UDgpEZe%m+!M*$z>ILPWMU(kRB024blYsCq^LezFR==C9U2&`c-0EHIMCk-QB^$j?pcqlW?!Mcb4W4q&%FvplTD-ewvB>b9n$@{R89V7c3QQ!e>uOgFEKzGgdE!{h6#w@eUIg%jF& zOAJ&L#fRe>pC@lDD?|PEF&l48q9(~kq00K%U`Qa6V6z0wz||M=l2rHSl$Z5f@#bbJ zpU&C&8u5YCD=Z9Nz5RZZkRqU8z|vCw<;%O7fU~K(1%x2Uj#{KvKgzN> z_j-|K{HwZW4x2zoMmnR0Rv{tdM_&k7H^@i&g}3kD4{Wd;n|^J)PxI-@yLR(#SbpqX zY%_nng!w-fQK!cniWU|D|MPDv-;Nhu4Bm3VquMjU<8Q6p#GJCo>o*o-r)p#YCamunda 7 only - -This document provides instructions on how the import of the engine data to Optimize works. - -## Architecture overview - -In general, the import assumes the following setup: - -- A Camunda engine from which Optimize imports the data. -- The Optimize backend, where the data is transformed into an appropriate format for efficient data analysis. -- [Elasticsearch (ES)](https://www.elastic.co/guide/index.html) or [OpenSearch (OS)](https://opensearch.org/), which serves as the database that Optimize uses to persist all of its formatted data. - -The following depicts the setup and how the components communicate with each other: - -![Optimize Import Structure](img/Optimize-Structure.png) - -Optimize queries the engine data using a dedicated Optimize REST-API within the engine, transforms the data, and stores it in its own database such that it can be quickly and easily queried by Optimize when evaluating reports or performing analyses. The reason for having a dedicated REST endpoint for Optimize is performance: the default REST-API adds a lot of complexity to retrieve the data from the engine database, which can result in low performance for large data sets. - -Note the following limitations regarding the data in Optimize's database: - -- The data is only a near real-time representation of the engine database. This means the database may not contain the data of the most recent time frame, e.g. the last two minutes, but all the previous data should be synchronized. -- Optimize only imports the data it needs for its analysis. The rest is omitted and won't be available for further investigation. Currently, Optimize imports: - - The history of the activity instances - - The history of the process instances - - The history of variables with the limitation that Optimize only imports primitive types and keeps only the latest version of the variable - - The history of user tasks belonging to process instances - - The history of incidents with the exception of incidents that occurred due to the history cleanup job or a timer start event job running out of retries - - Process definitions - - Process definition XMLs - - Decision definitions - - Definition deployment information - - Historic decision instances with input and output - - Tenants - - The historic identity link logs - -Refer to the [Import Procedure](#import-procedure) section for a more detailed description of how Optimize imports engine data. - -## Import performance overview - -This section gives an overview of how fast Optimize imports certain data sets. The purpose of these estimates is to help you evaluate whether Optimize's import performance meets your demands. - -It is very likely that these metrics change for different data sets because the speed of the import depends on how the data is distributed. - -The import is also affected by how the involved components are set up. For instance, if you deploy the Camunda engine on a different machine than Optimize and Elasticsearch/OpenSearch to provide both applications with more computation resources, the process is likely to speed up. If the Camunda engine and Optimize are physically far away from each other, the network latency might slow down the import. - -### Setup - -The following components were used for these import tests: - -| Component | Version | -| ------------------ | --------------- | -| Camunda 7 | 7.10.3 | -| Camunda 7 Database | PostgreSQL 11.1 | -| Elasticsearch | 6.5.4 | -| Optimize | 2.4.0 | - -The Optimize configuration with the default settings was used, as described in detail in the [configuration overview](./../configuration/system-configuration.md). - -The following hardware specifications were used for each dedicated host - -- Elasticsearch: - - Processor: 8 vCPUs\* - - Working Memory: 8 GB - - Storage: local 120GB SSD -- Camunda 7: - - Processor: 4 vCPUs\* - - Working Memory: 4 GB -- Camunda 7 Database (PostgreSQL): - - Processor: 8 vCPUs\* - - Working Memory: 2 GB - - Storage: local 480GB SSD -- Optimize: - - Processor: 4 vCPUs\* - - Working Memory: 8 GB - -\*one vCPU equals one single hardware hyper-thread on an Intel Xeon E5 v2 CPU (Ivy Bridge) with a base frequency of 2.5 GHz. - -The time was measured from the start of Optimize until the entire data import to Optimize was finished. - -### Large size data set - -This data set contains the following amount of instances: - -| Number of Process Definitions | Number of Activity Instances | Number of Process Instances | Number of Variable Instances | Number of Decision Definitions | Number of Decision Instances | -| ----------------------------- | ---------------------------- | --------------------------- | ---------------------------- | ------------------------------ | ---------------------------- | -| 21 | 123 162 903 | 10 000 000 | 119 849 175 | 4 | 2 500 006 | - -Here, you can see how the data is distributed over the different process definitions: - -![Data Distribution](img/Import-performance-diagramms-logistic_large.png) - -Results: - -- **Duration of importing the whole data set:** ~120 minutes -- **Speed of the import:** ~1400 process instances per second during the import process - -### Medium size data set - -This data set contains the following amount of instances: - -| Number of Process Definitions | Number of Activity Instances | Number of Process Instances | Number of Variable Instances | -| ----------------------------- | ---------------------------- | --------------------------- | ---------------------------- | -| 20 | 21 932 786 | 2 000 000 | 6 913 889 | - -Here you can see how the data is distributed over the different process definitions: - -![Data Distribution](img/Import-performance-diagramms-logistic_medium.png) - -Results: - -- **Duration of importing the whole data set:** ~ 10 minutes -- **Speed of the import:** ~1500 process instances per second during the import process - -## Import procedure - -:::note Heads up! -Understanding the details of the import procedure is not necessary to make Optimize work. In addition, there is no guarantee that the following description is either complete or up-to-date. -::: - -The following image illustrates the components involved in the import process as well as basic interactions between them: - -![Optimize Procedure](img/Optimize-Import-Process.png) - -During execution, the following steps are performed: - -1. [Start an import round](#start-an-import-round). -2. [Prepare the import](#prepare-the-import). - 1. Poll a new page - 2. Map entities and add an import job -3. [Execute the import](#execute-the-import). - 1. Poll a job - 2. Persist the new entities to the database - -### Start an import round - -The import process is automatically scheduled in rounds by the `Import Scheduler` after startup of Optimize. In each import round, multiple `Import Services` are scheduled to run, each fetches data of one specific entity type. For example, one service is responsible for importing the historic activity instances and another one for the process definitions. - -For each service, it is checked if new data is available. Once all entities for one import service have been imported, the service starts to back off. To be more precise, before it can be scheduled again it stays idle for a certain period of time, controlled by the "backoff" interval and a "backoff" counter. After the idle time has passed, the service can perform another try to import new data. Each round in which no new data could be imported, the counter is incremented. Thus, the backoff counter will act as a multiplier for the backoff time and increase the idle time between two import rounds. This mechanism is configurable using the following properties: - -```yaml -handler: - backoff: - # Interval which is used for the backoff time calculation. - initial: 1000 - # Once all pages are consumed, the import service component will - # start scheduling fetching tasks in increasing periods of time, - # controlled by 'backoff' counter. - # This property sets maximal backoff interval in seconds - max: 30 -``` - -If you would like to rapidly update data imported into Optimize, you have to reduce this value. However, this will cause additional strain on the engine and might influence the performance of the engine if you set a low value. - -More information about the import configuration can be found in the [configuration section](./../configuration/system-configuration-platform-7.md). - -### Prepare the import - -The preparation of the import is executed by the `ImportService`. Every `ImportService` implementation performs several steps: - -#### Poll a new page - -The whole polling/preparation workflow of the engine data is done in pages, meaning only a limited amount of entities is fetched on each execution. For example, say the engine has 1000 historic activity instances and the page size is 100. As a consequence, the engine would be polled 10 times. This prevents running out of memory and overloading the network. - -Polling a new page does not only consist of the `ImportService`, but the `IndexHandler`, and the `EntityFetcher` are also involved. The following image depicts how those components are connected with each other: - -![ImportService Polling Procedure](img/Import-Service-Polling.png) - -First, the `ImportScheduler` retrieves the newest index, which identifies the last imported page. This index is passed to the `ImportService` to order it to import a new page of data. With the index and the page size, the fetching of the engine data is delegated to the `EntityFetcher`. - -#### Map entities and add an import job - -All fetched entities are mapped to a representation that allows Optimize to query the data very quickly. Subsequently, an import job is created and added to the queue to persist the data in the database. - -### Execute the import - -Full aggregation of the data is performed by a dedicated `ImportJobExecutor` for each entity type, which waits for `ImportJob` instances to be added to the execution queue. As soon as a job is in the queue, the executor: - -- Polls the job with the new Optimize entities -- Persists the new entities to the database - -The data from the engine and Optimize do not have a one-to-one relationship, i.e., one entity type in Optimize may consist of data aggregated from different data types of the engine. For example, the historic process instance is first mapped to an Optimize `ProcessInstance`. However, for the heatmap analysis it is also necessary for `ProcessInstance` to contain all activities that were executed in the process instance. - -Therefore, the Optimize `ProcessInstance` is an aggregation of the engine's historic process instance and other related data: historic activity instance data, user task data, and variable data are all nested documents ([ES](https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html) / [OS](https://opensearch.org/docs/latest/field-types/supported-field-types/nested/)) within Optimize's `ProcessInstance` representation. - -:::note -Optimize uses nested documents ([ES](https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html) / [OS](https://opensearch.org/docs/latest/field-types/supported-field-types/nested/)), the above mentioned data is an example of documents that are nested within Optimize's `ProcessInstance` index. - -Elasticsearch and OpenSearch apply restrictions regarding how many objects can be nested within one document. If your data includes too many nested documents, you may experience import failures. To avoid this, you can temporarily increase the nested object limit in Optimize's [index configuration](./../configuration/system-configuration.md#index-settings). Note that this might cause memory errors. -::: - -Import executions per engine entity are actually independent from another. Each follows a [producer-consumer-pattern](https://dzone.com/articles/producer-consumer-pattern), where the type specific `ImportService` is the single producer and a dedicated single `ImportJobExecutor` is the consumer of its import jobs, decoupled by a queue. So, both are executed in different threads. To adjust the processing speed of the executor, the queue size and the number of threads that process the import jobs can be configured: - -:::note -Although the parameters below include `ElasticSearch` in their name, they apply to both ElasticSearch and OpenSearch installations. For backward compatibility reasons, the parameters have not been renamed. -::: - -```yaml -import: - # Number of threads being used to process the import jobs per data type that are writing - # data to the database. - elasticsearchJobExecutorThreadCount: 1 - # Adjust the queue size of the import jobs per data type that store data to the database. - # A too large value might cause memory problems. - elasticsearchJobExecutorQueueSize: 5 -``` diff --git a/optimize/self-managed/optimize-deployment/configuration/authorization-management.md b/optimize/self-managed/optimize-deployment/configuration/authorization-management.md deleted file mode 100644 index d26c080356e..00000000000 --- a/optimize/self-managed/optimize-deployment/configuration/authorization-management.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -id: authorization-management -title: "Authorization management" -description: "Define which data users are authorized to see." ---- - -Camunda 7 only - -User authorization management differs depending on whether the entities to manage the authorizations for are originating from adjacent systems like imported data from connected Camunda-BPM engines such as process instances, or whether the entities are fully managed by Camunda Optimize, such as [event-based processes and instances](components/userguide/additional-features/event-based-processes.md) or [collections](components/userguide/collections-dashboards-reports.md). For entities originating from adjacent systems authorizations are managed in the Camunda 7 via Camunda Admin, for the latter the authorizations are managed in Camunda Optimize. - -## Camunda 7 data authorizations - -The authorization to process or decision data, as well as tenants and user data imported from any connected Camunda REST-API, is not managed in Optimize itself but needs to be configured in the Camunda 7 and can be achieved on different levels with different options. - -If you do not know how authorization in Camunda works, visit the [authorization service documentation](https://docs.camunda.org/manual/latest/user-guide/process-engine/authorization-service/). This has the advantage that you don't need to define the authorizations several times. - -### Process or decision definition related authorizations - -You can specify which user has access to certain process or decision definitions, including data related to that definition. By that we mean the user can only see, create, edit, and delete reports to definitions they are authorized to. - -When defining an authorization to grant or deny access to certain definitions, the most important aspect is that you grant access on the resource type "process definition" and "decision definition". You can then relate to a specific definition by providing the definition key as resource ID or use "\*" as resource ID if you want to grant the access to all definitions. To grant access to a definition, you need to set either `ALL` or `READ_HISTORY` as permission. Both permission settings are treated equally in Optimize, so there is no difference between them. - -As an example, have a look how adding authorizations for process definitions could be done in Camunda Admin: - -![Grant Optimize Access in Admin](img/Admin-GrantDefinitionAuthorizations.png) - -1. The first option grants global read access for the process definition `invoice`. With this setting all users are allowed to see, update, create, and delete reports related to the process definition `invoice` in Optimize. -2. The second option defines an authorization for a single user. The user `Kermit` can now see, update, create, and delete reports related to the process definition `invoice` in Optimize. -3. The third option provides access on group level. All users belonging to the group `optimize-users` can see, update, create, and delete reports related to the process definition `invoice` in Optimize. - -It is also possible to revoke the definition authorization for specific users or groups. For instance, you can define access for all process definitions on a global scale, but exclude the `engineers` group from access reports related to the `invoice` process: - -![Revoke Optimize Access for group 'engineers' in Admin](img/Admin-RevokeDefinitionAuthorization.png) - -Decision definitions are managed in the same manner in the `Authorizations -> Decision Definition` section of the Authorizations Management of the Camunda 7. - -### User and Group related Authorizations - -To allow logged-in users to see other users and groups in Optimize (for example, to add them to a collection), they have to be granted **read** permissions for the resource type **User** as well as the resource type **Group**. Access can be granted or denied either for all users/groups or for specific user/group IDs only. This can be done in Camunda Admin as illustrated in the definitions authorization example above. - -## Optimize entity authorization - -There are entities that only exist in Camunda Optimize and authorizations to these are not managed via Camunda Admin but within Optimize. - -### Collections - -[Collections](components/userguide/collections-dashboards-reports.md) are the only way to share Camunda Optimize reports and dashboards with other users. Access to them is directly managed via the UI of collections; see the corresponding user guide section on [Collection - User Permissions](components/userguide/collections-dashboards-reports.md#user-permissions). - -### Event-based processes - -Camunda 7 only - -Although [event-based processes](components/userguide/additional-features/event-based-processes.md) may include data originating from adjacent systems like the Camunda Engine when using [Camunda Activity Event Sources](components/userguide/additional-features/event-based-processes.md#event-sources), they do not enforce any authorizations from Camunda Admin. The reason for that is that multiple sources can get combined in a single [event-based process](components/userguide/additional-features/event-based-processes.md) that may contain conflicting authorizations. It is thus required to authorize users or groups to [event-based processes](components/userguide/additional-features/event-based-processes.md) either directly when [publishing](components/userguide/additional-features/event-based-processes.md#publishing-an-event-based-process) them or later on via the [event-based process - Edit Access](components/userguide/additional-features/event-based-processes.md#event-based-process-list---edit-access) option. diff --git a/optimize/self-managed/optimize-deployment/configuration/event-based-processes.md b/optimize/self-managed/optimize-deployment/configuration/event-based-processes.md deleted file mode 100644 index efc9f48f2f4..00000000000 --- a/optimize/self-managed/optimize-deployment/configuration/event-based-processes.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -id: event-based-process-configuration -title: "Event-based process system configuration" -description: "How to configure event-based processes in Optimize." ---- - -Camunda 7 only - -Configuration of the Optimize event-based process feature. - -| YAML path | Default value | Description | -| -------------------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| eventBasedProcess.authorizedUserIds | [ ] | A list of userIds that are authorized to manage (Create, Update, Publish & Delete) event based processes. | -| eventBasedProcess.authorizedGroupIds | [ ] | A list of groupIds that are authorized to manage (Create, Update, Publish & Delete) event based processes. | -| eventBasedProcess.eventImport.enabled | false | Determines whether this Optimize instance performs event based process instance import. | -| eventBasedProcess.eventImport.maxPageSize | 5000 | The batch size of events being correlated to process instances of event based processes. | -| eventBasedProcess.eventIndexRollover.scheduleIntervalInMinutes | 10 | The interval in minutes at which to check whether the conditions for a rollover of eligible indices are met, triggering one if required. This value should be greater than 0. | -| eventBasedProcess.eventIndexRollover.maxIndexSizeGB | 50 | Specifies the maximum total index size for events (excluding replicas). When shards get too large, query performance can slow down and rolling over an index can bring an improvement. Using this configuration, a rollover will occur when triggered and the current event index size matches or exceeds the maxIndexSizeGB threshold. | - -## Event ingestion REST API configuration - -Camunda 7 only - -Configuration of the Optimize [event ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](components/userguide/additional-features/event-based-processes.md). - -| YAML path | Default value | Description | -| ----------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| eventBasedProcess.eventIngestion.maxBatchRequestBytes | 10485760 | Content length limit for an ingestion REST API bulk request in bytes. Requests will be rejected when exceeding that limit. Defaults to 10MB. In case this limit is raised you should carefully tune the heap memory accordingly, see Adjust Optimize heap size on how to do that. | -| eventBasedProcess.eventIngestion.maxRequests | 5 | The maximum number of event ingestion requests that can be serviced at any given time. | diff --git a/optimize/self-managed/optimize-deployment/configuration/history-cleanup.md b/optimize/self-managed/optimize-deployment/configuration/history-cleanup.md index 773b1824d82..edab85d8c5a 100644 --- a/optimize/self-managed/optimize-deployment/configuration/history-cleanup.md +++ b/optimize/self-managed/optimize-deployment/configuration/history-cleanup.md @@ -18,12 +18,6 @@ There are four types of history cleanup: By default, all four types of history cleanup are disabled. They can be enabled individually by config and the cleanup is applied accordingly. -:::note Note for Camunda 7 users -By default, history cleanup is disabled in Optimize when running in Camunda 7. Before enabling it, you should consider the type of cleanup and time to live period that fits to your needs. Otherwise, historic data intended for analysis might get lost irreversibly. - -The default [engine history cleanup](https://docs.camunda.org/manual/latest/user-guide/process-engine/history/#history-cleanup) in Camunda 7 works differently than the one in Optimize due to the possible cleanup strategies. The current implementation in Optimize is equivalent to the [end time strategy](https://docs.camunda.org/manual/latest/user-guide/process-engine/history/#end-time-based-strategy) of the Engine. -::: - ## Setup The most important settings are `cronTrigger` and `ttl`; their global default configuration is the following: diff --git a/optimize/self-managed/optimize-deployment/configuration/license.md b/optimize/self-managed/optimize-deployment/configuration/license.md deleted file mode 100644 index 8a54c8dd485..00000000000 --- a/optimize/self-managed/optimize-deployment/configuration/license.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: optimize-license -title: "Optimize license key" -description: "When you log in to Optimize for the first time, you are redirected to the license page where you can enter your license key." ---- - -Camunda 7 only - -When you log in to Optimize for the first time, you are redirected to the license page. Here, enter your license key to be able to use Camunda Optimize. - -![Optimize license page with no license key in the text field and submit button below](img/license-guide.png) - -Alternatively, you can add a file with the license key to the path `${optimize-root-folder}/config/OptimizeLicense.txt`; it will be automatically loaded to the database unless it already contains a license key. - -If you are using the Optimize Docker images and want Optimize to automatically recognize your license key, refer to the [installation guide](../../install-and-start#license-key-file) on how to achieve this. diff --git a/optimize/self-managed/optimize-deployment/configuration/multi-tenancy.md b/optimize/self-managed/optimize-deployment/configuration/multi-tenancy.md index 87ca00f8fc8..e2bcd2251ca 100644 --- a/optimize/self-managed/optimize-deployment/configuration/multi-tenancy.md +++ b/optimize/self-managed/optimize-deployment/configuration/multi-tenancy.md @@ -4,7 +4,7 @@ title: "Multi-tenancy" description: "Learn about the supported multi-tenancy scenarios." --- -Camunda 7 and Camunda 8 Self-Managed only +Camunda 8 Self-Managed only Multi-tenancy in the context of Camunda 8 refers to the ability of Camunda 8 to serve multiple distinct [tenants]($docs$/self-managed/identity/user-guide/tenants/managing-tenants/) or clients within a single installation. @@ -46,50 +46,3 @@ If required, the tenant authorization cache in Optimize can also be configured v To ensure seamless integration and functionality, the multi-tenancy feature must also be enabled across **all** associated components [if not configured in Helm]($docs$/self-managed/concepts/multi-tenancy/) so users can view any data from tenants for which they have authorizations configured in Identity. Find more information (including links to individual component configuration) on the [multi-tenancy concepts page]($docs$/self-managed/concepts/multi-tenancy/). - -## Possible Camunda 7 multi-tenancy scenarios - -As described in the [Camunda 7 documentation](https://docs.camunda.org/manual/latest/user-guide/process-engine/multi-tenancy/), there are two possible multi-tenant scenarios which are also supported by Optimize: [Single Camunda 7 process engine with tenant-identifiers](#single-camunda-7-process-engine-with-tenant-identifiers) and [One Camunda 7 process engine per tenant](#one-camunda-7-process-engine-per-tenant). - -## Single Camunda 7 process engine with tenant-identifiers - -Tenant-identifiers available in the Camunda 7 engine are automatically imported into Optimize and tenant-based access authorization is enforced based on the configured `Tenant Authorizations` within the Camunda 7. This means there is no additional setup required for Optimize in order to support this multi-tenancy scenario. - -Users granted tenant access via the Camunda 7 will be able to create and see reports for that particular tenant in Optimize. In the following screenshot, the user `demo` is granted access to data of the tenant with the id `firstTenant` and will be able to select that tenant in the report builder. Other users, without the particular firstTenant authorization, will not be able to select that tenant in the report builder nor be able to see results of reports that are based on that tenant. - -![Tenant Authorization](img/admin-tenant-authorization.png) - -## One Camunda 7 process engine per tenant - -In the case of a multi-engine scenario where tenant-specific data is isolated by deploying to dedicated engines, there are no tenant identifiers present in the particular engines themselves. For a single Optimize instance that is configured to import from each of those engines to support this scenario, it is required to configure a `defaultTenant` for each of those engines. - -The effect of configuring a `defaultTenant` per engine is that all data records imported from the particular engine where no engine-side tenant identifier is present this `defaultTenant` will be added automatically. Optimize users will be authorized to those default tenants based on whether they are authorized to access the particular engine the data originates from. So in this scenario, it is not necessary to configure any `Tenant Authorizations` in the Camunda 7 itself. - -The following `environment-config.yaml` configuration snippet illustrates the configuration of this `defaultTenant` on two different engines. - -``` -... -engines: - "engineTenant1": - name: engineTenant1 - defaultTenant: - # the id used for this default tenant on persisted entities - id: tenant1 - # the name used for this tenant when displayed in the UI - name: First Tenant - ... - "engineTenant2": - name: engineTenant2 - defaultTenant: - # the id used for this default tenant on persisted entities - id: tenant2 - # the name used for this tenant when displayed in the UI - name: Second Tenant -... -``` - -Optimize users who have a `Optimize Application Authorization` on both engines will be able to distinguish between data of both engines by selecting the corresponding tenant in the report builder. - -:::note Heads up! -Once a `defaultTenant.id` is configured and data imported, you cannot change it anymore without doing a [full reimport](./../migration-update/camunda-7/instructions.md#force-reimport-of-engine-data-in-optimize) as any changes to the configuration cannot be applied to already imported data records. -::: diff --git a/optimize/self-managed/optimize-deployment/configuration/multiple-engines.md b/optimize/self-managed/optimize-deployment/configuration/multiple-engines.md deleted file mode 100644 index 10fb4c5074f..00000000000 --- a/optimize/self-managed/optimize-deployment/configuration/multiple-engines.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -id: multiple-engines -title: "Multiple process engines" -description: "Learn how to set up multiple process engines with Optimize and which scenarios are supported." ---- - -Camunda 7 only - -Learn how to set up multiple process engines with Optimize and which scenarios are supported. - -## Possible multiple process engine scenarios - -There are two possible setups where multiple process engines can be used: - -- [Possible multiple process engine scenarios](#possible-multiple-process-engine-scenarios) - - [Multiple engines with distributed databases](#multiple-engines-with-distributed-databases) - - [Multiple engines with a shared database](#multiple-engines-with-a-shared-database) -- [Authentication and authorization in the multiple engine setup](#authentication-and-authorization-in-the-multiple-engine-setup) - -Check which scenario corresponds to your setup because the configuration of multiple engines to Optimize is not always suited for the best import performance. - -:::note Heads Up! - -There are two restrictions for the multiple engines feature: - -1. The process engines are assumed to have distinct process definitions, which means that one process definition (same key, tenant and version) is not deployed on two or more engines at the same time. - Alternatively, each engine could be configured with default tenant identifiers as described in the [One Tenant Per Engine Scenario](../multi-tenancy/#one-process-engine-per-tenant). -2. The engines are assumed to have distinct tenant identifiers, which means one particular tenantId is not deployed on two or more engines at the same time. - -::: - -### Multiple engines with distributed databases - -In this scenario, you have multiple process engines and each engine has its own database as illustrated in the following diagram: - -![Clustered Engine with distributed Database](img/Clustered-Engine-Distributed-Database.png) - -Now, you are able to connect each engine to Optimize. The data will then automatically be imported into Optimize. The following diagram depicts the setup: - -![Multiple Engines connected to Optimize, each having its own Database](img/Multiple-Engine-Distributed-Database.png) - -To set up the connections to the engines, you need to add the information to the [configuration file](./system-configuration-platform-7.md). For the sake of simplicity, let's assume we have two microservices, `Payment` and `Inventory`, each having their own engine with its own database and processes. Both are accessible in the local network. The `Payment` engine has the port `8080` and the `Inventory` engine the port `1234`. Now an excerpt of the configuration could look as follows: - -```yaml -engines: - payment: - name: default - rest: http://localhost:8080/engine-rest - authentication: - enabled: false - password: "" - user: "" - enabled: true - inventory: - name: default - rest: http://localhost:1234/engine-rest - authentication: - enabled: false - password: "" - user: "" - enabled: true -``` - -`payment` and `inventory` are custom names that were chosen to distinguish where the data was originally imported from later on. - -### Multiple engines with a shared database - -In this scenario you have multiple engines distributed in a cluster, where each engine instance is connected to a shared database. See the following diagram for an illustration: - -![Clustered Engine with shared Database](img/Clustered-Engine-Shared-Database.png) - -Now it could be possible to connect each engine to Optimize. Since every engine accesses the same data through the shared database, Optimize would import the engine data multiple times. There is also no guarantee that importing the same data multiple times will not cause any data corruption. For this reason we do not recommend using the setup from [multiple engines with distributed databases](#multiple-engines-with-distributed-databases). - -In the scenario of multiple engines with a shared database, it might make sense to balance the work load on each engine during the import. You can place a load balancer between the engines and Optimize, which ensures that the data is imported only once and the load is distributed among all engines. Thus, Optimize would only communicate to the load balancer. The following diagram depicts the described setup: - -![Multiple Engines with shared Database connected to Optimize](img/Multiple-Engine-Shared-Database.png) - -In general, tests have shown that Optimize puts a very low strain on the engine and its impact on the engine's operations are in almost all cases neglectable. - -## Authentication and authorization in the multiple engine setup - -When you configure multiple engines in Optimize, each process engine can host different users with a different set of authorizations. If a user is logging in, Optimize will try to authenticate and authorize the user on each configured engine. In case you are not familiar with how -the authorization/authentication works for a single engine scenario, visit the [User Access Management](./user-management.md) and [Authorization Management](./authorization-management.md) documentation first. - -To determine if a user is allowed to log in and which resources they are allowed to access within the multiple engine scenario, Optimize uses the following algorithm: - -_Given the user X logs into Optimize, go through the list of configured engines and try to authenticate the user X, for each successful authentication fetch the permissions of X for applications and process definitions from that engine and allow X to access Optimize if authorized by at least one engine._ - -To give you a better understanding of how that works, let's take the following multiple engine scenario: - -``` -- Engine `payment`: - - User without Optimize Application Authorization: Scooter, Walter - - User with Optimize Application Authorization: Gonzo - - Authorized Definitions for Gonzo, Scooter, Walter: Payment Processing - -- Engine `inventory`: - - User with Optimize Application Authorization: Piggy, Scooter - - Authorized Definitions for Piggy, Scooter: Inventory Checkout - -- Engine `order`: - - User with Optimize Application Authorization: Gonzo - - Authorized Definitions for Gonzo: Order Handling - -``` - -Here are some examples that might help you to understand the authentication/authorization procedure: - -- If `Piggy` logged in to Optimize, she would be granted access to Optimize and can create reports for the definition `Inventory Checkout`. -- If `Rizzo` logged in to Optimize, he would be rejected because the user `Rizzo` is not known to any engine. -- If `Walter` logged in to Optimize, he would be rejected despite being authorized to access the definition `Payment Processing` on engine `payment` because `Walter` does not have the `Optimize Application Authorization` required to access Optimize. -- If `Scooter` logged in to Optimize, he would be granted access to Optimize and can create reports for the definition `Inventory Checkout`. He wouldn't - get permissions for the `Payment Processining` or the `Order Handling` definition, since he doesn't have Optimize permissions on the `payment` or `order` engine. -- If `Gonzo` logged in to Optimize, he would be granted access to Optimize and can create reports for the definition `Payment Processining` as well as the `Order Handling` definition, since definitions authorizations are loaded from all engines the user could be authenticated with (in particular `payment` and `order`). diff --git a/optimize/self-managed/optimize-deployment/configuration/security-instructions.md b/optimize/self-managed/optimize-deployment/configuration/security-instructions.md index b0ff9980154..8880e3ac829 100644 --- a/optimize/self-managed/optimize-deployment/configuration/security-instructions.md +++ b/optimize/self-managed/optimize-deployment/configuration/security-instructions.md @@ -13,24 +13,11 @@ This guide also identifies areas where we consider security issues to be relevan - - -Camunda 7 only - -:::note Important! -Optimize does not operate on its own, but needs the Camunda 7 engine to import the data from and Elasticsearch to store the data. A detailed description of the setup can be found in the [architecture overview](../advanced-features/import-guide.md) guide. -::: - -The BPMN with its process engine is a full standalone application which has a dedicated [security](https://docs.camunda.org/manual/latest/user-guide/security/) guide. The sections that are of major importance for the communication with Optimize are: [enabling authentication for the REST API](https://docs.camunda.org/manual/latest/user-guide/security/#enabling-authentication-for-the-rest-api/#enabling-authentication-for-the-rest-api) and [enabling SSL/HTTPS](https://docs.camunda.org/manual/latest/user-guide/security/#enabling-authentication-for-the-rest-api). - - - Optimize already comes with a myriad of settings and security mechanism by default. In the following you will find the parts that still need manual adjustments. diff --git a/optimize/self-managed/optimize-deployment/configuration/setup-event-based-processes.md b/optimize/self-managed/optimize-deployment/configuration/setup-event-based-processes.md deleted file mode 100644 index 7109c5567f5..00000000000 --- a/optimize/self-managed/optimize-deployment/configuration/setup-event-based-processes.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -id: setup-event-based-processes -title: "Event-based processes" -description: "Read everything about how to configure event-based processes in Optimize." ---- - -Camunda 7 only - -Event-based processes are BPMN processes that can be created inside Optimize which are based on events originating from external systems. - -Event ingestion is the process of sending event data from external systems to Camunda Optimize to support business processes that are not fully automated with Camunda 7 yet. -Based on this data, it is possible to create process models inside Optimize - called event-based processes - that can be used in reports. - -To enable this feature, refer to [event-based process configuration](#event-based-process-configuration). - -## Event based process configuration - -To make use of ingested events and create event-based process mappings for them, the event-based process feature needs to be enabled in the [Optimize configuration](./system-configuration.md). - -This also includes authorizing particular users by their userId or user groups by their groupId to be able to create so-called event-based processes that can be used by other users of Optimize once published. - -A full configuration example authorizing the user `demo` and all members of the `sales` user group to manage event-based processes, enabling the event-based process import as well as configuring a [Public API](./system-configuration.md#public-api) accessToken with the value `secret`, would look like the following: - - api: - accessToken: secret - - eventBasedProcess: - authorizedUserIds: ['demo'] - authorizedGroupIds: ['sales'] - eventImport: - enabled: true - -## Use Camunda activity event sources for event based processes - -:::note Authorization to event-based processes -When Camunda activity events are used in event-based processes, Camunda Admin Authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](components/userguide/additional-features/event-based-processes.md#publishing-an-event-based-process) or at any time via the [Edit Access Option](components/userguide/additional-features/event-based-processes.md#event-based-process-list---edit-access) in the event-based process List. - -Visit [Authorization Management - event-based process](./authorization-management.md#event-based-processes) for the reasoning behind this behavior. -::: - -To publish event-based processes that include [Camunda Event Sources](components/userguide/additional-features/event-based-processes.md#camunda-events), it is required to set [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) to `true` for the connected engine the Camunda process originates from. - -:::note Heads Up! -You need to [reimport data](./../migration-update/camunda-7/instructions.md#force-reimport-of-engine-data-in-optimize) from this engine to have all historic Camunda events available for event-based processes. Otherwise, only new events will be included. -::: - -As an example, in order to be able to create event processes based on Camunda events from the configured engine named `camunda-bpm`, the configuration of that engine needs to have the `importEnabled` configuration property as well as the `eventImportEnabled` set to `true`: - - engines: - 'camunda-bpm': - importEnabled: true - eventImportEnabled: true diff --git a/optimize/self-managed/optimize-deployment/configuration/system-configuration-platform-7.md b/optimize/self-managed/optimize-deployment/configuration/system-configuration-platform-7.md deleted file mode 100644 index dd3eddf077f..00000000000 --- a/optimize/self-managed/optimize-deployment/configuration/system-configuration-platform-7.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -id: system-configuration-platform-7 -title: "Camunda 7 system configuration" -description: "Configuration for engines used to import data." ---- - -Configuration for engines used to import data. - -:::note -You have to have -at least one engine configured at all times. You can configure multiple engines -to import data from. Each engine configuration should have a unique alias associated -with it and represented by `${engineAlias}`. -::: - -Note that each connected engine must have its respective history level set to `FULL` in order to see all available data -in Optimize. Using any other history level will result in less data and/or functionality within Optimize. Furthermore, -history in a connected engine should be configured for long enough for Optimize to import it. If data is removed from an -engine before Optimize has imported it, that data will not be available in Optimize. - -| YAML path | Default value | Description | -| ---------------------------------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| engines.${engineAlias}.name | default | The process engine's name on the platform, this is the unique engine identifier on the platforms REST API. | -| engines.${engineAlias}.defaultTenant.id | null | A default tenantID to associate all imported data with if there is no tenant configured in the engine itself. This property is only relevant in the context of a `One Process Engine Per Tenant` tenancy. For details consult the Multi-Tenancy documentation. | -| engines.${engineAlias}.defaultTenant.name | null | The name used for this default tenant when displayed in the UI. | -| engines.${engineAlias}.excludeTenant | [ ] | Comma-separated list of tenant IDs to be excluded when importing data from the specified engine. When left empty, data from all tenants will be imported. Please note that the `defaultTenant` cannot be excluded (and therefore also not the entities with `null` as tenant) | -| engines.${engineAlias}.rest | http://localhost:8080/engine-rest | A base URL that will be used for connections to the Camunda Engine REST API. | -| engines.${engineAlias}.importEnabled | true | Determines whether this instance of Optimize should import definition & historical data from this engine. | -| engines.${engineAlias}.eventImportEnabled | false | Determines whether this instance of Optimize should convert historical data to event data usable for event based processes. | -| engines.${engineAlias}.authentication.enabled | false | Toggles basic authentication on or off. When enabling basic authentication, please be aware that you also need to adjust the values of the user and password. | -| engines.${engineAlias}.authentication.user | | When basic authentication is enabled, this user is used to authenticate against the engine.

Note: when enabled, it is required that the user has

to enable users to log in and Optimize to import the engine data. | -| engines.${engineAlias}.authentication.password | | When basic authentication is enabled, this password is used to authenticate against the engine. | -| engines.${engineAlias}.webapps.endpoint | http://localhost:8080/camunda | Defines the endpoint where the Camunda webapps are found. This allows Optimize to directly link to the other Camunda Web Applications, e.g. to jump from Optimize directly to a dedicated process instance in Cockpit | -| engines.${engineAlias}.webapps.enabled | true | Enables/disables linking to other Camunda Web Applications | - -## Camunda 7 common import settings - -Settings used by Optimize, which are common among all configured engines, such as -REST API endpoint locations, timeouts, etc. - -| YAML path | Default value | Description | -| --------------------------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| engine-commons.connection.timeout | 0 | Maximum time in milliseconds without connection to the engine that Optimize should wait until a timeout is triggered. If set to zero, no timeout will be triggered. | -| engine-commons.read.timeout | 0 | Maximum time a request to the engine should last before a timeout triggers. A value of zero means to wait an infinite amount of time. | -| import.data.activity-instance.maxPageSize | 10000 | Determines the page size for historic activity instance fetching. | -| import.data.incident.maxPageSize | 10000 | Determines the page size for historic incident fetching. | -| import.data.process-definition-xml.maxPageSize | 2 | Determines the page size for process definition XML model fetching. Should be a low value, as large models will lead to memory or timeout problems. | -| import.data.process-definition.maxPageSize | 10000 | Determines the page size for process definition entities fetching. | -| import.data.process-instance.maxPageSize | 10000 | Determines the page size for historic decision instance fetching. | -| import.data.variable.maxPageSize | 10000 | Determines the page size for historic variable instance fetching. | -| import.data.variable.includeObjectVariableValue | true | Controls whether Optimize fetches the serialized value of object variables from the Camunda Runtime REST API. By default, this is active for backwards compatibility. If no variable plugin to handle object variables is installed, it can be turned off to reduce the overhead of the variable import.

Note: Disabling the object variable value transmission is only effective with Camunda 7.15.0+. | -| import.data.user-task-instance.maxPageSize | 10000 | Determines the page size for historic User Task instance fetching. | -| import.data.identity-link-log.maxPageSize | 10000 | Determines the page size for historic identity link log fetching. | -| import.data.decision-definition-xml.maxPageSize | 2 | Determines the page size for decision definition xml model fetching. Should be a low value, as large models will lead to memory or timeout problems. | -| import.data.decision-definition.maxPageSize | 10000 | Determines the page size for decision definition entities fetching. | -| import.data.decision-instance.maxPageSize | 10000 | Overwrites the maximum page size for historic decision instance fetching. | -| import.data.tenant.maxPageSize | 10000 | Overwrites the maximum page size for tenant fetching. | -| import.data.group.maxPageSize | 10000 | Overwrites the maximum page size for groups fetching. | -| import.data.authorization.maxPageSize | 10000 | Overwrites the maximum page size for authorizations fetching. | -| import.data.dmn.enabled | true | Determines if the DMN/decision data, such as decision definitions and instances, should be imported. | -| import.data.user-task-worker.enabled | true | Determines if the User Task worker data, such as assignee or candidate group of a User Task, should be imported. | -| import.data.user-task-worker.metadata.includeUserMetaData | true | Determines whether Optimize imports and displays assignee user metadata, otherwise only the user id is shown. | -| import.data.user-task-worker.metadata.cronTrigger | `0 */3 * * *` | Cron expression for when to fully refresh the internal metadata cache, it defaults to every third hour. Otherwise deleted assignees/candidateGroups or metadata changes are not reflected in Optimize. You can either use the default Cron (5 fields) or the Spring Cron (6 fields) expression format here. For details on the format please refer to: Cron Expression Description Spring Cron Expression Documentation | -| import.data.user-task-worker.metadata.maxPageSize | 10000 | The max page size when multiple users or groups are iterated during the metadata refresh. | -| import.data.user-task-worker.metadata.maxEntryLimit | 100000 | The entry limit of the cache that holds the metadata, if you need more entries you can increase that limit. When increasing the limit, keep in mind to account for that by increasing the JVM heap memory as well. Please refer to the "Adjust Optimize heap size" documentation. | -| import.skipDataAfterNestedDocLimitReached | false | Some data can no longer be imported to a given document if its number of nested documents has reached the configured limit. Enable this setting to skip this data during import if the nested document limit has been reached. | -| import.elasticsearchJobExecutorThreadCount\* | 1 | Number of threads being used to process the import jobs per data type that are writing data to the database. | -| import.elasticsearchJobExecutorQueueSize\* | 5 | Adjust the queue size of the import jobs per data type that store data to the database. If the value is too large it might cause memory problems. | -| import.handler.backoff.interval | 5000 | Interval in milliseconds which is used for the backoff time calculation. | -| import.handler.backoff.max | 15 | Once all pages are consumed, the import scheduler component will start scheduling fetching tasks in increasing periods of time, controlled by "backoff" counter. | -| import.handler.backoff.isEnabled | true | Tells if the backoff is enabled of not. | -| import.indexType | import-index | The name of the import index type. | -| import.importIndexStorageIntervalInSec | 10 | States how often the import index should be stored to the database. | -| import.currentTimeBackoffMilliseconds | 300000 | This is the time interval the import backs off from the current tip of the time during the ongoing import cycle. This ensures that potentially missed concurrent writes in the engine are reread going back by the amount of this time interval. | -| import.identitySync.includeUserMetaData | true | Whether to include metaData (firstName, lastName, email) when synchronizing users. If disabled only user IDs will be shown on user search and in collection permissions. | -| import.identitySync.collectionRoleCleanupEnabled | false | Whether collection role cleanup should be performed. If enabled, users that no longer exist in the identity provider will be automatically removed from collection permissions. | -| import.identitySync.cronTrigger | `0 */2 * * *` | Cron expression for when the identity sync should run, defaults to every second hour. You can either use the default Cron (5 fields) or the Spring Cron (6 fields) expression format here.

For details on the format please refer to:
  • [Cron Expression Description](https://en.wikipedia.org/wiki/Cron)
  • [Spring Cron Expression Documentation](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html)
| -| import.identitySync.maxPageSize | 10000 | The max page size when multiple users or groups are iterated during the import. | -| import.identitySync.maxEntryLimit | 100000 | The entry limit of the user/group search cache. When increasing the limit, keep in mind to account for this by increasing the JVM heap memory as well. Please refer to the "Adjust Optimize heap size" documentation on how to configure the heap size. | - -\* Although this parameter includes `ElasticSearch` in its name, it applies to both ElasticSearch and OpenSearch installations. For backward compatibility reasons, the parameter has not been renamed. diff --git a/optimize/self-managed/optimize-deployment/configuration/user-management.md b/optimize/self-managed/optimize-deployment/configuration/user-management.md deleted file mode 100644 index 001faa9d4cc..00000000000 --- a/optimize/self-managed/optimize-deployment/configuration/user-management.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -id: user-management -title: "User access management" -description: "Define which users have access to Optimize." ---- - -Camunda 7 only - -:::note Good to know! - -Providing Optimize access to a user just enables them to log in to Optimize. To be able -to create reports, the user also needs to have permission to access the engine data. To see -how this can be done, refer to the [Authorization Management](./authorization-management.md) section. -::: - -You can use the credentials from the Camunda 7 users to access Optimize. However, for the users to gain access to Optimize, they need to be authorized. This is not done in Optimize itself, but needs to be configured in the Camunda 7 and can be achieved on different levels with different options. If you do not know how authorization in Camunda works, visit the [authorization service documentation](https://docs.camunda.org/manual/latest/user-guide/process-engine/authorization-service/). - -When defining an authorization to grant Optimize access, the most important aspect is that you grant access on resource type application with resource ID "optimize" (or "\*" if you want to grant access to all applications including Optimize). The permissions you can set, are either `ALL` or `ACCESS`. They are treated equally, so there is no difference between them. - -Authorizing users in admin can be done as follows: - -![Grant Optimize Access in Admin](img/Admin-GrantAccessAuthorizations.png) - -1. The first option allows access for Optimize on a global level. With this setting all users are allowed to log into Camunda Optimize. -2. The second option defines the access for a single user. The user `Kermit` can now log into Camunda Optimize. -3. The third option provides access on group level. All users belonging to the group `optimize-users` can log into Camunda Optimize. - -It is also possible to revoke the Optimize authorization for specific users or groups. For instance, you can define Optimize on a global scale, but exclude the `engineers` group: - -![Revoke Optimize Access for group 'engineers' in Admin](img/Admin-RevokeGroupAccess.png) - -When Optimize is configured to load data from multiple instances of Camunda 7, then it suffices to be granted by one instance for the user to be able to log into Optimize. Notice that, like for all authorizations, grants have precedence over revokes. That is, if there is a Camunda 7 instance that grants access to optimize to a user, the user can log in even if another instance revokes access to Optimize for this user. diff --git a/optimize/self-managed/optimize-deployment/configuration/webhooks.md b/optimize/self-managed/optimize-deployment/configuration/webhooks.md deleted file mode 100644 index 68966a7d3bf..00000000000 --- a/optimize/self-managed/optimize-deployment/configuration/webhooks.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -id: webhooks -title: "Webhooks" -description: "Read about how to configure alert notification webhooks for alerts on custom systems." ---- - -Camunda 7 only - -In addition to email notifications, you can configure webhooks in Optimize to receive alert notifications on custom systems. This page describes how to set up your webhook configurations using the example of a simple Slack app. - -## The alert webhook configuration - -You can configure a list of webhooks in the Optimize configuration, see [Alert Notification Webhooks](./system-configuration.md#alert-notification-webhooks) for available configuration properties. - -### Alert webhook payload placeholders - -The webhook request body can be customized to integrate with any string encoded HTTP endpoint to your needs. -In order to make use of certain properties of an alert, you can make use of placeholders within the payload string. - -| Placeholder | Sample Value | Description | -| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| ALERT_MESSAGE | Camunda Optimize - Report Status
Alert name: Too many incidents
Report name: Count of incidents
Status: Given threshold [60.0] was exceeded. Current value: 186.0. Please check your Optimize report for more information!
http://optimize.myorg:8090/#/report/id/ | This is the full alert message that is also used in the email alert content. | -| ALERT_NAME | Some Alert | The name given to the alert when it was created. | -| ALERT_REPORT_LINK | http://optimize.myorg/#/report/id/ | The direct link to the report the alert is based on. | -| ALERT_CURRENT_VALUE | 186.0 | The current value of the number report the alert is based on. | -| ALERT_THRESHOLD_VALUE | 60.0 | The configured alert threshold value. | -| ALERT_THRESHOLD_OPERATOR | > | The threshold operator configured for the aler | -| ALERT_TYPE | new | The type of the alert notification. Can be one of:
`new` - the threshold was just exceeded and the alert was triggered
`reminder` - the threshold was exceeded previously already and this is a reminder notification
`resolved` - the threshold is met again and the alert is resolved | -| ALERT_INTERVAL | 5 | The configured interval at which the alert condition is checked. | -| ALERT_INTERVAL_UNIT | seconds | The unit for the configured alert interval. Can be one of: seconds, minutes, hours, days, weeks, months | - -The placeholders can be used within the `defaultPayload` property of each webhook configuration: - -```yaml -webhookAlerting: - webhooks: - 'myWebhook': - ... - defaultPayload: 'The alert {{ALERT_NAME}} with the threshold of `{{ALERT_THRESHOLD_OPERATOR}}{{ALERT_THRESHOLD_VALUE}}` was triggered as *{{ALERT_TYPE}}*.' -``` - -### Example Webhook - Slack - -If your organization uses Slack, you can set up Optimize so that it can use a webhook to send alert notifications to a Slack channel of your choice. - -To configure the webhook in Optimize's `environment-config`, you first need to create a new Slack app for your organization's Slack workspace, as described in [Slack's own documentation here](https://api.slack.com/messaging/webhooks). You only need to follow the steps until you have your webhook URL - no need to write any code to use the webhook to post any messages, Optimize will take care of this for you. Once you have followed these steps, you can copy the Webhook URL from Slack's "Webhook URLs for Your Workspace" section into the configuration as follows: - -```bash -webhookAlerting: - webhooks: - # Name of the webhook, must be unique. - 'mySlackWebhook': - # URL of the webhook which can receive alerts from Optimize - url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX' - # Map of the headers of the request to the sent to the webhook URL - headers: - 'Content-type': 'application/json' - # HTTP Method for the webhook request - httpMethod: 'POST' - # The default payload structure with the alertMessagePlaceholder {{ALERT_MESSAGE}} for the alert text. - # Optimize will replace this placeholder with the content of the alert message. - defaultPayload: '{"text": "The alert *{{ALERT_NAME}}* was triggered as *{{ALERT_TYPE}}*, you can view the report <{{ALERT_REPORT_LINK}}|here>."}' -``` - -All configuration parameters are described in the [Alert Notification Webhooks Configuration Section](./system-configuration.md#alert-notification-webhooks). - -With this configuration, when you create an alert for a report in Optimize, `mySlackWebhook` will appear in the targets selection dropdown in the alert creation modal. Once you have selected the webhook from the dropdown and saved the alert, Optimize will send a message to the channel you have selected when creating your Slack app whenever an alert notification is triggered. The content of the message is the same as the content of the alert email notifications. One alert may send either or both email and webhook notifications. diff --git a/optimize/self-managed/optimize-deployment/install-and-start.md b/optimize/self-managed/optimize-deployment/install-and-start.md index a514fe0b8bf..a987b205a90 100644 --- a/optimize/self-managed/optimize-deployment/install-and-start.md +++ b/optimize/self-managed/optimize-deployment/install-and-start.md @@ -4,206 +4,6 @@ title: "Installation" description: "Install and configure Optimize Self-Managed." --- -## Camunda 8 stack - Please refer to the [Installation Guide]($docs$/self-managed/setup/overview/) for details on how to install Optimize as part of a Camunda 8 stack. -## Camunda 7 Enterprise stack - -Camunda 7 only - -This document describes the installation process of the Camunda Optimize and connect it to a Camunda 7 stack, as well as various configuration possibilities available after initial installation. - -Before proceeding with the installation, read the article about [supported environments]($docs$/reference/supported-environments). - -### Local installation - -If you wish to run Camunda Optimize natively on your hardware you can download one of the two offered distributions and run them. Especially the demo distribution might be useful to try out Camunda Optimize the first time, it also comes with a simple demo process to explore the functionality. - -#### Prerequisites - -If you intend to run Optimize on your local machine, ensure you have a supported JRE (Java Runtime Environment) installed; best refer to the [Java Runtime]($docs$/reference/supported-environments#camunda-8-self-managed) section on which runtimes are supported. - -#### Demo distribution with Elasticsearch - -The Optimize Demo distribution comes with an Elasticsearch instance. The supplied Elasticsearch server is not customized or tuned by Camunda in any manner. It is intended to make the process of trying out Optimize as easy as possible. The only requirement in addition to the demo distribution itself is a running engine (ideally on localhost). - -To install the demo distribution containing Elasticsearch, download the archive with the latest version from the [download page](https://docs.camunda.org/enterprise/download/#camunda-optimize) and extract it to the desired folder. After that, start Optimize by running the script `optimize-demo.sh` on Linux and Mac: - -```bash -./optimize-demo.sh -``` - -or `optimize-demo.bat` on Windows: - -```batch -.\optimize-demo.bat -``` - -The script ensures that a local version of Elasticsearch is started and waits until it has become available. Then, it starts Optimize, ensures it is running, and automatically opens a tab in a browser to make it very convenient for you to try out Optimize. - -In case you need to start an Elasticsearch instance only, without starting Optimize (e.g. to perform a reimport), you can use the `elasticsearch-startup.sh` script: - -```bash -./elasticsearch-startup.sh -``` - -or `elasticsearch-startup.bat` on Windows: - -```batch -.\elasticsearch-startup.bat -``` - -#### Production distribution without a database - -This distribution is intended to be used in production. To install it, take the following steps: - -1. [Download](https://docs.camunda.org/enterprise/download/#camunda-optimize) the production archive, which contains all the required files to startup Camunda Optimize without a database. -2. [Configure the database connection](./configuration/getting-started.md#elasticsearchopensearch-configuration) to connect to your pre-installed Elasticsearch/OpenSearch instance and [configure the Camunda 7 connection](./configuration/getting-started.md#camunda-platform-7-configuration) to connect Optimize to your running engine. -3. Start your Optimize instance by running the script `optimize-startup.sh` on Linux and Mac: - -```bash -./optimize-startup.sh -``` - -or `optimize-startup.bat` on Windows: - -```batch -.\optimize-startup.bat -``` - -### Dockerized installation - -The Optimize Docker images can be used in production. They are hosted on our dedicated Docker registry and are available to enterprise customers who bought Optimize only. You can browse the available images in our [Docker registry](https://registry.camunda.cloud) after logging in with your credentials. - -Make sure to log in correctly: - -``` -$ docker login registry.camunda.cloud -Username: your_username -Password: ****** -Login Succeeded -``` - -After that, [configure the database connection](./configuration/getting-started.md#elasticsearchopensearch-configuration) to connect to your pre-installed Elasticsearch/OpenSearch instance and [configure the Camunda connection](./configuration/getting-started.md#camunda-platform-7-configuration) to connect Optimize to your running engine. For very simple use cases with only one Camunda Engine and one database node, you can use environment variables instead of mounting configuration files into the Docker container: - -#### Getting started with the Optimize Docker image - -##### Full local setup - -To start the Optimize Docker image and connect to an already locally running Camunda 7 as well as Elasticsearch instance you could run the following command: - -``` -docker run -d --name optimize --network host \ - registry.camunda.cloud/optimize-ee/optimize:{{< currentVersionAlias >}} -``` - -If you wish to connect to an OpenSearch database instead, please make sure to additionally set the environment variable `CAMUNDA_OPTIMIZE_DATABASE` to `opensearch`. - -``` -docker run -d --name optimize --network host \ - -e CAMUNDA_OPTIMIZE_DATABASE=opensearch \ - registry.camunda.cloud/optimize-ee/optimize:{{< currentVersionAlias >}} -``` - -##### Connect to remote Camunda 7 and database - -If, however, your Camunda 7 as well as Elasticsearch instance reside on a different host, you may provide their destination via the corresponding environment variables: - -``` -docker run -d --name optimize -p 8090:8090 -p 8091:8091 \ - -e OPTIMIZE_CAMUNDABPM_REST_URL=http://yourCamBpm.org/engine-rest \ - -e OPTIMIZE_ELASTICSEARCH_HOST=yourElasticHost \ - -e OPTIMIZE_ELASTICSEARCH_HTTP_PORT=9200 \ - registry.camunda.cloud/optimize-ee/optimize:{{< currentVersionAlias >}} -``` - -Alternatively, for OpenSearch: - -``` -docker run -d --name optimize -p 8090:8090 -p 8091:8091 \ - -e OPTIMIZE_CAMUNDABPM_REST_URL=http://yourCamBpm.org/engine-rest \ - -e CAMUNDA_OPTIMIZE_DATABASE=opensearch \ - -e CAMUNDA_OPTIMIZE_OPENSEARCH_HOST=yourOpenSearchHost \ - -e CAMUNDA_OPTIMIZE_OPENSEARCH_HTTP_PORT=9205 \ - registry.camunda.cloud/optimize-ee/optimize:{{< currentVersionAlias >}} -``` - -#### Available environment variables - -There is only a limited set of configuration keys exposed via environment variables. These mainly serve the purpose of testing and exploring Optimize. For production configurations, we recommend following the setup in documentation on [configuration using a `environment-config.yaml` file](#configuration-using-a-yaml-file). - -The most important environment variables you may have to configure are related to the connection to the Camunda 7 REST API, as well as Elasticsearch/OpenSearch: - -- `OPTIMIZE_CAMUNDABPM_REST_URL`: The base URL that will be used for connections to the Camunda Engine REST API (default: `http://localhost:8080/engine-rest`) -- `OPTIMIZE_CAMUNDABPM_WEBAPPS_URL`: The endpoint where to find the Camunda web apps for the given engine (default: `http://localhost:8080/camunda`) - -For an ElasticSearch installation: - -- `OPTIMIZE_ELASTICSEARCH_HOST`: The address/hostname under which the Elasticsearch node is available (default: `localhost`) -- `OPTIMIZE_ELASTICSEARCH_HTTP_PORT`: The port number used by Elasticsearch to accept HTTP connections (default: `9200`) -- `CAMUNDA_OPTIMIZE_ELASTICSEARCH_SECURITY_USERNAME`: The username for authentication in environments where a secured Elasticsearch connection is configured. -- `CAMUNDA_OPTIMIZE_ELASTICSEARCH_SECURITY_PASSWORD`: The password for authentication in environments where a secured Elasticsearch connection is configured. - -For an OpenSearch installation: - -- `CAMUNDA_OPTIMIZE_DATABASE`: The database type to connect to, in this case `opensearch` (default: `elasticsearch`) -- `CAMUNDA_OPTIMIZE_OPENSEARCH_HOST`: The address/hostname under which the OpenSearch node is available (default: `localhost`) -- `CAMUNDA_OPTIMIZE_OPENSEARCH_HTTP_PORT`: The port number used by OpenSearch to accept HTTP connections (default: `9205`) -- `CAMUNDA_OPTIMIZE_OPENSEARCH_SECURITY_USERNAME`: The username for authentication in environments where a secured OpenSearch connection is configured. -- `CAMUNDA_OPTIMIZE_OPENSEARCH_SECURITY_PASSWORD`: The password for authentication in environments where a secured OpenSearch connection is configured. - -A complete sample can be found within [Connect to remote Camunda 7 and database](#connect-to-remote-camunda-7-and-database). - -Furthermore, there are also environment variables specific to the [event-based process](components/userguide/additional-features/event-based-processes.md) feature you may make use of: - -- `OPTIMIZE_CAMUNDA_BPM_EVENT_IMPORT_ENABLED`: Determines whether this instance of Optimize should convert historical data to event data usable for event-based processes (default: `false`) -- `OPTIMIZE_EVENT_BASED_PROCESSES_USER_IDS`: An array of user ids that are authorized to administer event-based processes (default: `[]`) -- `OPTIMIZE_EVENT_BASED_PROCESSES_IMPORT_ENABLED`: Determines whether this Optimize instance performs event-based process instance import. (default: `false`) - -Additionally, there are also runtime related environment variables such as: - -- `OPTIMIZE_JAVA_OPTS`: Allows you to configure/overwrite Java Virtual Machine (JVM) parameters; defaults to `-Xms1024m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m`. - -In case you want to make use of the Optimize Public API, you can also set **one** of the following variables: - -- `SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK_SET_URI` Complete URI to get public keys for JWT validation, e.g. `https://weblogin.cloud.company.com/.well-known/jwks.json`. For more details see [public API authentication](../../apis-tools/optimize-api/optimize-api-authentication.md). -- `OPTIMIZE_API_ACCESS_TOKEN` secret static shared token to be provided to the secured REST API on access in the authorization header. Will - be ignored if `SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK_SET_URI` is also set. For more details see [public API - authentication](../../apis-tools/optimize-api/optimize-api-authentication.md). - -You can also adjust logging levels using environment variables as described in the [logging configuration](./configuration/logging.md). - -#### License key file - -If you want the Optimize Docker container to automatically recognize your [license key file](./configuration/license.md), you can use standard [Docker means](https://docs.docker.com/storage/volumes/) to make the file with the license key available inside the container. Replacing the `{{< absolutePathOnHostToLicenseFile >}}` with the absolute path to the license key file on your host can be done with the following command: - -``` -docker run -d --name optimize -p 8090:8090 -p 8091:8091 \ - -v {{< absolutePathOnHostToLicenseFile >}}:/optimize/config/OptimizeLicense.txt:ro \ - registry.camunda.cloud/optimize-ee/optimize:{{< currentVersionAlias >}} -``` - -#### Configuration using a yaml file - -In a production environment, the limited set of [environment variables](#available-environment-variables) is usually not enough so that you want to prepare a custom `environment-config.yaml` file. Refer to the [Configuration](./configuration/system-configuration.md) section of the documentation for the available configuration parameters. - -You need to mount this configuration file into the Optimize Docker container to apply it. Replacing the `{{< absolutePathOnHostToConfigurationFile >}}` with the absolute path to the `environment-config.yaml` file on your host can be done using the following command: - -``` -docker run -d --name optimize -p 8090:8090 -p 8091:8091 \ - -v {{< absolutePathOnHostToConfigurationFile >}}:/optimize/config/environment-config.yaml:ro \ - registry.camunda.cloud/optimize-ee/optimize:{{< currentVersionAlias >}} -``` - -In managed Docker container environments like [Kubernetes](https://kubernetes.io/), you may set this up using [ConfigMaps](https://kubernetes.io/docs/concepts/configuration/configmap/). - -### Usage - -You can start using Optimize right away by opening the following URL in your browser: [http://localhost:8090](http://localhost:8090) - -Then, you can use the users from the Camunda 7 to log in to Optimize. For details on how to configure the user access, consult the [user access management](./configuration/user-management.md) section. - -## Next steps - -To get started configuring the Optimize web container, Elasticsearch/OpenSearch, Camunda 7, Camunda 8, and more, visit the [getting started section](./configuration/getting-started.md) of our configuration documentation. +To get started configuring the Optimize web container, Elasticsearch/OpenSearch, Camunda 8, and more, visit the [getting started section](./configuration/getting-started.md) of our configuration documentation. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.1-to-2.2.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.1-to-2.2.md deleted file mode 100644 index c7f9665f08a..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.1-to-2.2.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -id: 2.1-to-2.2 -title: "Update notes (2.1 to 2.2)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 2.2.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Known issues - -When updating Optimize, certain features might not work out of the box for the old data. This is because old versions of Optimize -do not fetch data that is necessary for the new feature to work. For this update, the following features do not work on the old data: - -- [Process instance parts](components/userguide/process-analysis/report-analysis/process-instance-parts.md) -- [Canceled instances only filter](components/userguide/process-analysis/instance-state-filters.md#canceled-instances-only-filter) - -To enable this feature for your old data, follow the steps in the [engine data reimport guide](./../../reimport.md). diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.2-to-2.3.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.2-to-2.3.md deleted file mode 100644 index ff442b325b8..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.2-to-2.3.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -id: 2.2-to-2.3 -title: "Update notes (2.2 to 2.3)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 2.3.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Known issues - -### Broken links - -After the migration, you might encounter some unusual errors in Optimize: - -- Buttons or links are not working when you click on them. -- You get errors in your web browser when you open the Optimize page. - -In this case, clear your browser cache so your browser loads the new Optimize resources. - -### Broken raw data reports - -Apart from caching issues, there is the following list of known data update limitations: - -- Raw data reports with custom column order are broken showing the following error when opened: - - ```javascript - Cannot read property 'indexOf' of undefined - ``` - - To resolve this, either delete and recreate those reports or update to 2.4.0 which resolves the issue. - -- Combined process reports might cause the reports page to crash with the following error - - ```javascript - Oh no :( - Minified React error #130; visit http://facebook.github.io/react/docs/error-decoder.html?invariant=130&args[]=undefined&args[]= for the full message or use the non-minified dev environment for full errors and additional helpful warnings. - ``` - - To resolve this issue, update to 2.4.0 immediately. - -### Misinterpreted cron expressions - -The configuration of Optimize allows you to define when the history cleanup is triggered using cron expression notation. However, the values are incorrectly interpreted in Optimize. For example, the `historyCleanup.cronTrigger` configuration has the default value `0 1 * * *`, which should be 01:00 AM every day. Unfortunately, a bug causes this to be interpreted as every hour. - -To fix this, use the Spring [cron expression notation](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronExpression.html). For instance, the default value for `historyCleanup.cronTrigger` would then be `0 0 1 * * *`. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.3-to-2.4.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.3-to-2.4.md deleted file mode 100644 index 1a61bfa6647..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.3-to-2.4.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: 2.3-to-2.4 -title: "Update notes (2.3 to 2.4)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 2.4.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Changes in the supported environments - -With this Optimize version, the supported versions of Elasticsearch also change. Now, Optimize only connects to versions 6.2.0+. See the [Supported Environments]($docs$/reference/supported-environments) sections for details. - -Hence, you need to update Elasticsearch to use the new Optimize version. See the general [Elasticsearch Update Guide](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html) on how to do that. Usually, the only thing you need to do is to perform a [rolling update](https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html). - -## Known issues - -### Confusing warning during the update - -On executing the update, you may see the following warning a couple of times in the update log output: - -``` -Deprecated big difference between max_gram and min_gram in NGram Tokenizer, expected difference must be less than or equal to: [1] -``` - -You can safely ignore this warning. The update itself amends the relevant index settings so the warning will be resolved. - -## Misinterpreted cron expressions - -The configuration of Optimize allows you to define when the history cleanup is triggered using cron expression notation. However, the values are incorrectly interpreted in Optimize. For example, the `historyCleanup.cronTrigger` configuration has the default value `0 1 * * *`, which should be 01:00 AM every day. Unfortunately, a bug causes this to be interpreted as every hour. - -To fix this, use the Spring [cron expression notation](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronExpression.html). For instance, the default value for `historyCleanup.cronTrigger` would then be `0 0 1 * * *`. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.4-to-2.5.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.4-to-2.5.md deleted file mode 100644 index 77566683f5e..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.4-to-2.5.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -id: 2.4-to-2.5 -title: "Update notes (2.4 to 2.5)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 2.5.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Limitations - -If you intend to make use of the new [Multi-Tenancy-Feature](./../../configuration/multi-tenancy.md), you need to perform a [full reimport](../../reimport.md) and may need to amend your existing reports by selecting the tenant you want the report to be based on. - -## Known issues - -### Changes in the plugin system - -There are required changes for plugins implementing `VariableImportAdapter`. -If you use such a plugin, perform the following steps: - -1. In the plugin, update the Optimize plugin dependency to version 2.5. -2. The class `PluginVariableDto` now contains the new field `tenantId`. Depending on your plugin implementation, it might be necessary to include handling this field to not lose it on import. -3. Build the new version of the plugin and replace the old `jar` with the new one. - -### Misinterpreted cron expressions - -The configuration of Optimize allows you to define when the history cleanup is triggered using cron expression notation. However, the values are incorrectly interpreted in Optimize. For example, the `historyCleanup.cronTrigger` configuration has the default value `0 1 * * *`, which should be 01:00 AM every day. Unfortunately, a bug causes this to be interpreted as every hour. - -To fix this, use the Spring [cron expression notation](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronExpression.html). For instance, the default value for `historyCleanup.cronTrigger` would then be `0 0 1 * * *`. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.5-to-2.6.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.5-to-2.6.md deleted file mode 100644 index 40704fff008..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.5-to-2.6.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -id: 2.5-to-2.6 -title: "Update notes (2.5 to 2.6)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 2.6.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## New behavior of Optimize - -With the introduction of the new collection and permission concept, you might find the behavior of Optimize startling and thus the subsequent sections will guide you through the changes. - -### Collection permissions & private reports - -With Optimize 2.6.0, a resource permission system is introduced. This system provides private reports/dashboard entities in the **Home** section as well as the possibility to manage permissions on collection entity level in order to share it with other Optimize users. - -This ultimately means that after the migration to Optimize 2.6.0, each user only sees the entities they originally created. This includes reports, dashboards, and collections. In order for other users to be able to access those entities, they need to be copied into a collection and view access to this new collection must be granted to other users. - -#### Grant access to a private report - -Given the scenario that the user `john` owns a report `John's Report` that user `mary` was used to access in Optimize 2.5.0 the user `john` can share this report in Optimize 2.6.0 with `mary` following these steps: - -1. User `john` creates a collection named e.g. `John's Share`. - ![Create a Collection](img/private_report_access_1_create_collection.png) -1. User `john` grants user `mary` the viewer role on the collection `John's Share`. - ![Create Permission for Mary](img/private_report_access_2_create_view_permission_mary.png) -1. User `john` copies and moves the `John's Report` report to the `John's Share` collection. - ![Copy Report 1](img/private_report_access_3_1_copy_report.png) - ![Copy Report 2](img/private_report_access_3_2_copy_report.png) -1. User `mary` will now see the Collection `John's Share` in her **Home** section of Optimize. - ![Mary sees shared collection](img/private_report_access_4_mary_sees_collection.png) - -#### Grant access to an existing collection - -Given the scenario that the user `john` owns a collection `John's Collection` that user `mary` was used to access in Optimize 2.5.0, the user `john` can share this collection with `mary` in Optimize 2.6.0, granting user `mary` a permission role on that collection. Refer to **Step 2** in [grant access to a private report](#grant-access-to-a-private-report). - -#### Super User role - -You can now grant users `Super User` permissions, which allows them to bypass the owner/collection permissions, enabling them to access all available entities. This can, for example, be useful if entities are owned by users that are not available anymore. - -To grant Super User permissions, see the [Authentication & Security Section](./../../configuration/system-configuration.md#security). - -## Known issues - -### Rebuild your Optimize plugins - -With Optimize 2.6.0, the plugin system was overhauled. For your plugins to continue to work, you have to rebuild them with the latest Optimize plugin artifact as an uber jar. Refer to the updated [plugin setup guide](./../../plugins/plugin-system.md#set-up-your-environment). - -### Misinterpreted cron expressions - -The configuration of Optimize allows you to define when the history cleanup is triggered using cron expression notation. However, the values are incorrectly interpreted in Optimize. For example, the `historyCleanup.cronTrigger` configuration has the default value `0 1 * * *`, which should be 01:00 AM every day. Unfortunately, a bug causes this to be interpreted as every hour. - -To fix this, use the Spring [cron expression notation](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronExpression.html). For instance, the default value for `historyCleanup.cronTrigger` would then be `0 0 1 * * *`. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.6-to-2.7.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.6-to-2.7.md deleted file mode 100644 index 5bf105c8018..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.6-to-2.7.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -id: 2.6-to-2.7 -title: "Update notes (2.6 to 2.7)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 2.7.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Changes in the supported environments - -With this Optimize version, there are also changes in the supported versions of Elasticsearch and Camunda 7. - -### Elasticsearch - -Optimize now requires at least Elasticsearch `6.4.0`. -See the [Supported Environments]($docs$/reference/supported-environments) sections for the full range of supported versions. - -If you need to update your Elasticsearch cluster, refer to the general [Elasticsearch Update Guide](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html) on how to do that. Usually, the only thing you need to do is perform a [rolling update](https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html). - -### Camunda 7 - -Optimize now requires at least Camunda 7 `7.10.6`. -See the [Supported Environments]($docs$/reference/supported-environments) sections for the full range of supported versions. - -### Java - -Optimize now only supports Java 8, 11, and 13. Support for 12 was dropped as it reached [end of support](https://www.oracle.com/technetwork/java/java-se-support-roadmap.html). -See the [Supported Environments]($docs$/reference/supported-environments/) sections for the full range of supported versions. - -## Known issues - -### Collection permissions get lost on failed identity sync - -Optimize has an identity synchronization in place that fetches all users from the engine that have access to Optimize. By doing this, Optimize can easily check if the user is allowed to access the application and is able to quickly display metadata, such as the email address and full name of the user. - -If you start Optimize `2.7` and the engine is down at the time of a user synchronization, it is possible that you will lose all your collection permissions. This is due to Optimize not being able to receive the correct authorizations for the collections and as a result, all the collection roles are removed. - -The easiest way to recover your permissions and regain access to your collections would be to add a user ID to the `auth.superUserIds` property of your [configuration file](./../../configuration/system-configuration.md#security), then re-adding the necessary permissions as this user. - -After you have regained the roles of your collections, you should consider one of the two next follow-up steps: - -- Preferred solution: Update to Optimize 3.2.0 to fix the issue. -- Interim solution: In case you anticipate the engine being taken down, we recommend also stopping Optimize to prevent the same scenario from reoccurring. In addition, you can also change the frequency at which this collection cleanup occurs by adjusting the `import.identitySync.cronTrigger` expression in your [configuration file](./../../configuration/system-configuration.md#security) to `0 0 1 * * *`, which results in executing the sync once per day at 01:00 AM. - -### Misinterpreted cron expressions - -The configuration of Optimize allows you to define when the history cleanup is triggered using cron expression notation. However, the values are incorrectly interpreted in Optimize. For example, the `historyCleanup.cronTrigger` configuration has the default value `0 1 * * *`, which should be 01:00 AM every day. Unfortunately, a bug causes this to be interpreted as every hour. - -To fix this, use the Spring [cron expression notation](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronExpression.html). For instance, the default value for `historyCleanup.cronTrigger` would then be `0 0 1 * * *`. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.7-to-3.0.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.7-to-3.0.md deleted file mode 100644 index 81c0db8fe39..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/2.7-to-3.0.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -id: 2.7-to-3.0 -title: "Update notes (2.7 to 3.0)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 3.0.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). - -If you have done an Optimize update prior to this one, note the [changes in the update procedure](#changes-in-the-update-procedure). - -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Known issues - -### Potential NullpointerException on Update to 3.0.0 - -In some circumstances, the update to 3.0.0 might fail with the following log output: - -``` - 06:00:00.000 - Starting step 1/9: UpdateIndexStep - ... - 06:00:02.066 - Error while executing update from 2.7.0 to 3.0.0 - java.lang.NullPointerException: null - at org.camunda.optimize.upgrade.steps.schema.UpdateIndexStep.execute(UpdateIndexStep.java:71) - ... -``` - -This is a known issue that occurs if you previously updated to Optimize 2.7.0. You can solve this issue by executing the following command on your Elasticsearch cluster before running the update again. - -``` -curl -s -XDELETE :9200/optimize-event_v2-000001 -``` - -The update should now successfully complete. - -### Cannot disable import from particular engine - -In 3.0.0, it is not possible to deactivate the import of a particular Optimize instance from a particular engine (via `engines.${engineAlias}.importEnabled`). In case your environment is using that feature for e.g. a [clustering setup](./../../configuration/clustering.md), we recommend you to stay on Optimize 2.7.0 until the release of Optimize 3.1.0 (Scheduled for 14/07/2020) and then update straight to Optimize 3.1.0. - -## Limitations - -### User operation log import - -Optimize now imports the user operation log. Due to this, the engine user now requires engine permissions to read the user operation log, see also the [configuration documentation](./../../configuration/system-configuration-platform-7.md). - -### Suspension filter - -Due to a limitation of the user operations log data retrieval in the engine API, process instance suspension states of instances suspended after Optimize has been started are not correctly imported. This leads to inaccuracies in the [Suspended Instances Only Filter](components/userguide/process-analysis/instance-state-filters.md#suspended-and-non-suspended-instances-only-filter), which will only apply to instances which were suspended before they were imported by Optimize. - -Furthermore, since the suspension state of process instances in Optimize is updated according to historic data logs, if you have [history cleanup](./../../configuration/history-cleanup.md) enabled it is possible that the relevant data will be cleaned up before Optimize can import it, leading to inaccuracies in the state of suspended process instances which will then not appear in the appropriate filter. - -### Event-based processes - -There might be cases where an incorrect and lower than expected number of events are shown when mapping either process start and end events to nodes on your event based process, or -when mapping multiple engine task events from the same engine model. - -These are known issues and are [fixed](https://jira.camunda.com/browse/OPT-3515) in the upcoming Optimize 3.1.0 release. If using this version or newer, you can correct previously imported data in your event-based process either -by recreating or republishing the event based process. - -Alternatively, [forcing a reimport](./instructions.md#force-reimport-of-engine-data-in-optimize) -of the engine data after updating to a version with this fix will correct these errors too. - -## Changes in the update procedure - -Although Optimize 3.0.0 is a major version change, we still allow a rolling update from 2.7 to the new version. However, since the support for Elasticsearch changed to the latest major version 7.X, there is an additional step in the update routine involved. - -Before you can perform the actual update, you need to do a [rolling update](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html) of Elasticsearch from 6.X to 7.X. The exact details can be found in the [Migration & Update Instructions](./instructions.md). - -Please note that the following updates are not supported by Elasticsearch: - -- 6.8 to 7.0. -- 6.7 to 7.1.–7.6.X. - -## Changes in the supported environments - -With this Optimize version, there are also changes in the supported versions of the Elasticsearch and Camunda 7. - -### Elasticsearch - -Optimize now requires at least Elasticsearch `7.0.0` and supports the latest major version up to `7.6.0`. -See the [Supported Environments]($docs$/reference/supported-environments) sections for the full range of supported versions. - -In case you need to update your Elasticsearch cluster, refer to the general [Elasticsearch Update Guide](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html) on how to do that. Usually, the only thing you need to do is to perform a [rolling update](https://www.elastic.co/guide/en/elastic-stack/current/upgrading-elasticsearch.html#rolling-upgrades). There's also a dedicated section in the [Migration & Update Instructions](./instructions.md) on how to perform the rolling update. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.0-to-3.1.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.0-to-3.1.md deleted file mode 100644 index e7cfca376f4..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.0-to-3.1.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -id: 3.0-to-3.1 -title: "Update notes (3.0 to 3.1)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 3.1.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Changes in the supported environments - -With this Optimize version, there are also changes in the supported versions of Camunda 7. - -### Camunda 7 - -Optimize now requires at least Camunda 7 `7.11.13`. -See the [Supported Environments]($docs$/reference/supported-environments) sections for the full range of supported versions. - -## Breaking changes - -With Optimize 3.1.0, the [History Cleanup](./../../configuration/history-cleanup.md) configuration was restructured and needs to be adjusted accordingly. - -Major changes are the removal of the global feature flag `historyCleanup.enabled` in favor of entity type specific feature flags as well as a relocation of process and decision specific configuration keys. Refer to the [configuration documentation](./../../configuration/system-configuration.md#history-cleanup-settings) for details. - -With this release, Optimize now imports deployment data from the engine when importing definitions. If Optimize is importing from an authenticated engine, the configured user must now have READ permission on the `Deployment` resource. - -## Known issues - -### Event-based processes - event counts/suggestions - -As part of the update from Optimize 3.0 to 3.1, the event counts and the next suggested events used as part of the event based process feature are recalculated. Until the recalculation is complete, the event counts might be incorrect and the suggestions inaccurate. - -Once the recalculation is complete, the event counts will return to being correct and you will see more accurate suggested next events. - -### Decision report filter incompatibilities - update and runtime errors possible - -Due to a restriction in the database schema for decision reports, the usage of filters is limited in Optimize 3.1.0 as well as 3.2.0 and will only be fully working again in Optimize 3.3.0. -This results in the behavior that once a certain filter type was used, e.g. a fixed evaluation date filter, another filter type cannot be used anymore, e.g. a relative evaluation date filter. This issue can occur at runtime as well as during the update. - -Usually, you will see a log similar to this one when you hit this issue: - -``` -{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"object mapping for [data.filter.data.start] tried to parse field [start] as object, but found a concrete value"}],"type":"mapper_parsing_exception","reason":"object mapping for [data.filter.data.start] tried to parse field [start] as object, but found a concrete value"},"status":400} -``` - -_We thus recommend removing all filters used on decision reports before updating to Optimize 3.1.0._ - -## Limitations - -### User permissions - -With Optimize 3.1, user and group related permissions are checked by Optimize to determine whether the current user is authorized to access other users/groups within Optimize, for example when adding new roles to a collection. - -Due to this, it is now required to explicitly grant users the relevant authorizations, otherwise they will not be able to see other users and groups in Optimize. More information on authorizations can be found [here](./../../configuration/authorization-management.md#user-and-group-related-authorizations). - -### User operations log import - -With Optimize 3.1, the user operations log is imported to detect changes to running instances' suspension status. The user operations log informs Optimize when instance suspension requests have been received by the engine, and Optimize then reimports the relevant instances to ensure their suspension state is set correctly in Optimize. - -However, if instances are suspended using the engine API's `executionDate` parameter, with which suspension operations can be triggered with a delay, Optimize currently is not able to detect this delay, and will re-import the running process instances at the time the suspension operation is read from the user operations log, not at the time the suspension takes place. This can lead to inaccuracies in the suspension state of process instances in Optimize. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.1-to-3.2.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.1-to-3.2.md deleted file mode 100644 index 9a379640e2d..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.1-to-3.2.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -id: 3.1-to-3.2 -title: "Update notes (3.1 to 3.2)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 3.3.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Known issues - -### Decision report filter incompatibilities - update and runtime errors possible - -Due to a restriction in the database schema for decision reports, the usage of filters is limited in Optimize 3.2.0 and will only be fully working again in Optimize 3.3.0. - -This results in the behavior that once a certain filter type was used, e.g. a fixed evaluation date filter, another filter type cannot be used anymore, e.g. a relative evaluation date filter. This issue can occur at runtime as well as during the update. - -Usually, you will see a log similar to this one when you hit this issue: - -``` -{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"object mapping for [data.filter.data.start] tried to parse field [start] as object, but found a concrete value"}],"type":"mapper_parsing_exception","reason":"object mapping for [data.filter.data.start] tried to parse field [start] as object, but found a concrete value"},"status":400} -``` - -_We thus recommend removing all filters used on decision reports before updating to Optimize 3.2.0._ - -## Changes in the supported environments - -With this Optimize version there are also changes in the supported versions of Elasticsearch. - -### Elasticsearch - -Optimize now supports Elasticsearch versions 7.7 and 7.8. - -See the [Supported Environments]($docs$/reference/supported-environments/) sections for the full range of supported versions. - -### Camunda 7 - -Optimize now requires at least Camunda 7 `7.12.11`, and `7.11.x` is not supported anymore. -See the [Supported Environments]($docs$/reference/supported-environments) sections for the full range of supported versions. - -### Unexpected behavior - -#### Cancelled flow node filter - -With this version, Optimize now allows you to filter for process instances where a given set of flow nodes have been canceled, as well as for flow nodes or user tasks that have been canceled. - -However, any canceled flow nodes and user tasks already imported by Optimize before this release will not appear as canceled in Optimize so will continue to be treated the same as any other completed flow node or user task. To use these options for previously imported data, you will need to [force a reimport](../../../reimport) from the engine. - -## Limitations - -### No running flow node instances visible if blocked by an incident - -Optimize 3.2.0 introduces the visibility of [incidents](components/userguide/process-analysis/metadata-filters.md#incident-filter), but in contrast to Camunda Cockpit, Optimize currently does not show flow node instances in flow node view reports for those flow node instances that are blocked by an incident. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11.md deleted file mode 100644 index c455b994fba..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -id: 3.10-to-3.11 -title: "Update notes (3.10 to 3.11)" ---- - -:::note Heads up! -To update Optimize to version 3.11, perform the steps in the [migration and update instructions](./instructions.md). -::: - -The update to 3.11 can be performed from any 3.10.x release. - -Here you will find information about: - -- Limitations -- Known issues -- Changes in supported environments -- Changes in behavior (for example, due to a new feature) -- Changes in translation resources - -## Known issues - -## Migration of Camunda 7 data for 3.11.0, 3.11.1, and 3.11.2 - -Under some circumstances, the migration of Camunda 7 data for versions 3.11.0, 3.11.1, and 3.11.2 can cause issues with the tenant selection of report definitions and collection scopes. This only occurs if data is present in Elasticsearch with the value `zeebe` in the datasource field, which can happen if the `onboarding` dataset set is used in Optimize, for example. To avoid this issue, we recommend Camunda 7 users skip 3.11.0, 3.11.1, and 3.11.2, and instead migrate straight to Optimize version 3.11.3. - -## Changes in supported environments - -### Elasticsearch - -With 3.11, Optimize now supports Elasticsearch `8.8`. Elasticsearch `8.5`, `8.6` and `8.7` are no longer supported. -Additionally, please note there are temporary changes in Optimize's Elasticsearch support as detailed below: - -| Optimize version | Elasticsearch version | -| --------------------------------------- | -------------------------------- | -| Optimize 3.10.0 - Optimize 3.10.3 | 7.16.2+, 7.17.0+, 8.5.0+, 8.6.0+ | -| Optimize 3.10.4 | 7.16.2+, 7.17.0+, 8.7.0+, 8.8.0+ | -| Optimize 3.10.5 - Optimize 8.3.x/3.11.x | 7.16.2+, 7.17.0+, 8.5.0+, 8.6.0+ | -| Optimize 3.11.x | 8.8.0+ | - -See the [supported environments]($docs$/reference/supported-environments) section for the full range of supported versions. - -If you need to update your Elasticsearch cluster, refer to the general [Elasticsearch update guide](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html). Usually, the only thing you need to do is perform a [rolling update](https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html). - -### Java - -With this release, the minimum version of Java that Optimize supports is now Java 17. See the [Supported Environments]($docs$/reference/supported-environments) sections for more information on supported versions. - -### Plugins - -Optimize now runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](./../../plugins/engine-rest-filter-plugin.md) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins and are updating from version 3.10.3 or earlier, you will need to adjust your implementation accordingly. - -### Logging - -With the change to Spring Boot 3, Optimize's logging configuration format has also been updated. If you are updating from version 3.10.3 or earlier, please review the updated `environment-logback.xml` to make sure your configuration is valid. - -## Changes in behavior - -### Collection Role Cleanup - -Prior to Optimize 3.11, Optimize has performed collection role cleanup after syncing identities with the engine. From -Optimize 3.11 onwards, this is now disabled by default. It can be reenabled by setting the -`import.identitySync.collectionRoleCleanupEnabled` property value to `true` - -### API behavior - -Before the 3.11 release, the Optimize API would accept requests when the URI contained a trailing slash (`/`). This is no longer the case, and requests containing a trailing slash will no longer be matched to the corresponding API path. - -### Raw Data Report API - -:::caution -These changes require you to adjust any integrations using the data mentioned below. -::: - -The data structure of raw data reports has changed. For the data export API, the properties named `numberOfIncidents`, `numberOfOpenIncidents`, and `numberOfUserTasks` is now renamed to `incidents`, `openIncidents`, and `userTasks` respectively, and grouped together in a single property named `counts`. - -Before: - -``` -{ - ... - results: { - ... - measures: [ - { - processDefinitionKey: 'someKey', - numberOfIncidents: 1, - numberOfOpenIncidents: 0, - numberOfUserTasks: 1, - ... - }, - ... - ] - } -} -``` - -After: - -``` -{ - ... - results: { - ... - measures: [ - { - processDefinitionKey: 'someKey', - counts: { - incidents: 1, - openIncidents: 0, - userTasks: 1 - }, - ... - }, - ... - ] - } -} -``` - -For CSV export the properties are renamed to `count:incidents`, `count:openIncidents`, and `count:userTasks`. - -### Localization file - -The following terms have been added to or removed from the localization file `en.json` since the last release: - -[en.json.diff](../translation-diffs/differences_localization_310_311.diff) - -- Lines with a `+` in the beginning mark the addition/update of a term; lines with a `-` mark the removal of a term. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.11-to-3.12.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.11-to-3.12.md deleted file mode 100644 index 02a7daf4248..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.11-to-3.12.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: 3.11-to-3.12 -title: "Update notes (3.11 to 3.12)" ---- - -:::note Heads up! -To update Optimize to version 3.12, perform the steps in the [migration and update instructions](./instructions.md). -::: - -The update to 3.12 can be performed from any 3.11 release. - -Here you will find information about: - -- Limitations -- Known issues -- Changes in supported environments -- Changes in behavior (for example, due to a new feature) -- Changes in translation resources - -## Changes in supported environments - -### Elasticsearch - -With 3.12, Optimize now supports Elasticsearch `8.9`. Elasticsearch `8.8` is no longer supported. - -If you need to update your Elasticsearch cluster, refer to the general [Elasticsearch update guide](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html). Usually, the only thing you need to do is perform a [rolling update](https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html). - -### Localization file - -The following terms have been added to or removed from the localization file `en.json` since the last release: - -[en.json.diff](../translation-diffs/differences_localization_311_312.diff) - -- Lines with a `+` in the beginning mark the addition/update of a term; lines with a `-` mark the removal of a term. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.12-to-3.13.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.12-to-3.13.md deleted file mode 100644 index 0e3e8d1808f..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.12-to-3.13.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -id: 3.12-to-3.13 -title: "Update notes (3.12 to 3.13)" ---- - -:::note Heads up! -To update Optimize to version 3.13, perform the steps in the [migration and update instructions](./instructions.md). -::: - -The update to 3.13 can be performed from any 3.12 release. - -Here you will find information about: - -- Limitations -- Known issues -- Changes in supported environments -- Changes in behavior (for example, due to a new feature) -- Changes in translation resources - -## Changes in supported environments - -### Camunda 7 - -Optimize now supports up to `7.21.0+`. -See the [supported environments]($docs$/reference/supported-environments/#camunda-platform-7--optimize-version-matrix) section for the full range of supported versions. - -## Changes in translation files - -### Localization file - -The following terms have been added to or removed from the localization file `en.json` since the last release: - -[en.json.diff](../translation-diffs/differences_localization_312_313.diff) - -- Lines with a `+` in the beginning mark the addition/update of a term; lines with a `-` mark the removal of a term. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.13-to-3.14.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.13-to-3.14.md deleted file mode 100644 index 024e4c56a24..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.13-to-3.14.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -id: 3.13-to-3.14 -title: "Update notes (3.13 to 3.14)" ---- - -:::note Heads up! -To update Optimize to version 3.14, perform the steps in the [migration and update instructions](./instructions.md). -::: - -The update to 3.14 can be performed from any 3.13 release. - -For users of Optimize 3.7.3 with OpenSearch, there is a direct update path from 3.7.3 to 3.14. The required steps are described in the [migration and update instructions](./instructions.md). - -Here you will find information about: - -- Limitations -- Known issues -- Changes in supported environments -- Changes in behavior (for example, due to a new feature) -- Changes in translation resources - -## Limitations - -Not all Optimize features are supported when using OpenSearch as a database. For a full list of the features that are currently supported, please refer to the [Camunda 7 OpenSearch features](https://github.com/camunda/issues/issues/705). - -## Versioning - -As of Optimize 3.14, instances of Optimize running with Camunda 7 exclusively use the `3.x.x` versioning scheme. Instances of Optimize running with Camunda 8 exclusively use the `8.x.x` versioning scheme. This means you will only be able to update to Optimize 3.14 if you currently use Optimize 3.13/8.5 with Camunda 7. Optimize instances of versions 3.13/8.5 running with Camunda 8 cannot be upgraded to Optimize 3.14. - -To ensure that Optimize 8 upgrades are not applied to Operate instances using Camunda 7, the 3.14 upgrade runs a check against the connected database before executing, and exits the upgrade if any Camunda 8 data is present in your setup. Specifically, it validates that there is no data present in the `position-based-import-index`, which is exclusively used for Camunda 8 data imports. - -Contact [Camunda support](https://camunda.com/services/support/) if you encounter issues upgrading to 3.14 in your Camunda Platform 7 environment. - -## Changes in behavior - -### Telemetry - -Optimize no longer gathers telemetry data, and this is removed from the UI and Elasticsearch. The associated key in the configuration file (`telemetry.telemetryEndpoint`) was removed. - -## Changes in supported environments - -### Camunda 7 - -Optimize now requires at least Camunda 7 `7.20.0` and supports up to `7.22.0+`. Camunda 7 `7.19.x` is no longer supported. - -### Java - -Optimize now supports Java 21+. - -### Database - -Optimize now supports Elasticsearch 8.13.0+ or Amazon OpenSearch 2.9.0+ - -See the [supported environments]($docs$/reference/supported-environments/#component-requirements) documentation for the full range of supported versions. - -## Changes in translation files - -### Localization file - -The following terms have been added to or removed from the localization file `en.json` since the last release: - -[en.json.diff](../translation-diffs/differences_localization_313_314.diff) - -- Lines with a `+` in the beginning mark a term addition/update. Lines with a `-` mark a term removal. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.2-to-3.3.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.2-to-3.3.md deleted file mode 100644 index ef57ec15e5c..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.2-to-3.3.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -id: 3.2-to-3.3 -title: "Update notes (3.2 to 3.3)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 3.3.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Known issues - -### Error during migration of dashboards when updating from Optimize 3.2.0 to 3.3.0 - -During the update from Optimize 3.2.0 to 3.3.0, you may encounter the following error: - -``` -Starting step 6/7: UpdateIndexStep on index: dashboard -Progress of task (id:FwvhN1jsRUe1JQD49-C3Qg:12009) on index optimize-dashboard_v4: 0% (total: 1, updated: 0, created: 0, deleted: 0) -An Elasticsearch task that is part of the update failed: Error{type='script_exception', reason='runtime error', phase='null'} - -``` - -This can happen if you started using an Optimize version prior to 3.1.0 in your environment in the past and did not manually edit/update at least one particular dashboard created with such a version since then. - -To recover from this situation, you can run the following update script on all Optimize dashboards on your Elasticsearch cluster: - -``` -curl --location --request POST 'localhost:9200/optimize-dashboard_v3/_update_by_query' \ ---header 'Content-Type: application/json' \ ---data-raw '{ - "script": { - "source": "if (ctx._source.availableFilters == null) { ctx._source.availableFilters = [] }", - "lang": "painless" - } -}' -``` - -Then, resume the update to Optimize 3.3.0 by rerunning it, thanks to Optimize updates being [resumable](https://camunda.com/blog/2021/01/camunda-optimize-3-3-0-released/#Resumable-Updates) since Optimize 3.3.0. - -## Breaking changes - -### Renamed environment folder to config - -The `environment` folder, which holds all configuration files, has been renamed to `config`. - -### Elasticsearch - -Optimize no longer supports Elasticsearch versions 7.0, 7.1 or 7.2. -See the [Supported Environments]($docs$/reference/supported-environments) sections for the full range of supported versions. - -### Docker image environment variables - -Previously it was possible to use the `JAVA_OPTS` environment variable on the official Optimize Docker image to configure the JVM that runs Optimize. With Optimize 3.3.0 this variable was renamed to `OPTIMIZE_JAVA_OPTS`. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.3-to-3.4.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.3-to-3.4.md deleted file mode 100644 index d042f1c64cb..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.3-to-3.4.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -id: 3.3-to-3.4 -title: "Update notes (3.3 to 3.4)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 3.4.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). - -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Known issues - -When updating Optimize, certain features might not work out of the box for the old data. This is because old versions of Optimize -do not fetch data that is necessary for the new feature to work. For this update, the following features do not work on the old data: - -- [Process instance parts](components/userguide/process-analysis/report-analysis/process-instance-parts.md) -- [Canceled instances only filter](components/userguide/process-analysis/instance-state-filters.md#canceled-instances-only-filter) - -To enable this feature for your old data, follow the steps in the [engine data reimport guide](./../../reimport.md). diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.4-to-3.5.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.4-to-3.5.md deleted file mode 100644 index ae907f2fd6f..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.4-to-3.5.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -id: 3.4-to-3.5 -title: "Update notes (3.4 to 3.5)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 3.5.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Limitations - -### Migration warning regarding incomplete UserTasks - -The migration from Optimize 3.4 to 3.5 includes some improvements to the Optimize process instance data structure. Previously, process instance data in Optimize held two distinct lists: one for all FlowNode data and one for UserTask data. To avoid redundancy, these lists are merged into one during this migration. - -In order to correctly merge the UserTask data contained in the two lists, specific ID fields are used to correlate UserTasks correctly. However, due to the nature of the Optimize import, UserTask data can temporarily exist within Optimize without some of these fields. Normally, these fields are updated by the next scheduled UserTask import, but if Optimize was shut down before this next UserTask import can run, the fields remain `null` and cannot be used during migration. - -Usually, this should only affect a small percentage of UserTasks and of this small percentage, the data that is lost during migration will only relate to the cancellation state or assignee/candidate group information. In practical terms, if you observe a warning regarding "x incomplete UserTasks that will be skipped during migration" in your update logs, this means that after the migration, x UserTasks in your system may be lacking assignee or candidate group information or may be marked as completed when in fact they were canceled. - -Note that any other UserTask data, old and new, will be complete. - -If this inaccuracy in past data is not acceptable to you, you can remedy this data loss by performing a reimport after migration. You can either run a complete reimport using [the reimport script](../../../reimport), or alternatively use the below statements to only reset those imports responsible for the data that was skipped during migration. - -Ensure Optimize is shut down before executing these import resets. - -Reset the `identityLinkLog` import to reimport assignee and candidate group data: - -``` -curl --location --request DELETE 'http://:/-timestamp-based-import-index_v4/_doc/identityLinkLogImportIndex-' -``` - -Reset the `completedActivity` import to reimport the correct cancellation state data: - -``` -curl --location --request DELETE 'http://:/-timestamp-based-import-index_v4/_doc/activityImportIndex-' -``` - -For example, assuming Elasticsearch is at `localhost:9200`, the engine alias is `camunda-bpm`, and the index prefix is `optimize`, the request to reset the `identityLinkLog` import translates to: - -``` -curl --location --request DELETE 'http://localhost:9200/optimize-timestamp-based-import-index_v4/_doc/identityLinkLogImportIndex-camunda-bpm' -``` - -If you have more than one engine configured, both requests need to be executed once per engine alias. - -## Known issues - -### Report edit mode fails for reports with flow node filters - -After updating to Optimize 3.5.0, you may encounter an issue that you cannot enter the edit mode on -reports that use flow node selection filters. - -In such a case, when entering edit mode, you are confronted with the following error in the Web UI: - -``` - Cannot read property 'key' of undefined -``` - -This error can be resolved by running the following Elasticearch update query on your Optimize report index: - -``` -curl --location --request POST 'http://{esHost}:{esPort}/{indexPrefix}-single-process-report/_update_by_query' \ ---header 'Content-Type: application/json' \ ---data-raw '{ - "script" : { - "source": "if(ctx._source.data.filter.stream().anyMatch(filter -> \"executedFlowNodes\".equals(filter.type)) && ctx._source.data.definitions.length == 1){for (filter in ctx._source.data.filter){filter.appliedTo = [ctx._source.data.definitions[0].identifier];}}", - "lang": "painless" - } -}' -``` - -Applying this update query can be done anytime after the update to Optimize 3.5.0 was performed, even while Optimize 3.5.0 is already running. - -### Running 3.5 update on Optimize version 3.5 data results in NullPointerException - -The Optimize 3.5 update will not succeed if it is run on data which has already been updated to 3.5. This is because the 3.5 update relies on the 3.4 schema to be present in order to perform certain operations, which will fail with a `NullPointerException` if attempted on the 3.5 schema. This will cause the update to force quit. In this case, however, no further action is required as your data has already been updated to 3.5. - -## Unexpected behavior - -### Flow node selection in report configuration moved to flow node filter - -The flow node selection previously found in the report configuration menu has now been migrated to the flow node filter dropdown as a ["Flow Node Selection" Filter](components/userguide/process-analysis/flow-node-filters.md#flow-node-selection). Existing flow node selection configurations in old reports will be migrated to an equivalent Filter with the Optimize 3.5.0 migration. Note that this filter now also filters out instances which do not contain any flow nodes that match the filter. - -## Changes in requirements - -### Java - -With this release, support for Java 8 has been removed, meaning that Java 11 is now the only LTS version of Java that Optimize supports. See the [Supported Environments]($docs$/reference/supported-environments) sections for more information on supported versions. - -### Elasticsearch - -With this release, Optimize no longer supports Elasticsearch versions 7.5.1, 7.6.0 or 7.7.0. See the [Supported Environments]($docs$/reference/supported-environments) sections for the full range of supported versions. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.5-to-3.6.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.5-to-3.6.md deleted file mode 100644 index a9313bc55a3..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.5-to-3.6.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -id: 3.5-to-3.6 -title: "Update notes (3.5 to 3.6)" ---- - -Camunda 7 only - -:::note Heads Up! -To update Optimize to version 3.6.0, perform the following steps first: [Migration & Update Instructions](./instructions.md). -::: - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Known issues - -### Default tenants - -If you have [default tenants configured](./../../configuration/system-configuration-platform-7.md) for any connected engine in Optimize, -it might be that user task and flow node reports, as well as branch analysis, stops showing data after updating to 3.6.0. - -This is a known -issue that has been fixed as part of the 3.6.3 patch release. You can update from 3.6.0 to 3.6.3. Migration from either of these versions to -3.7.0 will be possible. - -## Changes in supported environments - -### Camunda 7 - -Optimize now requires at least Camunda 7 `7.14.0` and supports up to `7.16.0+`. Camunda 7 `7.13.x` is not supported anymore. - -See the [Supported Environments]($docs$/reference/supported-environments) sections for the full range of supported versions. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.6-to-3.7.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.6-to-3.7.md deleted file mode 100644 index 2f4c858f177..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.6-to-3.7.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -id: 3.6-to-3.7 -title: "Update notes (3.6 to 3.7.x)" ---- - -Camunda 7 only - -:::note Heads up! -To update Optimize to version 3.7.x, perform the following steps: [Migration & Update Instructions](./instructions.md). -::: - -The update to 3.7.x can be performed from any 3.6.x release. - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (e.g due to a new feature) - -## Known issues - -The Optimize 3.7.0 release contains a number of bugs related to dashboard templates, alerts, and the Report Builder. - -For details on the issues, refer to the [Optimize 3.7.1 Release Notes](https://jira.camunda.com/secure/ReleaseNote.jspa?projectId=10730&version=17434). - -The Optimize 3.7.0 - 3.7.1 releases contain a bug in which decision instance object variables are erroneously attempted to be imported. This can lead to the decision variable import getting stuck. - -For details on the issues refer to the [Optimize 3.7.2 Release Notes](https://jira.camunda.com/secure/ReleaseNote.jspa?projectId=10730&version=17441). - -The Optimize 3.7.0 - 3.7.2 releases contain a bug in which object variables that contain a property with an empty string value cause an exception upon import which can block the import of further variables. - -For details on the issue refer to the [Optimize 3.7.3 Release Notes](https://jira.camunda.com/secure/ReleaseNote.jspa?projectId=10730&version=17452). - -We thus recommend updating to 3.7.3 if you are already using 3.7.0, 3.7.1, or 3.7.2, or directly updating to 3.7.3 if you are still running a 3.6.x release. - -## New behavior - -### Added support for object and list variables - -With Optimize 3.7, we've added support for object and list process variables. Variables with type `Object` are now automatically imported and flattened into dedicated "sub variables" for each object property. If you have previously used a variable import plugin to achieve the same, you may disable this plugin after migrating to Optimize 3.7. - -Find more information about importing object variables [here](./../../configuration/object-variables.md). diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.7-to-3.8.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.7-to-3.8.md deleted file mode 100644 index c9ba567ff6d..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.7-to-3.8.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -id: 3.7-to-3.8 -title: "Update notes (3.7.x to 3.8.x)" ---- - -:::note Heads up! -To update Optimize to version 3.8.x, perform the following steps: [Migration & Update Instructions](./instructions.md). -::: - -The update to 3.8.x can be performed from any 3.7.x release. - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (for example, due to a new feature) -- Changes in translation resources - -## Known issues - -No known issues at the moment. - -## Changes in supported environments - -### Elasticsearch - -While OpenSearch was never officially supported by Optimize, up until Optimize 3.7, the version of the Elasticsearch client used was also compatible with OpenSearch. -With this release, the client has been updated to a version no longer compatible with OpenSearch, meaning that Optimize will also no longer work with OpenSearch. - -### Camunda 7 - -Optimize now requires at least Camunda 7 `7.15.0` and supports up to `7.17.0+`. Camunda 7 `7.14.x` is not supported anymore. -See the [supported environments]($docs$/reference/supported-environments/#camunda-platform-7--optimize-version-matrix) sections for the full range of supported versions. - -## New behavior - -Due to a general overhaul in the public API, the authentication to all API requests must now be performed via a `Bearer Token` in the request header. In previous versions, you had two possible ways to authenticate your API requests: by providing the secret as the query parameter `accessToken`, or by providing it in the request header as a `Bearer Token`. If you were using the latter method, no change is necessary and your requests will keep working as usual. If you were using the query parameter method, you will need to change your requests. For more information, see [authentication](../../../../apis-tools/optimize-api/optimize-api-authentication.md). - -## Changes in translation files - -In case you manage your own translations into different languages, you can find a list below with all the changes that need to be translated for this release. - -### Localization file - -The following terms have been added/removed to/from the localization file (`en.json`) since the last release: - -[en.json.diff](../translation-diffs/differences_localization_370_380.diff) - -- lines with a `+` in the beginning mark the addition/update of a term, lines with a `-` mark the removal of a term - -### Text from "What's new" dialogue - -For the purposes of translation, find the text for the `What's new` dialog below: - -``` -## Set and Track Time-Based Goals - -Set data-driven service level agreements (SLAs) on how long all your processes should take so you can quickly identify which processes are underperforming. - -## KPI Reports - -Create reports and alerts tracking percentages like fully automated instances or incident rate (%), plus SLA statistics on durations like P99 or P95 duration in addition to minimum, median, and maximum. - -## Improved UX - -Rename variables in plain language, filter out noisy outlier analysis heatmaps, and apply rolling date filters to your dashboards to focus on the most important data. - -For more details, review the [blog post](https://camunda.com/blog/2022/04/camunda-optimize-3-8-0-released/). -``` diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.8-to-3.9-preview.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.8-to-3.9-preview.md deleted file mode 100644 index 5103270519d..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.8-to-3.9-preview.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -id: 3.8-to-3.9-preview-1 -title: "Update notes (3.8.x to 3.9.x-preview-1)" ---- - -:::note Heads up! -To update Optimize to version 3.9.x-preview-1, perform the following steps: [Migration & Update Instructions](./instructions.md). -::: - -The update to 3.9.x-preview-1 can be performed from any 3.8.x release. - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (for example, due to a new feature) -- Changes in translation resources - -## Known issues - -No known issues at the moment. - -## Changes in supported environments - -## New behavior - -## Changes in translation files - -In case you manage your own translations into different languages, you can find a list below with all the changes that need to be translated for this release. - -### Localization file - -The following terms have been added/removed to/from the localization file (`en.json`) since the last release: - -[en.json.diff](../translation-diffs/differences_localization_380_390_preview_1.diff) - -- Lines with a `+` in the beginning mark the addition/update of a term; lines with a `-` mark the removal of a term. - -### Text from "What's new" dialogue - -For the purposes of translation, find the text for the `What's new` dialog below: - -``` -## Process Overview - -See holistic statistics across your entire portfolio of processes with some suggested focus areas for improvement. - -## Process Onboarding - -Create a dedicated KPI collection and dashboard with one click, then modify your targets and share it with stakeholders. - -## KPI Overview - -See how all your process KPIs perform in one screen, then identify which processes need the most improvement. - -For more details, review the [blog post](https://camunda.com/blog/2022/07/camunda-optimize-3-9-0-preview-released/). -``` diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.9-preview-to-3.9.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.9-preview-to-3.9.md deleted file mode 100644 index d3e1750be9e..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.9-preview-to-3.9.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -id: 3.9-preview-1-to-3.9 -title: "Update notes (3.9-preview-x to 3.9.x)" ---- - -:::note Heads up! -To update Optimize to version 3.9.x, perform the steps in the [migration and update instructions](./instructions.md). -::: - -The update to 3.9.x can be performed from any 3.8.x or any 3.9.0-preview release. - -Here you will find information about: - -- Limitations -- Known issues -- Changes in the supported environments -- Any unexpected behavior of Optimize (for example, due to a new feature) -- Changes in translation resources - -## Known issues - -If there are processes in Optimize that currently do not have a process owner assigned and a new process is deployed -via Web Modeler, a new process owner may be assigned to one of the previous -processes without an owner. This is not critical as this does not incur any changes in permissions, but is important to understand regarding who gets email notifications for processes. If an owner is set incorrectly, you can change it manually in the processes page. -This issue is resolved with the 3.9.1 version. - -## Changes in supported environments - -### Camunda 7 - -Optimize now requires at least Camunda 7 `7.16.0` and supports up to `7.18.0+`. Camunda 7 `7.15.x` is not supported anymore. -See the [supported environments]($docs$/reference/supported-environments/#camunda-platform-7--optimize-version-matrix) section for the full range of supported versions. - -### Elasticsearch - -Optimize now requires at least Elasticsearch `7.13.0`. -See the [supported environments]($docs$/reference/supported-environments) section for the full range of supported versions. - -If you need to update your Elasticsearch cluster, refer to the general [Elasticsearch update guide](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html). Usually, the only thing you need to do is perform a [rolling update](https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html). - -## Changes in translation files - -In case you manage your own translations into different languages, you can find a diff below with all the changes that need to be translated for this release. - -### Localization file - -The following terms have been added to or removed from the localization file `en.json` since the last release: - -[en.json.diff](../translation-diffs/differences_localization_390_preview_1_390.diff) - -- Lines with a `+` in the beginning mark the addition/update of a term; lines with a `-` mark the removal of a term. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10.md deleted file mode 100644 index 5b203450a62..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -id: 3.9-to-3.10 -title: "Update notes (3.9.x to 3.10)" ---- - -:::note Heads up! -To update Optimize to version 3.10, perform the steps in the [migration and update instructions](./instructions.md). -::: - -The update to 3.10 can be performed from any 3.9.x release. - -Here you will find information about: - -- Limitations -- Known issues -- Changes in supported environments -- Changes in behavior (for example, due to a new feature) -- Changes in translation resources - -## Changes in supported environments - -### Elasticsearch - -Optimize now supports Elasticsearch `8.5` and `8.6`, but it requires at least Elasticsearch `7.16.2`. -Additionally, when updating to Optimize 3.10.x please note there are temporary changes in Optimize's Elasticsearch support as detailed below: - -| Optimize version | Elasticsearch version | -| --------------------------------- | -------------------------------- | -| Optimize 3.10.0 - Optimize 3.10.3 | 7.16.2+, 7.17.0+, 8.5.0+, 8.6.0+ | -| Optimize 3.10.4 | 7.16.2+, 7.17.0+, 8.7.0+, 8.8.0+ | -| Optimize 3.10.5 - Optimize 3.10.x | 7.16.2+, 7.17.0+, 8.5.0+, 8.6.0+ | - -See the [supported environments]($docs$/reference/supported-environments) section for the full range of supported versions. - -If you need to update your Elasticsearch cluster, refer to the general [Elasticsearch update guide](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html). Usually, the only thing you need to do is perform a [rolling update](https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html). - -### Java - -From Optimize 3.10.4, the minimum version of Java that Optimize supports is now Java 17. See the [Supported Environments]($docs$/reference/supported-environments) sections for more information on supported versions. - -### Plugins - -From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](./../../plugins/engine-rest-filter-plugin.md) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. - -### Logging - -In 3.10.4, Optimize's logging configuration format has also been updated. Please review the updated `environment-logback.xml` to make sure your configuration is valid. - -## Changes in behavior - -### API behavior - -Before the 3.10.4 release, the Optimize API would accept requests when the URI contained a trailing slash (`/`). This is no longer the case, and requests containing a trailing slash will no longer be matched to the corresponding API path. - -### Configuration changes - -In the 3.10 version of Optimize, it is no longer possible to apply custom configuration to the UI header. The following -configuration options have therefore been removed: - -- ui.header.textColor -- ui.header.pathToLogoIcon -- ui.header.backgroundColor - -## Changes in translation files - -In case you manage your own translations into different languages, you can find a diff below with all the changes that need to be translated for this release. - -### Localization file - -The following terms have been added to or removed from the localization file `en.json` since the last release: - -[en.json.diff](../translation-diffs/differences_localization_390_3100.diff) - -- Lines with a `+` in the beginning mark the addition/update of a term; lines with a `-` mark the removal of a term. diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_1_create_collection.png b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_1_create_collection.png deleted file mode 100644 index 212e86b5511b664b2fb07fd9f722dd7d95a0faee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45374 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 diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_3_1_copy_report.png b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_3_1_copy_report.png deleted file mode 100644 index f6a77e63a38c6aa65e11ffe3b3495c32f5c10847..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36871 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%0DdI(MN)L{v~3ZmgoW!Bvk zV<5OIOHW_a9k^D4Qp2g59pSUc^DYgaz{gQkxIycg3bj4=3NharmeTygYruIlYPIMz zGxLRcF&%i>dV5__Y&3apiP(=lQ#;uY_y8ZUyu6{<@&N)oB%Zj>5pQ<%M6;ABC@zo? zA~>wpNhCPpSBqX8+P5!O(2(e9v}(63PvhX^{3@FP`>B_gS9n=9XDrXH*QP~30bwE! zJPF-B;CCh1!G-KB1tRwoRVjSa0s@AL^o7D*mQSsZt>py@;tF`Fr~hfH-IuHXfk=^ooX|1K@9 z!|k$(KSyj6WBz&ARaDvA-E8Ou()tGcs^V;{pUEaXZDI?n$G8jFWeCfDFd6-a!Lvlct& zz*#$c`xRKtHZ&UQlVdg2TdKA29@TF*a5sIlc)T z1}4idz?g0SBN(`H7!9DRw1WjA&apYpURzTaNCuyJ@?-^?Fj&AhwFEyPnG6iUFUCdx z{$)s{y3-P&Ic}E?I=jh~-LJznoo)L++VyW$7`i6Ni{lIVd)m!{^* zo8`A2>Qoz>Hq|}YMiP;}c$DrV`9q57n6Z$CX5E$`!uep>PLt4uG&P*<+2?SKsCVb2 zs@uoYG<$dM%Ihk-)!6`7638qr*9%O4|0)72NqP&0q z$M^j4TY7h>UyB*?g`YoeszB)`8B@BOPB#L@*_i6{#;n(0yGxHR3It46&jp&#@P%{2 z=-twiDHw82La{jtmz}q8<56C$Rk3v|OANkGZW7{8m1UcK?T@bSP z&!srn{UI(2JtCv49-W7*30J|_{s%eK|HJxH!a(#tz<&Mz)OGW}a2Wi3v;WuMt=wvs zq^Ei?a{RF8qti9}Io_#S{)jkG(Q}sN@BLvU1a^RIKqOvX(^-w4>XetUK6{d8*4D3V z{05m?x_;~Lb@ws2!@B>GG>ff+gNI;nj(TR;V1nL>Ua_5j|7?06nI94d?D5crU8`Fq zbt|EAv6#)${Qdj)aCv!omgnjVaT_Y1k$KcNYR-g~sSW9`(V$ z9~?nE5YzBF!g7IP%Fho<%3L8eIT;hr`bQF!yPYJUU_lLBusLwxfV=y~;r-ly|DnKR z7;4VfLu8;mcn~u-K3qYyhG3A=fHJ|};T-0U02^Ztc%OeId>UvB!M}p2N23dN6nYjI zL3BkhtHXH<#Rsj0^Y8fLVoVLz!k+`X2$(PAMF?dek~`ZjT2m80xOwSL)CRShw)WK6 z*xQ?cG8lptG5`7&Glm#tNL|6404O~OmoX6$C_kt%=-S~L=t|WRCP<_C#GP3f8QoA) zdaag%i_!a>l7FeBrUoboN6*gf<-n?m%E`d_y8T!F?qad*v)BzU+-`Ea`O?V>UhwRB zd3l(1?C&ql$x*e~ghv5L1v4C&f`%L6;lu6VQwgNgZ8cyJ8K}hUApAu}()(4616EwW zzE8{A#6-PJjP>tA=Ik{zwK@(dsl7c!r3p|_Z_EXzNgVv{>k_6Om!)J`_WwKD>Dy5B z$ISzGis28l3OD;dK>>p#u{Q-VW0jqGun=41@ns#T^XY(D$<05r4BF=*1i6t>ZY zr*PvpygK^{>l+(-%`On(To)(q!FYlBmI7@_Skbrb*u8VtuA_8xAnzfXL!E)50g%8) z0Ul>?a1i?Ou~?4@QT~9jGiN4<9}ZISgGuo@D}OPeDsf%|8xm@EX8Y zQ@>#|qk}%GzTI5#SpUUj)!$CyLdHG>eN$6utt!lVLCi582JH@yW5~Ykm@hh08$Sbg z;lIxX;7NZbZM5W&hvE5%;kZ}g7a5xx8?RV+Ah3PM#y7SGilCc(`gB6fRV((2l>cg% z9+R4x8I--k;Ow?+4+*0iH!fdhy%s>_>$|lDwQbwhY~c~Aqz6pHCLw6wGCe29$ITj* zJY8c&=tShr1uxcYO(`$!-}U|G&%r@Zt=;|Cb9Us!=0+koR^~@djE(cM7^(c;w37!Z zG}R0=z1&CWVv@dCv9;2QFzC-cl@Ecdi@g`cqaWD7E3XU_Qrn^5R7~j`~?4cQa%2xZIkkqGiVo zr;ZXPt(}^^>LeI#IV_TcuaaXuj|N@@GapR*`T1l zyc7xC_+Z_TRN=Nq!ooFHMu9Pra=`lDoeaH&a@U31*RR(WFNbZ~n&x|Xxx0QQf8F*h zHa7|DvP6Zdq{{_VT~h4wUMKfkSJ&8Brpg-CCLuk3>)gGxLQRjK`7wrk-EpiK5j-Y4 zpXMKy9wq4-d*x!J~pb=$*OvBDVDfhyKH$f-e0vW|}?^Tzc z^mCBnxE1>T-NaDxe5Xx69%i6PucfP-dAH5szybY@4JEFy$??0}8#k`aD=kSHZ%q4) znEvM7c79$z9yQ^Ve2iqMyG;HLnGqTKVO)8#(i&FC|sMfh(gt zXU^#4uc|P`=vq?No-tc>aoJdNK0qjTUB;yI<0p^XHRTdCes*-j38ZIA+rQVH*YuX& zo;|L}#AhH3^t-+mIdPVG=*OTmrb%qQc`%dtqLYlwUs<^==1@i=4zhbu*#WYxQwMGz zG45^L$Tqp=I6fpVXL#erWLbAaP`CnV^79*@wYk+}4CpB)ZFmH(+EKM-i@O~xaH}lL zAJEB}lA4TH#&|MY%Ie*LAG?@1^-6#G&t2VTpU2T@ou<9GSnMNr*!{P2uC}h{nfsoU zhNkJS0PQ?6X#>w;gWeFP_M~9>K#8>I;Gp#YhL6Qx6NsDONdUa{U_jhU<@Yk!Xo;f??nVLO2eFglrw7>}qW-j?a-#8HtW&%pQo) zw_KOnn1Iz>N9Wa+?&YgKgqzyRt7ZH{nfx$lp>$>Go9=pl^YlSd$rY#A)YPSHy9XCK zpHfhsDisRlN=^$kF*F8L-B0+uUk1+4aH$<}w|@%KuTI$Th^OzSZp%I$A{bdVAowfy zZjqydXnDX#aOUi z5Bta8-}TR2?D^yHq&p1SL7dHiKeV$me??Ju1~X19EQa7^fhnyU*CDIHO@XH*9H*f; z!g~wuCqgW*px`33z~kPQ{lx|013mDc|9mCBp|1U{O`<4|Xdz&2aZ(DmvAiTlH`Jf% zADG|yE_YyIc9bhrx~(;PH}yme_F1cylk3aXK)R0a56OI#?GEJ({diOJ>YF&>A6H>v zP~IYZ$9filBKO9ewoBF~@J7WgwkOO8OE$e)kJJk)+`K zl%}=3KQG(j6yYB{q(PJH`@qhlJ!PMv2}oj`1AR6de-7>IlR+;dB7{svF!bR8`XS=B zH=ZqG1h148;~{|Hu5P=-JGggm%=LAuh0=P{i2i1bq`FamsLC_&WczCyq4&-UEbKh# z9}`rndzqKDMen_TfAAD*(td(ySFeP{8MOI6gz~h9GzON2FZ7h84+{tj^Yg97e96${ z7T$D~KA(C&a$$5uj+?vj#Pu}k7aX*5w)5n+^JK3W#4`BLiP}54cF=o2L+!XMCrM2~ z7Av=z6NA9?{>&YP|D{A^{Cwdrp^c+>oDITe%1 zFUO*s+B3nk7$>y%wZ!p@Yr-li?FN}$P*}@bETPVz8J-N3l=qwMWMFEA%ZkRp!lFKu zh%bhJuZn1Scx-~bJK`G-s&l9|SWZ?Jjh+xl;MK+XmG#wMHN&=OQyVf*cV7k%1^70S zctcGsA~Mo~@+SoeiGs_Y)4#ulm*s6`WCqWB774;^*VCh6Vl=ui*8h~|c@!6LuzCD$ z5U3Y+tnMc?t{=T+Y}}I)mb5KwvMuS6N&YJ_QDdXg<}#?TcmRTx<@-d%sB`WUmo%L= zuGBR2#xBefeKVY~`d_I($Uq~jAJ#2)drG6Ms;$fwc8WE@)Yz2s!F`a)St&J!_(J;DDGGJ(Zu``q;M8s#yq-5m3yBNP}=K{tjIv;k$IYflBJMhr9U0jcv> zw}JDSEJSv3tEXuG&*_OZ&+jqauGx{6GnO+uJ{=0U!@ARZC+XwIhuH4(1{0Q zR2whx$2d1lnS?sej`GJqbBC#t2GB~H6i?}hIeXjp(uwPsi7PF|V@5)5=MrrM>X}5v zIyotNwQttL5gjO=9#G8(-W7c!Ojy}Xl5gaI5rA%u_-@|0lK~Uw0Y&lhhU&#uIUe{Y zff<3%FiYOip%&S&1a=P8CEOLecJ5sNLG5{GU4e>(gnQCIz07sJ#qZ?FPYuTY-IlR! z_u`vg7TR@62G@S;=nrz|G%;Qkpcd44uNLyodAg9PV=H4NS3UYb;d<7H+Uk?!q-%!- z1cYv;=1q$&B`U^DEO2Pa)?F&;zcW^Imr&C&U3Buqi$@pz7HBg}{F$~YWBNCbZP;l1 zd?u3J%5RdS#Tj~UzzU<!(d&5oX)iI)nn(nGXGH>4=FVLwz8gc0)-%tM$M z6OH2Lh(WWTnzW(PI{w?O>AYA(RY&4mMf^N*z zu;dG8bo%}P?9&Q%PnkU`#_lI5$>3U4;%Jc7unjzg!A?LRr>F=-O}J4vKsC|O1xHfZ zTHh=wGxk0ATGIUTvO0Unl{cWe7DCi@S70?@-Cqkn7Z#_@-(h9m_{`PLveJ?2gCyS* zU$>9b(WzQUZW%X>4m7i-mlhjdGp>reN~_J8uKni^kCl)X?9lxD*7HiW7IFjTH}Y8n zk8K1l55z9-TC9wJR69QtF~2TXc8F}(^`IY$8)cWT?K4mJH1_Znc_vn?9(p7QU#L!pEB&B0txbxbpaP{lVcevNi zvIf#`d{GJ9*zgLx8LGh}(b_im*X5^Ts`0Hsgdh{B6y$+5-_1u6b>~rd5lzr(&9= zrX7k@9?X`m1-O#s;eiwF=^hC!rW&CQ_4RMaDR+C-8q%FL*vV|T@_X2xE2Ujl4`yDt z4B`3x;A3Fb3nQ?~5y ztu1V_FN41rJ=byCP;U3p(pF_z!aS)` zi$Pw3w4GhH1?xg;Rn?WGVfZz~n1_50>q;vqY=Do`wz=&JmX`-$1ROP7mHw4kct*jg z7`N8sC(G6Xxf)Ykzmc z`&mzqX42VLBqVq4z0i+!4}V;-SYI}~z5%MYv4Vp^CgJ%@P=Nujij`r@_%`|d`|Gzg zcjSLKNj$3j`SRuIBq26he+baq*AHFu@$%Y!k?`$bJ(i-d7B*I6czJh=Ap+Sqg@CwRGKSjq|B$ zka*yHY|eS6{}Nt64?OrIIz^eoBZ}NxBL)6Ubw!C}yE=uyXS@0$p$>0c) zt@cw`4(_u~hfH9e3q1o|mUTU5DBh~F7xgg`M@jCih&3hyg5>21Woj_&+s91nFL4+b zBc3QKK37#0&YUAsKHtWW#IIobq3b%uc0<#xdnf;k85B;?61rF+&-|AcBI*C{M+xTt zhbH{a^`9pNI+6c}+5O*gnZMTAiwD+7cmEgPITq4qeb~R!>saOY4~O^#jGheK^85Fu zN+!m~f6W(N=IODiq?nFQIz{0?9B(5b`R?0iJv%dFZDD~?W`-$^-PNh*`fci_AGt~L zOx8b4jIe&wSjUBS_vq)hfB(UGPTIAVmCDbbNqs(*2N>Pq<*cW205&DQ&ex=h)crd` z`caJezXnI=X#X=fTKwM>w#|PAM?Y%)XTJ1*aT&hj{qoGz(#>>`kD^gk#)Gu9FjM@) z{FfcSufd5&0iXkemXvY(C_}!1Z(efROl+}u=P#k-@(vLBCXbg;Lla5(NYsP?6~?p|Rzk>|k6h4mnrAYH?)t7p$ygF>#h zW}5n!LjHIlxK^NxnIZr?@$aDQ+_nE5-}iqk%foVDKH|&zGG{%WFz`;5y+n65?>uHK z?opX3Vc3QE;H|1EK8lOaV*8pcg(5Xm^E6X&2*`YX(pg=8(_$(>_uxFu!Gp;EYbqh_ z=7&g|hlp=@KZ8^2#tlJ8?;w}U11dSR3+>M^Ge6Kj^2E0IL2iCN257QUQ}Nh~Sxg^x znsPufx5U%9Qc`+L-HY%M6E5;>ZKdvOyLowu@Au(uw`Cr27BJwGzkr}%x24cS$sBqe zJekwhmXFyG!sBkQ*tj?Xo`bTwdM#3D8muXpVputX*%a^q9E=`;=)HYY2!fKO(CFwW zkR~2}1gkb4l(4$$QW!dDVa);i>H_B0NlD+ne^0S@FUWC7aPW5v3f_Pf-o#{b(Is47 zNdMDLJw3ftwaBor|D(O{42o*&+QbAH!9*0e7%&h-qBKcC5s`F7$ytIDMRKxL5JVI( z07?`|A~r})0xBXZB1veW$tXE0K|o-h!@b{pHQ~op&CIWvuD9OeRtepG&OUpu^`vDj z5q;_|$4)LTO8rH63h`K-JG&Mdg1B2)qD`X{MM?l@TGw1~RJiPETE>3N2ZM?AATfp9M45{B!e%JpCzDjxf zRPeaub>pfby^RChbF%I;L@V?{EgK%qi?`&^ti;0gXY*wK6 zAjrT`2pRQ2*}|AKLKIb0ZX-_t^cB(-#W?PUhStK;v6)^GR~NPuQ!aku4$zGUZW?`$ zD%lIXFiryZF+(qF-U{JO75HOSRaK&!9)yKmMj!~@AuNnJ?VJjunO;7)LV5XkX82ne zc_Fn&L$*uQiilk!E;n}7hC!DrMUdBb9}543b582YJBNZ_9x}xz2{a(L#m*{6FOwP= z5YVs>PPW`lI(L>he~kGSXf+c zyo#u-j~B&Yt+^QxKq^aN=i;?MsScKb@HZM6;Rk#Kcrm90NxBhbFLecoxE*|Ae}x28 zU8<^LY@2fF;%oai5D(#N$}!})^u{mm_J1}1$@$7-yO$M3M@&<~Y%ii7%spj`|EGF3 zLh5opy$KQtc}SO`fL~l(gs}=DVyCXxtL`d^B1aIWSO`2p$9yo)8fh4R;pQOU$oewSJCyo(a2etv6ySN|?lm0PSMWJQz z&f+(cef3-re{;LWDyPK`Hjmm`1iyW;lV}tZ5EX5-$wL>JO8pAXVlWswBh-ir%8&)> zgx6R>dI{SbUxhH3P3CQY@Hshcb6N)8%_GkZuiOCX@mG!bLsuo}=-5tham7Y)Q$z&L z?VgM8>_wMXx%+Qj-CJ6o5te!p6CTT4X&H@!uwK7?m=H(a(I4>689iAZ$=6QxoMUfC z9?9rTFzJwpf&eOh*3xx<%4z28edQH{qi)`cekyxeZU*=tRT?YYC`cLVdU8x&-o!yN zcI+J@2ifA8>Uc=8Uj{3$89;xJJ2PI?A7^`Rc^a$Rs&DGI2sFbF4iMdf;bAbfUEErI zzgyR2911Yoy=PCXwi#PWfl651D!NTVvFghO;XJIdf|HZ?qEu6KjOWjz|Mh3~d-J>M z2bn^#eW_2;YCLPaT=UD&s-dN6vH9oh`w;f&k;c%*eJxe$SAS2IuUWIYwN={KXKC=W zo@kqc?QGndc%PXcDLiEnD$C=6<+V$tZsWCqd(E9pHM>kYeYGazzutP_JN5l}X!Gw+ zmR7-*l{{o=^AqNdtE3O|r+X~KmY2`}bWS_CosoC*=I7K%!TkcZS^A1M{5p-Y1dbm4 zko70hgdCseoTRTv&X-_+_zKI)zE)xo;x zrstgX%#zRV#?U2h7MAQ0rg5LSX>^XS-Z@dm9BQ72%6b1tHnB|7Fen)dEGNI52Rkq# zXd0rON}H&NSY*g4l7_Hx>(*|v@#On3-bt2V%falO^7dc6#&k4D8Oi4Yt}bPg{R0Aa z#7NEd8IT`~+A8_@jQnBfYZo2gqHkK2;mfdvn@ehSXyB@WNZ$2M(UMnv?;c7WWcM}F z)a;T{T!43DXn2?_k|^3iQiYtse?k7i$g7<`4K*scCulza1!SW5qFhC^Ecr>r_|7p! zPGuDH#4ac8iU{6olFW?1nZA?TkMa_zncLi;aYuhx4b+jC#( zx6dqemWr6Y)y)V9{t@oO?f5gvLP7awVf~vo$8TE4I0}yqHE%k7YvEV?Qdgnyg6@}x zUxT)8RgsG)kH0Fa3h6((`Jha!&OmSPgL`s!nXfFDx=V-`Jk&895;Q$!mE$=rzYGI( z(LNb&Q43`mBB)g96t~yqq_aWi z4jqY71y0~Ocr!J2>=QlRc=w|?WbBS-|B{Q5a#l)jQg`Vxvx_|TmoCye6`5pDFn;{< zg~$_P5Spk~UL5|E@f&6goEi@-DP62t5}y-J89}I%~5Ed|G;#>^PyJwYPKzR?*FvwsEgQN zugUKwmIwK1*{=P!x`Qq#g#q>?5#2oX2N4A$B(!DI zCYO=htc+{h#*fqcb>n>SXGTb9SXfg(LwaEthz8GOM060;N_B{xpNd7rH%k$8wf{sq|_GZok z7S{OX%S|SXyh@44Vw`53Q{LwiWKa>fIW|nDufXxorJqUP9n>^_BuC{Qe31U!_L7Fa z>9yq-j~m-FE{a9%k~|(6^F=TzsBOYb@s3hr@5oYvFf@?@|HvjP%5;J~>+xa9dn#0Ju# z{DZ9wH0#f7_SW-ZA1(Zup@%Hnu~g%DRSVB-p#?Z>$n{REzT#G#tFdxM=7Ulqgb2~- z%w50jrh9#NAhkx1mgBZOn(4T19X+$c#j9_V6}|la9uiK=OqUlliHIhrWMv%`l9->k z*Xxv34?4+`m7kHf`_s#gW&{tR6r`=?J#pyXv#6-S+gM6L-^n71rEmUP)ad!X<1)|U z)fRsLu*~w7i7}I<$!S&|sZ#HZ-+ykqcapK2N!6^oAL))VCxq+4*V)ahjycZoeC{*e zq#V#3KQ)4t0i>JW7cj&-1|FZ6DJgxxh>1gQ1p%0YHWKrb(v6j{^g#1N3d?;Z2>XF-Kt(6iEsY)dd`l*ellN&l#=eO9Em3`Sx-l_lx z4$jzLb8aO@iS<(~pmLZM)caYMCVHF0$p%|Fe~~LVkZXHU`Lde*;nt+QuD0bGB}{NiOPoHytjZ?eTye-h46ssE>vD-&d49g}?yZ6TYh^EY8ZouG zvl{JI5{9PhA1y%P^6PtkfuZ$O+!f$%909hkbu3!HKIDFulrj3@8QW*P$hc4rsf`Xyb$93~hm-D7`X5skQ#4h4rmZFmnNzj#|KVPKB zlQy;+TN{%f9sJ(+E_+0NX)+Y~v`GHAsgPyYB9hZGq6_QpI@GJRwd26xx&pqzJ5>tJ zjY5JZO1ZUbUtvXSr-w6(*nJa*a%3%Zb^kpxK%*lJqJXj;%jSsmc3yv?r*SGpt&I2q zVT!zjM8twP?7g;F%HWcyRGr=T+MKGm;H&7jf#>%TGG7dZW>LD~>A!ka&gd${e$fA- zl7u@q=)})J`9HG}Q*h_N>SF_u_8RA7tLPkdoA@lY_lC;tV&Cc@Ver{%BiE`&aufs*WK&&52MiBPn|fhJ#fpQplL0sq&Sbnwb`|^Ht=mYJm#U5=6bX3 z@ALEB6h1J?+jB|tU3x#2maCrL^qykimbKeyK%A#??d4$IpCdgca=+dkj`uV_U2aVq zU+#JjQ?B(Ae2DD+%y*S~(F59t%AVk9t+_-{0opI%&xd6n@%E171p`~#^a~REm>FTM zMQ$v(>PE;>U_%J@4?}4`=u!;*7y?lY3`%U8ohzSPB8A)(GHrv@o2a5qCD4*M1M>#QnnPN^#vu$e+j23fx50f@$R z;pYQV7IXjp*%kj9t+^S(r{<21vGMW4+k()rIMeJ4cCxbW=i`e5=?9Vml5s@l!0UhH zQAUPPfZ1N|Q-c7PZsd}T6#Z;K1iYC0!&&U#u`7Gv-a6K5epb1qGto5>M=rE}zC)8a z_p`O3K)=cUR#i88aOlj-aOMT@E%iGdyW6?^n=+(l;)QLnwPz6kD_}(`wq7< zw^!{u^DHf$DsjO6A5zpDmN~CQEzdqHgE@Mt7JGfP5F97vN`Z^WXWQ?8LP;rG0FTh% z_XHE4$#vD)kZA5h2B?<4{-B+)#eX-)egwZciKsyEhohe{5PD!>G_v~eSKC`l>q}l z7V6bdpyRpRc=%OVRMb2uvFYZ6KJcm&QF>C&0nG3+-p3iutNNk5lbU3RnEm;B%I{WEmU72cS zef-wrOG~$JF(wDDKAX0ekCYv{XTR*kJ(UaQPj}p2F0yQ`t>t$RSykwooBM2esz01O z|Lao(%k+7jvznSOv2h}Bq0PBgc5zUaa3T6_!5k1s1m%!u0I;cKteAh_K1&ECL9?pc zfp2fj# z3cfO&mVmLXaX4UKo`_$XN+k}2jC6u<2xdJTCr`erp`mf=6ho}>;{dZfeFPsf@|tIP zAhrQCOGbKQ(9cVr#nNqUyrrWXf7n;tBHDTf%Xr_VnzY6_f98mNj^&==Oj!pG9Ps#l z@6^CCO8N|7pCThUU@IWS%5dxLBygxe1yCGQ(to$MpA4!8=N|feadHVuU7$o*p`6Nm zKcZC!;|(*&-#=`vTD|xcDTIjXEjDVc-@(p)nvq@FO(3)i&;Xzl|1eyJ^mB(47$y5& z%AeR>k6jc!jfqG1I)x8#yR@-@5vu z;smEYfTwfplv7~j8h#WLqsrJ)QCfdNJh*2 zbNJJQISpjRl1@`J$ZfinUaWLJC_w0KN5rM*o^vp6F zVYV?$0|0IV%_7sodI@6WfV3=Gl{ zob>oAk3L!;whgj==w^`y0IM7vy$5}5!M5R~cvWdGg_>SNqZUom6iTrfaxko19C!QR z@dC*ujW7WO!@}Ak`_P)LuYyS)no2zGcuVYy0lEk|Oz<~=x#!^K z9uxapt~wjuY>8+=6pNROXjOU<6e#Cuqj;L8SXL;Pi9;;G`=q6%K~}z8Gs%MNVZ_cL z5*G#Adk~L>u?9`NFh`$~^hS$KHHi(|~#=DSA9OxaSF zkFThL4asaj7>#+6iG%4OsJQ&NR)~<-rV2b99yc*nNKilb;>$$hqR_Ef4EzVE|9^zU z_@99KPjqnSUOao&wd4ae0fBQJztgW@vU8!%$Frcvc!g4EyS1xPbS0F9@OSCHF=Qw( z=V=vw{NhQf^}nC=S{dR=z)56001sgxVg63h)6ZaEuVzRm{QO&K@G2?Ef;n;Jk`=n@Qkv6st6ksi z;Y~VxI!Zg;x9_nvoT*4{V#n;E=4LmHHbG3x&Lf7lpk9<1i{wf3O9KOMLRNmii^Vca z7sBXF2P0CC6VfV@YEQRfg`YpvgzPl%aD(@WF-ci(vCCp!7J`moBqdnYOgzAd^c@=7 zz{vQBQnGVDzB(UIeVX$K?x&r}Z773Yqd+#1>-I*$QA66bQjr;!(Hnc-3MdLNP9l@}9*8 zMEtVbSQ|S3mq_+1X~)1APayO24p5dG3h{_qeSST*@n6G6;pF$_D$6qs-W_nz4I2`=GdyY1s)@*FTJ;zby8B_$iz3n0iBkspY)WiYkg_3tXX z7OkhO42TrD=oyZnS@57-CPPgGVzhOa)%GL>MaA{JDA-^tgHT|l?1K5*2Oz{6Zoz*) z(}bIgaaj7E$ZAN}3+!nUCGBHV@VuULbrqkr#{LGMuWf-Yfp-&n4(6Y@s4xr>`y}=T z0AjC(o_YOan!!vT9VB%v^LtKKvLZ*<*mt@qAb>u?6091sKGgUc*D%RkMs^_T5U}9b z`5~4U(tUZ&04egZujK_aP-2)Ez);(u#`o66=4@%{gg(uZ@;G3>QZ7 zS%|d`?$}Uuerc|jjPynWigxPU6cWW@enjN>`SBYJ|I&k9@53HF(nW}&nKq8STgTjZJ z>Ep0w&Q49?PT;lKO<+x8Nr?e6)sq|EY+2jIa#K$1+N#EmjwPI?@LVxK>Gjw;4&{P1 zep;pQ0V}4JMvL7r>{1Lf7B(T{VwW`dRfT(8Yb`|JG_5if-t?(iFQOf^XZ=N&g^YHG z)U-?ktDGXN)0HCQi&MBhD=8N1*BKS4FVklTjV&$pD9v&a3jd5C=?{RE6J5$k z!ZGsdnO)uChY*}8B*gu!H6t1nr(A&S%fRY;z?uznRFX+(Nb(4kT5f6vdu#13cnXj@U^!8}l?@aII24)~NfTfOc@1nzCsCTn4Y;4E@0|JBWj6`xnCm$Hp^}Ixo28ikd2b3}D z!EhfcY$EE*Tp}9f269i{Ai1o*011>}eR1SLMardv#khXMhHZ>%bMI&#c=*x6rN}sw zY4he}GQJnom&s>OGiK>iAP<2}(QqGbHT2M?!dN~StN~Nh%#2%+Ay^D0#_mZE6f7=b z32#g<+Su&&hs5urg-CQwb6uTjmhNi2*Ba4i^u`2R*V!4rv*Q1g7(yI@M_O zEHhI>U7e38)S+u*R)9POg5UvL1!Wksp-Cg$V0^oG->6omXs4?r{}XG)ZLQ<51{-jL zP2P$q^@cQ`KjJx=9p0rVCE~ldgaehhr~DncM$}dW5ViflW_ zsuowp(#pf(DiCE44nt0b&N;Xe)6-u2hJ;KDZ)$99ecm{DV)s_rBvAgz$tML^pu};A zNwxKNa1UcP7vs3}1M_SU=~!VY#u2Wv&;73Q8dJ9Sd5I17c@74NT6ugAPJ_Hx<%8s# z>j*H;`uc<>8&4VIix&^vtr{JglIaQYQ%{9HPwcTOGAcp70=dzrNbKF~&u0~)Mol|% zH1-taO>MU{scWk3k#g72w4S##)=T{qwC$HL8Vb*8h>5uRo6C6ik@`Ztw(z?hA8gu7 z_U>_THqFY6g98IkF08^MUYPT7^l{JpaqlIio~VrBf(=fWzM*Je88BveULyL8$&;p}T!M{-_z z(?v1x^H=Nw)dRn#nU&Z_K*skQIlVk1Y;+FvNJoVGtxev;F#i||oqoWMG1s3)x&s{B z=RYy$lYG__2K(Q?J>bH}&V>LP+UN|TbMfwD^M1@fkrMd8?%^yXu1UO2LyYKBJu!kRAs_1NK!OoUK9mZ^ef%A^A%%E@joNb4z zgbfa27i{*}8KCJn$q0iqB)_{L_0&-`Hts+`0oY}LbM+S?VSpYI=5XlvP>ewNcKg;X z5D2JRaPc82zzb(m#yUoT9I}#Q0PG{|WZ@JK&@u9Dt_ z4fLpS*pI%xnW-rZcG|80iyrm_)M419lh3AYqF+RT&Ux_AA#=U_oE%XhA@$_5 z@LyEh&;TzD9>2Ggi+#OUZ(XBPy<;NJi)K!pMM_I$}TEn&bUfVTi#Jcn50<41O>D|;i~ z&rX&kgHu60I+gki2RqW+_wU{Nl}bft9Le0!(ZRiS>zjR?8P>OHOs&5pw^3b;%FkPf zu+NU6&qb6XDr&?!UFso{(_ofwZiY_R)RdTD=a{AILPFF)9&I#EV;}B=?}A&@PYkF- zYz=Ub)S0f|HKt-5ShMgaBZI{#tDslQ&`?$W9?D`ws@|yWmyQ*HLJKM$h(s>vs0Fx=?0p%?H*E*EkHz?!197UMwl_bDP15lAAACYIovwt@c4Rf>o1 zDaUZ+)2!Bav6pUtla z414|Sg1w8WINgL~pnAgW9*2_A{E-p673BZaVe!HyaSk;nr%6C1-;ps~Kr5dg;x8tY zNNCdb`^P|@_Wb$nnWD{Hq=!~^A`i(-#h!F*l8 z^kS_RY%Rtd(4d1_Dah>BRdix)|$*KDizF3$yh zN92jyi2O*c`^M_*wz;tn)2f4`eq+^=+nnaKok$}%LXd0cBp~nk(<16yW2Q;#$e=-- zMlwzcq_Wm)jG{}&a}OimyJXqRR$pRH+q#vQJ67!%7Y{G{h7p%4$+z#`btUQL>f4){ z@h)dV4afBN)B z88=ca5jMgg8E1>>+^@yE%@j5k=tktV*!jpo`sXZ}i?9t4dN?wL6wfFtf6KRrjL+82 zE@_YPz~Qo~*`L^S9(+8pzj?S?>83&g&TsWp#Mp`Py7)*UH4l#_Zaz#}9FTw+3WWv- z(-4J*)dflOuEQ+eUS3Gh!(G>naBZK&hJ+YGxpZb|DD`{Rj!_?`@m?Ed}8#qY{ep zRVmuuIADm;$`xCR6ze0$Bg%H2521;Etza0PRDS`{@F8{csTKeWpq4T`9YRo<`Ka&u?aYPWIvkkY-ylawnI>e}L zv=T#U7aQSHal31_?~WYlMRC%Y`Or4T^P_Fs~W;0vTpUN(r4NFlt{HE zwtxi5tw=-y67oCZ+#w@GRil_kax~<)P;?;B3bi&07X-0z`%D}ki~o)BW-dP|>JjSuGiI-Me1N`;GUUybv-W_w&OZBz0jT*e^U+ z0h`!+=IbvDc^{gb^Qq-gbDS?Tw=bYYl+)2M1)V-|{G9zL+Flq%e)RS#dS?)8!g+tO zY*lPjpzX$~T{*e}Gcuvcy{zlpm5r9KPrTZB?dlb^+FeLyn@zq?An%yWjRvl=2mUW& z$~X5VCh!v&JkWnQ0|g%H-iE)~)~s`uTD|EGI0y_U?C1a?;PNW-{k=+aGz}0qaigd_ zcL<1@_+wR6JN{vKg1>xGPo=3NFafDtMIhQp4xr(mr=$eT_+vH|a?>zJ1Ux;w6NnIt zmxV{!B=4mqC*QQxi&6wjoKsQ~UE;C_3Z!|YV&PKPmQx!_x)H-MIOS)HTuz+e z^C#OZM3APmbLS7J(%ReihpVhmP;Mpd_NxNS=0(|E0L@*vkci?N?K{GBd)Jf=R6c02 zgK{If205y5QT7ZEgZC5)SHbQzaFWt1{gqHd&bo3~oH-M$ycbD&cs*UfC=IZ; ztp>F@ws{$pdi%UmG}2-<7?Fh`=wg=!7lz`bR`wSDzM0p>lsZ>yWSaJ_kwHDBk{l&Z zUfQ#~b?45LnN~43h-r`yuzj<$6QQNj`=os5959XIiD-@C%+bP?^|WY~(}Lu@(b|O4 zs1OrY^_z#i51l-9DiX6`<>8X5qn+w~KF&YnLPGi#^Z=xHv4zrlxVZ!VN^RSy&TV;~ zg;xjSP(e(gO2j?I%|&I!twQ2HOARnGFc{t^x~)R(AOzCh-5&;xYJp>qx-DP=ZRGv? zPwOuldkrST^V#k^(^O?c1b|=F?pf=5k#5Z%K|yOBnkYOqYGhe84Gs6GJ(zPy0=^4mbtw^r>Jd<2Nc9dv zK)>dP%@ffQ_N@r-Kne(UoZiDfe2EB|_;@ts(_V`Z7NOdLl$rOz$4&GVD44j0f$si6 zU?ZYlTkK~3Bn@KZ1(%FR-5^yP)gYWh9D;;I5Lq2J6}Gan&H^k05lPWLbC?~ofbtPv z2#_?+vIS*YG0QWg5~E~8L;#n!)Vz?C)Essr5DajiKzN8!r|p&qX{{5|`M`384ZBI& zx9(+Te4))BtEYZo2a?<}VC=DML9OK%op|HR&>V=+ph|PUH?P$sFx1$i?=yQ&iws0H z`esT>?@{jI(i&vxzMu|YV#}zKf{@iok-KO1a~gN5JLa}H0pme-CHw*euSF|vQ$mj; zDk6fjGuNS=gz*+Qbr3>{)HeH;?3?sba2Eo{!4b^r53el-v<^!_q8$@eh3$z;eyaMt44TFOGt7=W%*@CZFgfvK&_fxA2p6YB zbvF82_0y->U)Sz9pR?MI|LstQ;u|Tb0fz73PhkP zo|O>PLW#XXYJjvjBq{UBR2bFyeP&oo2dPFT&woCl9)ZU&8CVOpNsva8fDGmv?Esb_ zg;!0j263u}49Bt|gw`$eER7j(A@T6=P`g#pn?o6eJcSVVk8n?r{?67i^BVMNVv>a8 z3j>V^BSEx%o<1y}Cw4ng!a7ti!$;QI4<|T!Bxs>s7c$-vcOXPJq8%3*8-q9JQ4a!@{vaA31Qvjb&sM+SxrAqhh+VX*;h0affL#S__Gtd|vJ)Qv zm5d-D`t3V*MOS%B1UgmP#2=0n<4L)IhP z>q{oPJ-)Fz7^u@M+1^jfRdi(3wv9cc*&YP&nJevZ!MT)uWGGJU``nF&QOgWl|D;GR zm*=38sej3y8aqd!H4o(L7r?1F%suVv%4Ept*Xa2@>9EFTx7L=j{SpoaDe3%+4uhi` z@r=K}+@$tZw7_Y`&12!pA){$W17DN+(V+2G{TR2JgC41U^;Jxi9K!yR?3Au@ZVLBB3JS4Nw97<}; zvt;H65|PsSWYG~uN8$%)N@$kp#RA}t)}Rgn>?tMt*y{-jA#8|fke1r^it3{H+J;=t z9XrHcmPd82-Nlp0K)rr8?NvjIoTHcIl>0^kwcF+!^;DIw!Y{R3TammEhdS7MoS0Mh z!u??-(l<696Kj~jIe-|H)W&)d0M~c~GhAo1n|7*Q2-vi_E8uwi3(~j04fhopA|PwH zgESy|qq`X7kVkRG1J3!9b@M@HY+&}l8=GD}r=zoR?TxN3Q?F=ZkU~*hH*yoJPS-Q? z>QkB>3dRvkxO9-2(U3<*Ik<>2beo=g&p%}SHG^QK#1@D+P>&;X(|5-LvD~@?vVf+R zv@c;XOa0Jy>Eo_4kE9G`3)6^%J_zvspc=$sibahqO{CbuEoZVaunXza7_&);CZHUI z!!0Ca%RJk9(w{&%X3z|ZyYIciP$)D3+Ua=-3D@O9_mW7M0hXMb`_+`lv75rzKOXQ; zl$PW*fKUyOIRVxYgJ(|;gCQJ8C(!ZAGgNlwTYo%R4)LuxkbsuY<1UwRGBZyEoBTnA zFb!?J{N*k>-n~bUdZ5z8X93JM{p;5PNLQefgzE!D51}G1E=H6K6!!Sf%3xN^7Fomy zWM{|oMq5AUuY|GDQE5AC^5gH_JMK7n1zR+cCp!xWR_UJdSK5ve0Dc^I`3@ZT;M5ZX zVE?h|d)eNkqM{b7oSXjsN7c<*+uQ9Wq7nL8#D2U@`vJym$nK1glY!v+;7)ev+qq65mSgN>?aJ2Fvg&BQ(eBk;#{8qMuL*vED zow+uA*9@wnFpQf<$0-rbARY4t+FB4;7*kUr40vJXR}INNa`Iwg56##p+O~Q6EB}g_ z5d(j~TE^Gz_g^u?DzE(0%hhIjSf)VK-)ym%K*z`(dTOEWKYhUe@m2q?d4vDYI*tGT jUnB17|Km5SXL(J>;JPzM>dUl=t8x0I`iTq$(;NQ<9nmy9 diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_3_2_copy_report.png b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_3_2_copy_report.png deleted file mode 100644 index ff9bdb06f5ba347744f59a2b49aee545b269df1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52973 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%0Ar(|*f(FP)m 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 D9{44z diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_4_mary_sees_collection.png b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/img/private_report_access_4_mary_sees_collection.png deleted file mode 100644 index 8ef4dfc1020df992d07ef19fe3c1d0ca871976b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28152 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 CwE)Zj diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/instructions.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-7/instructions.md deleted file mode 100644 index ebf210b86f1..00000000000 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-7/instructions.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -id: instructions -title: "Instructions" -description: "Find out how to update to a new version of Optimize without losing your reports and dashboards." ---- - -Optimize releases two new minor versions a year. These documents guide you through the process of migrating your Optimize from one Optimize minor version to the other. - -If you want to update Optimize by several versions, you cannot do that at once, but you need to perform the updates in sequential order. For instance, if you want to update from 2.5 to 3.0, you need to update first from 2.5 to 2.6, then from 2.6 to 2.7, and finally from 2.7 to 3.0. The following table shows the recommended update paths to the latest version: - -| Update from | Recommended update path to 3.14 | -| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 3.14 | You are on the latest version. | -| 3.0 - 3.13.x | Rolling update to 3.14 | -| 3.7.3 OpenSearch | There is a direct update path to 3.14 (Fast-Track), see instructions in [section 5](#5-direct-update-from-optimize-373-to-314-for-opensearch-installations) | -| 3.7.x OpenSearch | 1. Rolling update to 3.7.3
2. Direct update to 3.14 | -| 2.0 - 2.7 | 1. Rolling update to 2.7
2. Rolling update from 2.7 to 3.0 | -| 1.0 - 1.5 | No update possible. Use the latest version directly. | - -## Migration instructions - -You can migrate from one version of Optimize to the next one without losing data. To migrate to the latest version, please perform the following steps: - -:::note ElasticSearch and OpenSearch databases -All the steps below are applicable to ElasticSearch and OpenSearch installations. To avoid duplication, we will only be referring to `Database` in the following instructions and will explicitly mention when a step is applicable only to ElasticSearch or OpenSearch. -::: - -### 1. Preparation - -- Make sure that the database has enough memory. To do that, shut down the database and go the `config` folder of your distribution. There you should find a file called `jvm.options`. Change the values of the two properties `Xms` and `Xmx` to at least `1g` so that the database has enough memory configured. This configuration looks as follows: - -```bash --Xms1g --Xmx1g -``` - -- Restart the database and make sure that the instance is up and running throughout the entire migration process. -- You will need to shut down Optimize before starting the migration, resulting in downtime during the entire migration process. -- Back up your database instance ([ElasticSearch](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html) / [OpenSearch](https://opensearch.org/docs/latest/tuning-your-cluster/availability-and-recovery/snapshots/snapshot-restore/)) in case something goes wrong during the migration process. This is recommended, but optional. -- Make sure that you have enough storage available to perform the migration. During the migration process it can be the case that up to twice the amount of the storage of your database data is needed. (Highly recommended) -- Back up your `environment-config.yaml` and `environment-logback.xml` located in the `config` folder of the root directory of your current Optimize. (Optional) -- If you are using Optimize plugins it might be required to adjust those plugins to the new version. To do this, go to the project where you developed your plugins, increase the project version in maven to new Optimize version and build the plugin again (checkout the [plugin guide](../../plugins/plugin-system.md) for the details on that). Afterwards, add the plugin jar to the `plugin` folder of your new Optimize distribution. (Optional) -- Start the new Optimize version, as described in the [installation guide](../../install-and-start.md). -- It is very likely that you configured the logging of Optimize to your needs and therefore you adjusted the `environment-logback.xml` in the `config` folder of the root directory of your **old** Optimize. You can now use the backed up logging configuration and put it in the `config` folder of the **new** Optimize to keep your logging adjustments. (Optional) - -### 2. Rolling update to the new database version - -You only need to execute this step if you want to update the Elasticsearch (ES) or OpenSearch (OS) version during the update. In case the ES/OS version stays the same, you can skip this step. - -The database update is usually performed in a rolling fashion. Read all about how to do the update in the general [Elasticsearch Update Guide](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html) / [OpenSearch Update Guide](https://opensearch.org/docs/latest/install-and-configure/upgrade-opensearch/index/) and consult the [rolling upgrade ES](https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html) / [rolling upgrade OS](https://opensearch.org/docs/2.17/install-and-configure/upgrade-opensearch/rolling-upgrade/) guide on how to conduct the rolling update. - -### 3. Perform the migration - -- Go to the [enterprise download page](https://docs.camunda.org/enterprise/download/#camunda-optimize) and download the new version of Optimize you want to update to. For instance, if your current version is Optimize 2.2, you should download the version 2.3. Extract the downloaded archive in your preferred directory. The archive contains the Optimize application itself and the executable to update Optimize from your old version to the new version. -- In the `config` folder of your **current** Optimize version, you have defined all configuration in the `environment-config.yaml` file, e.g. for Optimize to be able to connect to the engine and the database. Copy the old configuration file and place it in the `config` folder of your **new** Optimize distribution. Bear in mind that the configuration settings might have changed and thus the new Optimize won't recognize your adjusted settings or complain about settings that are outdated and therefore refuses to startup. Best checkout the Update Notes subsections for deprecations. - -#### 3.1 Manual update script execution - -This approach requires you to manually execute the update script. You can perform this from any machine that has access to your Elasticsearch/OpenSearch cluster. - -- Open up a terminal, change to the root directory of your **new** Optimize version and run the following command: `./upgrade/upgrade.sh` on Linux or `./upgrade/upgrade.bat` on Windows. For OpenSearch installations, please make sure to set the environment variable `CAMUNDA_OPTIMIZE_DATABASE=opensearch` before executing the update script. -- During the execution the executable will output a warning to ask you to back-up your database data. Type `yes` to confirm that you have backed up the data. -- Feel free to [file a support case](https://camunda.com/services/enterprise-support-guide/) if any errors occur during the migration process. -- To get more verbose information about the update, you can adjust the logging level as it is described in the [configuration documentation](./../../configuration/logging.md). - -#### 3.2 Automatic update execution (Optimize >3.2.0) - -With the Optimize 3.2.0 release the update can also be executed as part of the Optimize startup. In order to make use of this functionality, the command flag `--upgrade` has to be passed to the Optimize startup script: - -```bash -For UNIX: -./optimize-startup.sh --upgrade - -For Windows: -./optimize-startup.bat --upgrade -``` - -This will run the update prior to starting up Optimize and only then start Optimize. - -In Docker environments this can be achieved by overwriting the default command of the docker container (being `./optimize.sh`), e.g. like in the following [docker-compose](https://docs.docker.com/compose/) snippet: - -``` -version: '2.4' - -services: - optimize: - image: registry.camunda.cloud/optimize-ee/optimize:latest - command: ["./optimize.sh", "--upgrade"] -``` - -However, as this may prolong the container boot time significantly which may conflict with [container status probes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) in managed environments like [Kubernetes](https://kubernetes.io/) we recommend using the [init container](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/) feature there to run the update: - -``` - labels: - app: optimize -spec: - initContainers: - - name: migration - image: registry.camunda.cloud/optimize-ee/optimize:latest - command: ['./upgrade/upgrade.sh', '--skip-warning'] - containers: - - name: optimize - image: registry.camunda.cloud/optimize-ee/optimize:latest -``` - -### 4. Resume a canceled update - -From Optimize 3.3.0 onwards updates are resumable. So if the update process got interrupted either manually or due to an error you don't have to restore the database backup and start over but can simply rerun the update. On resume previously completed update steps will be detected and logged as being skipped. In the following log example **Step 1** was previously completed and is thus skipped: - -``` -./upgrade/upgrade.sh -... -INFO UpgradeProcedure - Skipping Step 1/2: UpdateIndexStep on index: process-instance as it was found to be previously completed already at: 2020-11-30T16:16:12.358Z. -INFO UpgradeProcedure - Starting step 2/2: UpdateIndexStep on index: decision-instance -... -``` - -### 5. Direct Update from Optimize 3.7.3 to 3.14 for OpenSearch installations - -Optimize 3.14 supports a direct update path from Optimize 3.7.3 to 3.14 for OpenSearch installations (Fast-Track update). In case you are using a previous 3.7.x version, you need to update to 3.7.3 first by following the normal update procedure. To perform the Fast-Track update, follow the steps below: - -1. Perform steps 1 and 2 as described above. Please note, the backup step is NOT optional, please make sure you perform a full backup of your OpenSearch database before proceeding. -2. Set the environment variables: - 1. `CAMUNDA_OPTIMIZE_DATABASE=opensearch` - 2. `CAMUNDA_OPTIMIZE_OPENSEARCH_HTTP_PORT=` (e.g. 9200) -3. Since the Fast-Track update is expected to require a significant amount of time, only the manual update script execution is supported. Therefore execute the update script as described in [section 3.1](#31-manual-update-script-execution) with the following additional parameter: `-fastTrack`. Example: - - ```bash - For UNIX: - ./upgrade/upgrade.sh -fastTrack - - For Windows: - ./upgrade/upgrade.bat -fastTrack - ``` - -4. You will be prompted with a confirmation that you wish to perform a direct update from 3.7.3 to 3.14. Type `yes` to confirm you have backed up your data and that you wish to proceed with the Fast-Track update. - -### 6. Typical errors - -- Using an update script that does not match your version: - -```bash -Schema version saved in Metadata does not match required [2.X.0] -``` - -Let's assume have Optimize 2.1 and want to update to 2.3 and use the jar to update from 2.2 to 2.3. This error occurs because the jar expects the database to have the schema version 2.1. This is because you downloaded the wrong Optimize artifact which contained the wrong update jar version. - -## Force reimport of engine data in Optimize (ElasticSearch installations only) - -It can be the case that features that were added with the new Optimize version do not work for data that was imported with the old version of Optimize. If you want to use new features on the old data, you can force a reimport of the engine data to Optimize. See [the reimport guide](./../../reimport.md) on how to perform such a reimport. diff --git a/optimize/self-managed/optimize-deployment/plugins/businesskey-import-plugin.md b/optimize/self-managed/optimize-deployment/plugins/businesskey-import-plugin.md deleted file mode 100644 index 7824bf222be..00000000000 --- a/optimize/self-managed/optimize-deployment/plugins/businesskey-import-plugin.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -id: businesskey-import-plugin -title: "Business key import customization" -description: "Adapt the process instance import so you can customize the associated business keys." ---- - -Camunda 7 only - -Before implementing the plugin, make sure that you have [set up your environment](./plugin-system.md#set-up-your-environment). - -This feature enables you to customize business keys during the process instance import, e.g. if your business keys contain sensitive information that requires anonymization. - -The Optimize plugin system contains the following interface: - -```java -public interface BusinessKeyImportAdapter { - - String adaptBusinessKeys(String businessKey); -} -``` - -Implement this to adjust the business keys of the process instances to be imported. Given is the business key of a process instance that would be imported if no further action is performed. The returned string is the customized business key of the process instance that will be imported. - -The following shows an example of a customization of business keys during the process instance import in the package `optimize.plugin` where every business key is set to 'foo'. - -```java -package org.mycompany.optimize.plugin; - -import org.camunda.optimize.plugin.importing.businesskey.BusinessKeyImportAdapter; -import java.util.List; - - public class MyCustomBusinessKeyImportAdapter implements BusinessKeyImportAdapter { - - @Override - public String adaptBusinessKey(String businessKey) { - return "foo"; - } - -} -``` - -Now, when `MyCustomBusinessKeyImportAdapter`, packaged as a `jar` file, is added to Optimize's `plugin` folder, we just have to add the following property to the `environment-config.yaml` file: - -```yaml -plugin: - businessKeyImport: - # Look in the given base package list for businesskey import adaption plugins. - # If empty, the import is not influenced. - basePackages: ["org.mycompany.optimize.plugin"] -``` - -For more information on how this plugin works, have a look at the [Optimize Examples Repository](https://github.com/camunda/camunda-optimize-examples#getting-started-with-business-key-import-plugins). diff --git a/optimize/self-managed/optimize-deployment/plugins/decision-import-plugin.md b/optimize/self-managed/optimize-deployment/plugins/decision-import-plugin.md deleted file mode 100644 index 6b26a796bf8..00000000000 --- a/optimize/self-managed/optimize-deployment/plugins/decision-import-plugin.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -id: decision-import-plugin -title: "Decision inputs and outputs import customization" -description: "Enrich or filter the Decision inputs and outputs so you can customize which and how these are imported to Optimize." ---- - -Camunda 7 only - -Before implementing the plugin, make sure that you have [set up your environment](./plugin-system.md#set-up-your-environment). - -This feature enables you to enrich, modify, or filter the decision input and output instances, e.g., if instances in Camunda contain IDs of instances in another database and you would like to resolve those references to the actual values. - -The plugin system contains the following interfaces: - -```java -public interface DecisionInputImportAdapter { - - List adaptInputs(List inputs); -} -``` - -```java -public interface DecisionOutputImportAdapter { - - List adaptOutputs(List outputs); -} -``` - -Implement these to adjust the input and output instances to be imported. The methods take a list of instances that would be imported if no further action is performed as parameter. The returned list is the customized list with the enriched/filtered instances that will be imported. To create new instances, you can use the `PluginDecisionInputDto` and `PluginDecisionOutputDto` classes as data transfer object (DTO), which are also contained in the plugin system. - -:::note -All class members need to be set in order, otherwise the instance is ignored, as this may lead to problems during data analysis. - -The data from the engine is imported in batches. This means the `adaptInput/adaptOutput` method is called once per batch rather than once for all data. For instance, if you have 100 000 decision instances in total and if the batch size is 10,000, the plugin function will be called 10 times. -::: - -Next, package your plugin into a `jar` file and then add the `jar` file to the `plugin` folder of your Optimize directory. Finally, add the name of the base package of your custom `DecisionOutputImportAdapter/DecisionInputImportAdapter` to the `environment-config.yaml` file: - -```yaml -plugin: - decisionInputImport: - # Look in the given base package list for decision input import adaption plugins. - # If empty, the import is not influenced. - basePackages: ["org.mycompany.optimize.plugin"] - decisionOutputImport: - # Look in the given base package list for decision output import adaption plugins. - # If empty, the import is not influenced. - basePackages: ["org.mycompany.optimize.plugin"] -``` - -The following shows an example of a customization of the decision input import in the package `org.mycompany.optimize.plugin`, where every string input is assigned the value 'foo': - -```java -package org.mycompany.optimize.plugin; - -import org.camunda.optimize.plugin.importing.variable.DecisionInputImportAdapter; -import org.camunda.optimize.plugin.importing.variable.PluginDecisionInputDto; - -import java.util.List; - -public class SetAllStringInputsToFoo implements DecisionInputImportAdapter { - - public List adaptInputs(List inputs) { - for (PluginDecisionInputDto input : inputs) { - if (input.getType().toLowerCase().equals("string")) { - input.setValue("foo"); - } - } - return inputs; - } -} -``` - -Now, when `SetAllStringInputsToFoo`, packaged as a `jar` file, is added to the `plugin` folder, we just have to add the following property to the `environment-config.yaml` file to make the plugin work: - -```yaml -plugin: - decisionInputImport: - # Look in the given base package list for decision input import adaption plugins. - # If empty, the import is not influenced. - basePackages: ["org.mycompany.optimize.plugin"] -``` - -For more information and example implementations, have a look at the [Optimize Examples Repository](https://github.com/camunda/camunda-optimize-examples#getting-started-with-decision-import-plugins). diff --git a/optimize/self-managed/optimize-deployment/plugins/elasticsearch-header.md b/optimize/self-managed/optimize-deployment/plugins/elasticsearch-header.md deleted file mode 100644 index 4c19fb1047c..00000000000 --- a/optimize/self-managed/optimize-deployment/plugins/elasticsearch-header.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -id: elasticsearch-header -title: "Elasticsearch header" -description: "Register your own hook into the Optimize Elasticsearch client to add custom headers to requests." ---- - -Camunda 7 only - -Before implementing the plugin, make sure that you have [set up your environment](./plugin-system.md#set-up-your-environment). - -This feature allows you to register your own hook into the Optimize Elasticsearch client, allowing you to add custom headers to all requests made to Elasticsearch. The plugin is invoked before every request to Elasticsearch is made, allowing different -headers and values to be added per request. This plugin is also loaded during the update and reimport. - -For that, the Optimize plugin system provides the following interface: - -```java -public interface ElasticsearchCustomHeaderSupplier { - - CustomHeader getElasticsearchCustomHeader(); -} -``` - -Implement this interface and return the custom header you would like to be added to Elasticsearch requests. The `CustomHeader` -class has a single Constructor taking two arguments, as follows: - -```java -public CustomHeader(String headerName, String headerValue) -``` - -The following example returns a header that will be added: - -```java -package com.example.optimize.elasticsearch.headers; - -import org.camunda.optimize.plugin.elasticsearch.CustomHeader; -import org.camunda.optimize.plugin.elasticsearch.ElasticsearchCustomHeaderSupplier; - -public class AddAuthorizationHeaderPlugin implements ElasticsearchCustomHeaderSupplier { - - private String currentToken; - - public CustomHeader getElasticsearchCustomHeader() { - if (currentToken == null || currentTokenExpiresWithinFifteenMinutes()) { - currentToken = fetchNewToken(); - } - return new CustomHeader("Authorization", currentToken); - } -} -``` - -Similar to the other plugins' setup, you have to package your plugin in a `jar`, add it to Optimize's `plugin` folder, and make Optimize find it by adding the following configuration to `environment-config.yaml`: - -```yaml -plugin: - elasticsearchCustomHeader: - # Look in the given base package list for Elasticsearch custom header fetching plugins. - # If empty, ES requests are not influenced. - basePackages: ["com.example.optimize.elasticsearch.headers"] -``` - -For more information and example implementations, have a look at the [Optimize Examples Repository](https://github.com/camunda/camunda-optimize-examples#getting-started-with-elasticsearch-header-plugins). diff --git a/optimize/self-managed/optimize-deployment/plugins/engine-rest-filter-plugin.md b/optimize/self-managed/optimize-deployment/plugins/engine-rest-filter-plugin.md deleted file mode 100644 index 3ab8fc6c08f..00000000000 --- a/optimize/self-managed/optimize-deployment/plugins/engine-rest-filter-plugin.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: engine-rest-filter-plugin -title: "Engine REST filter" -description: "Register your own REST filter that is called for every REST call to the engine." ---- - -Camunda 7 only - -Before implementing the plugin, make sure that you have [set up your environment](./plugin-system.md#set-up-your-environment). - -This feature allows you to register your own filter that is called for every REST call to one of the configured process engines. -For that, the Optimize plugin system provides the following interface: - -```java -public interface EngineRestFilter { - - void filter(ClientRequestContext requestContext, String engineAlias, String engineName) throws IOException; -} -``` - -Implement this interface to adjust the JAX-RS client request, which is represented by `requestContext`, sent to the process engine's REST API. -If the modification depends on the process engine, you can analyze the value of `engineAlias` and/or `engineName` to decide what adjustment is needed. - -The following example shows a filter that simply adds a custom header to every REST call: - -```java -package com.example.optimize.enginerestplugin; - -import java.io.IOException; -import jakarta.ws.rs.client.ClientRequestContext; - -public class AddCustomTokenFilter implements EngineRestFilter { - - @Override - public void filter(ClientRequestContext requestContext, String engineAlias, String engineName) throws IOException { - requestContext.getHeaders().add("Custom-Token", "SomeCustomToken"); - } - -} -``` - -Similar to other plugins, you have to package your plugin in a `jar`, add it to the `plugin` folder, and enable Optimize to find it by adding the following configuration to `environment-config.yaml`: - -```yaml -plugin: - engineRestFilter: - #Look in the given base package list for engine rest filter plugins. - #If empty, the REST calls are not influenced. - basePackages: ["com.example.optimize.enginerestplugin"] -``` diff --git a/optimize/self-managed/optimize-deployment/plugins/plugin-system.md b/optimize/self-managed/optimize-deployment/plugins/plugin-system.md deleted file mode 100644 index 4273e7c61e0..00000000000 --- a/optimize/self-managed/optimize-deployment/plugins/plugin-system.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -id: plugin-system -title: "Optimize plugin system" -description: "Explains the principle of plugins in Optimize and how they can be added." ---- - -Camunda 7 only - -Optimize allows you to adapt the behavior of Optimize, e.g. to decide which kind of data should be analyzed and to tackle technical issues. - -Have a look at the [Optimize Examples Repository](https://github.com/camunda/camunda-optimize-examples) to see some use cases for the plugin system and how plugins can be implemented and used. - -## Set up your environment - -First, add the Optimize plugin to your project via maven: - -```xml - - org.camunda.optimize - plugin - {{< currentVersionAlias >}} - -``` - -:::note -It is important to use the same plugin environment version as the Optimize version you plan to use. -Optimize rejects plugins that are built with different Optimize versions to avoid compatibility problems. -This also means that to update to newer Optimize versions it is necessary to build the plugin again with the new version. -::: - -To tell Maven where to find the plugin environment, add the following repository to your project: - -```xml - - - camunda-bpm-nexus - camunda-bpm-nexus - - https://artifacts.camunda.com/artifactory/camunda-optimize/ - - - -``` - -:::note -To make this work, you need to add your nexus credentials and the server to your `settings.xml`. -::: - -It is required to create an uber `jar` so Optimize can load third-party dependencies and to validate the used Optimize version. -You can add the following to your project: - -```xml - - install - - - org.apache.maven.plugins - maven-assembly-plugin - 3.1.0 - - - package - - single - - - ${project.artifactId} - - jar-with-dependencies - - - - - - - -``` - -:::note -By default, Optimize loads plugin classes isolated from the classes used in Optimize. -This allows you to use library versions for the plugin that differ from those used in Optimize. -::: - -If you want to use the provided Optimize dependencies instead, it is possible to exclude them from -the uber `jar` by setting the scope of those dependencies to `provided`. Then, Optimize does not load them from the plugin. -This might have side effects if the used version in the plugin is different to the one provided by Optimize. -To get an overview of what is already provided by Optimize, have a look at -the [third-party libraries]($docs$/reference/dependencies). - -## Debug your plugin - -To start Optimize in debug mode, execute the Optimize start script with a debug parameter. - -On Unix systems, this could look like the following - -- For the demo distribution: - -``` -./optimize-demo.sh --debug -``` - -- For the production distribution: - -``` -./optimize-startup.sh --debug -``` - -On a Windows system this could look like the following: - -- For the demo distribution: - -``` -.\optimize-demo.bat --debug -``` - -- For the production distribution: - -``` -.\optimize-startup.bat --debug -``` - -By default, this will open up a debug port on 9999. Once you have set this up, you need to open the project where you implemented the plugin in your favorite IDE and connect to the debug port. - -To change the default debug port, have a look into `optimize-startup.sh` on Linux/Mac or `optimize-startup.bat` on Windows systems. There, you should find a variable called `DEBUG_PORT` which allows you to customize the port. diff --git a/optimize/self-managed/optimize-deployment/plugins/single-sign-on.md b/optimize/self-managed/optimize-deployment/plugins/single-sign-on.md deleted file mode 100644 index 4d2439a6918..00000000000 --- a/optimize/self-managed/optimize-deployment/plugins/single-sign-on.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -id: single-sign-on -title: "Single sign on" -description: "Register your own hook into the Optimize authentication system such that you can integrate Optimize with your single sign on system." ---- - -Camunda 7 only - -Before implementing the plugin, make sure that you have [set up your environment](./plugin-system.md#set-up-your-environment). - -This feature allows you to register your own hook into the Optimize authentication system such that you can -integrate Optimize with your single sign on system. This allows you to skip the log in via the Optimize interface. - -For that, the Optimize plugin system provides the following interface: - -```java -public interface AuthenticationExtractor { - - AuthenticationResult extractAuthenticatedUser(HttpServletRequest servletRequest); -} -``` - -Implement this interface to extract your custom auth header from the JAX-RS servlet request, which is represented by `servletRequest`. -With the given request you are able to extract your information both from the request header and from the request cookies. - -The following example extracts a header with the name `user` and if the header exists, the user name from the header is authenticated: - -```java -package com.example.optimize.security.authentication; - -import org.camunda.optimize.plugin.security.authentication.AuthenticationExtractor; -import org.camunda.optimize.plugin.security.authentication.AuthenticationResult; - -import jakarta.servlet.http.HttpServletRequest; - -public class AutomaticallySignInUserFromHeaderPlugin implements AuthenticationExtractor { - - @Override - public AuthenticationResult extractAuthenticatedUser(HttpServletRequest servletRequest) { - String userToAuthenticate = servletRequest.getHeader("user"); - AuthenticationResult result = new AuthenticationResult(); - result.setAuthenticatedUser(userToAuthenticate); - result.setAuthenticated(userToAuthenticate != null); - return result; - } -} -``` - -Similar to the other plugins' setup, you have to package your plugin in a `jar`, add it to Optimize's `plugin` folder, and make Optimize find it by adding the following configuration to `environment-config.yaml`: - -```yaml -plugin: - authenticationExtractor: - # Looks in the given base package list for authentication extractor plugins. - # If empty, the standard Optimize authentication mechanism is used. - basePackages: ["com.example.optimize.security.authentication"] -``` - -For more information and example implementations, have a look at the [Optimize Examples Repository](https://github.com/camunda/camunda-optimize-examples#getting-started-with-sso-plugins). diff --git a/optimize/self-managed/optimize-deployment/plugins/variable-import-plugin.md b/optimize/self-managed/optimize-deployment/plugins/variable-import-plugin.md deleted file mode 100644 index e049c30d77c..00000000000 --- a/optimize/self-managed/optimize-deployment/plugins/variable-import-plugin.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -id: variable-import-plugin -title: "Variable import customization" -description: "Enrich or filter the variable import so you can customize which and how variables are imported to Optimize." ---- - -Camunda 7 only - -Before implementing the plugin, make sure that you have [set up your environment](./plugin-system.md#set-up-your-environment). - -This feature enables you to enrich or filter the variable import, e.g., if variables in Camunda contain IDs of variables in another database and you would like to resolve those references to the actual values. - -The Optimize plugin system contains the following interface: - -```java -public interface VariableImportAdapter { - - List adaptVariables(List variables); -} -``` - -Implement this to adjust the variables to be imported. Given is a list of variables that would be imported if no further action is performed. The returned list is the customized list with the enriched/filtered variables that will be imported. To create new variable instances, you can use the `PluginVariableDto` class as data transfer object (DTO), which is also contained in the plugin system. - -:::note -All DTO class members need to be set in order, otherwise the variable is ignored, as this may lead to problems during data analysis. - -The data from the engine is imported in batches. This means the `adaptVariables` method is called once per batch rather than once for all data. For instance, if you have 100,000 variables in total and the batch size is 10,000, the plugin function will be called 10 times. -::: - -The following shows an example of a customization of the variable import in the package `optimize.plugin`, where every string variable is assigned the value 'foo': - -```java -package org.mycompany.optimize.plugin; - -import org.camunda.optimize.plugin.importing.variable.PluginVariableDto; -import org.camunda.optimize.plugin.importing.variable.VariableImportAdapter; - -import java.util.List; - - public class MyCustomVariableImportAdapter implements VariableImportAdapter { - - @Override - public List adaptVariables(List list) { - for (PluginVariableDto pluginVariableDto : list) { - if(pluginVariableDto.getType().toLowerCase().equals("string")) { - pluginVariableDto.setValue("foo"); - } - } - return list; - } - -} -``` - -Now when `MyCustomVariableImportAdapter`, packaged as a `jar` file, is added to Optimize's `plugin` folder, we just have to add the following property to the `environment-config.yaml` file to make the plugin work: - -```yaml -plugin: - variableImport: - # Look in the given base package list for variable import adaption plugins. - # If empty, the import is not influenced. - basePackages: ["org.mycompany.optimize.plugin"] -``` - -For more information and example implementations, have a look at the [Optimize Examples Repository](https://github.com/camunda/camunda-optimize-examples#getting-started-with-variable-import-plugins). diff --git a/optimize/self-managed/optimize-deployment/reimport.md b/optimize/self-managed/optimize-deployment/reimport.md deleted file mode 100644 index 5b1007df00e..00000000000 --- a/optimize/self-managed/optimize-deployment/reimport.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: reimport -title: "Camunda engine data reimport" -description: "Find out how to reimport Camunda engine data without losing your reports and dashboards." ---- - -Camunda 7 only - -There are cases where you might want to remove all Camunda 7 engine data from Optimize which has been imported from connected Camunda engines but don't want to lose Optimize entities such as collections, reports, or dashboards you created. - -:::note Warning! -Triggering a reimport causes the current data imported from the engine to be deleted and a new import cycle to be started. That also means that data which has already been removed from the engine (e.g. using the [history cleanup feature](https://docs.camunda.org/manual/latest/user-guide/process-engine/history/#history-cleanup)) is irreversibly lost. - -When triggering a reimport, all existing event-based processes get unpublished and reset to the `mapped` state. This is due to the fact that event-based processes may include Camunda engine data, yet the reimport does not take into account which sources event-based processes are actually based on and as such clears the data for all of them. - -You then have to manually publish event-based processes after you have restarted Optimize. -::: - -:::note -Engine data reimport is only available when using Optimize with ElasticSearch as a database. -::: -To reimport engine data, perform the following -steps: - -1. Stop Optimize, but keep Elasticsearch running (hint: to only start Elasticsearch without Optimize, you can use `elasticsearch-startup.sh` or `elasticsearch-startup.bat` scripts). -2. From the Optimize installation root run `./reimport/reimport.sh` on Linux or `reimport/reimport.bat` on Windows and wait for it to finish - - - In Docker environments, you can override the command the container executes on start to call the reimport script, e.g. in [docker-compose](https://docs.docker.com/compose/) this could look like the following: - - ``` - version: '2.4' - - services: - optimize: - image: registry.camunda.cloud/optimize-ee/optimize:latest - command: ["./reimport/reimport.sh"] - ``` - -3. Start Optimize again. Optimize will now import all the engine data from scratch. -4. If you made use of event-based processes you will have to manually publish them again. diff --git a/optimize/self-managed/optimize-deployment/version-policy.md b/optimize/self-managed/optimize-deployment/version-policy.md index 584c8e9325e..c4fed17fcad 100644 --- a/optimize/self-managed/optimize-deployment/version-policy.md +++ b/optimize/self-managed/optimize-deployment/version-policy.md @@ -4,6 +4,8 @@ title: "Version policy" description: "Learn about the versioning policy for Camunda Optimize." --- +<-- Does this need to be separate from the [C8 release policy](https://docs.camunda.io/docs/reference/release-policy/)? --> + Camunda Optimize versions are denoted as X.Y.Z as well as by an optional [pre-release](https://semver.org/spec/v2.0.0.html#spec-item-9) version being either '-alpha-[0-9]' or '-preview-[0-9]'. X is the [major version](https://semver.org/spec/v2.0.0.html#spec-item-4), Y is the [minor version](https://semver.org/spec/v2.0.0.html#spec-item-7), Z is the [patch version](https://semver.org/spec/v2.0.0.html#spec-item-6) as defined by the [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html) specification. ## Release cadence diff --git a/optimize_sidebars.js b/optimize_sidebars.js index da4c8161e46..dca8f72980a 100644 --- a/optimize_sidebars.js +++ b/optimize_sidebars.js @@ -376,10 +376,6 @@ module.exports = { "Defining templates", "components/modeler/desktop-modeler/element-templates/defining-templates/" ), - docsLink( - "Defining templates in Camunda 7", - "components/modeler/desktop-modeler/element-templates/c7-defining-templates/" - ), docsLink( "Additional resources", "components/modeler/desktop-modeler/element-templates/additional-resources/" @@ -1418,51 +1414,6 @@ module.exports = { ), ], }, - - { - "Camunda 7 specific": [ - docsLink( - "Deciding about your Camunda 7 stack", - "components/best-practices/architecture/deciding-about-your-stack-c7/" - ), - docsLink( - "Sizing your Camunda 7 environment", - "components/best-practices/architecture/sizing-your-environment-c7/" - ), - docsLink( - "Invoking services from a Camunda 7 process", - "components/best-practices/development/invoking-services-from-the-process-c7/" - ), - docsLink( - "Understanding Camunda 7 transaction handling", - "components/best-practices/development/understanding-transaction-handling-c7/" - ), - docsLink( - "Testing process definitions in Camunda 7", - "components/best-practices/development/testing-process-definitions-c7/" - ), - docsLink( - "Routing events to processes in Camunda 7", - "components/best-practices/development/routing-events-to-processes-c7/" - ), - docsLink( - "Operating Camunda 7", - "components/best-practices/operations/operating-camunda-c7/" - ), - docsLink( - "Performance tuning Camunda 7", - "components/best-practices/operations/performance-tuning-camunda-c7/" - ), - docsLink( - "Securing Camunda 7", - "components/best-practices/operations/securing-camunda-c7/" - ), - docsLink( - "Extending human task management in Camunda 7", - "components/best-practices/architecture/extending-human-task-management-c7/" - ), - ], - }, ], }, ], @@ -1832,10 +1783,6 @@ module.exports = { { DecisionDefinition: [ - docsLink( - "Search decision definitions", - "apis-tools/operate-api/specifications/search-7/" - ), docsLink( "Get decision definition by key", "apis-tools/operate-api/specifications/by-key-6/" @@ -3027,7 +2974,6 @@ module.exports = { "System configuration": [ "self-managed/optimize-deployment/configuration/system-configuration", "self-managed/optimize-deployment/configuration/system-configuration-platform-8", - "self-managed/optimize-deployment/configuration/system-configuration-platform-7", "self-managed/optimize-deployment/configuration/event-based-process-configuration", ], }, @@ -3048,19 +2994,6 @@ module.exports = { "self-managed/optimize-deployment/configuration/common-problems", ], }, - - { - Plugins: [ - "self-managed/optimize-deployment/plugins/plugin-system", - "self-managed/optimize-deployment/plugins/businesskey-import-plugin", - "self-managed/optimize-deployment/plugins/decision-import-plugin", - "self-managed/optimize-deployment/plugins/elasticsearch-header", - "self-managed/optimize-deployment/plugins/engine-rest-filter-plugin", - "self-managed/optimize-deployment/plugins/single-sign-on", - "self-managed/optimize-deployment/plugins/variable-import-plugin", - ], - }, - "self-managed/optimize-deployment/reimport", { "Migration & update": [ { @@ -3075,31 +3008,6 @@ module.exports = { "self-managed/optimize-deployment/migration-update/camunda-8/3.8-to-3.9-preview-1", "self-managed/optimize-deployment/migration-update/camunda-8/3.7-to-3.8", ], - "Camunda 7": [ - "self-managed/optimize-deployment/migration-update/camunda-7/instructions", - "self-managed/optimize-deployment/migration-update/camunda-7/3.13-to-3.14", - "self-managed/optimize-deployment/migration-update/camunda-7/3.12-to-3.13", - "self-managed/optimize-deployment/migration-update/camunda-7/3.11-to-3.12", - "self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11", - "self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10", - "self-managed/optimize-deployment/migration-update/camunda-7/3.9-preview-1-to-3.9", - "self-managed/optimize-deployment/migration-update/camunda-7/3.8-to-3.9-preview-1", - "self-managed/optimize-deployment/migration-update/camunda-7/3.7-to-3.8", - "self-managed/optimize-deployment/migration-update/camunda-7/3.6-to-3.7", - "self-managed/optimize-deployment/migration-update/camunda-7/3.5-to-3.6", - "self-managed/optimize-deployment/migration-update/camunda-7/3.4-to-3.5", - "self-managed/optimize-deployment/migration-update/camunda-7/3.3-to-3.4", - "self-managed/optimize-deployment/migration-update/camunda-7/3.2-to-3.3", - "self-managed/optimize-deployment/migration-update/camunda-7/3.1-to-3.2", - "self-managed/optimize-deployment/migration-update/camunda-7/3.0-to-3.1", - "self-managed/optimize-deployment/migration-update/camunda-7/2.7-to-3.0", - "self-managed/optimize-deployment/migration-update/camunda-7/2.6-to-2.7", - "self-managed/optimize-deployment/migration-update/camunda-7/2.5-to-2.6", - "self-managed/optimize-deployment/migration-update/camunda-7/2.4-to-2.5", - "self-managed/optimize-deployment/migration-update/camunda-7/2.3-to-2.4", - "self-managed/optimize-deployment/migration-update/camunda-7/2.2-to-2.3", - "self-managed/optimize-deployment/migration-update/camunda-7/2.1-to-2.2", - ], }, ], }, From bf0cfb27215c4d684d7b076ee73b763c1b29f969 Mon Sep 17 00:00:00 2001 From: Amara Date: Tue, 17 Dec 2024 13:08:20 -0600 Subject: [PATCH 2/9] remove sidebar entries --- sidebars.js | 61 ----------------------------------------------------- 1 file changed, 61 deletions(-) diff --git a/sidebars.js b/sidebars.js index a0a051088da..b8978dba121 100644 --- a/sidebars.js +++ b/sidebars.js @@ -471,10 +471,6 @@ module.exports = { "Creating reports", "components/userguide/creating-reports/" ), - optimizeLink( - "Combined process reports", - "components/userguide/combined-process-reports/" - ), optimizeLink("Process KPIs", "components/userguide/process-KPIs/"), { @@ -573,33 +569,12 @@ module.exports = { ], }, - { - "Decision analysis": [ - optimizeLink( - "Overview", - "components/userguide/decision-analysis/decision-analysis-overview/" - ), - optimizeLink( - "Single report", - "components/userguide/decision-analysis/decision-report/" - ), - optimizeLink( - "Filters", - "components/userguide/decision-analysis/decision-filter/" - ), - ], - }, - { "Additional features": [ optimizeLink( "Alerts", "components/userguide/additional-features/alerts/" ), - optimizeLink( - "Event-based processes", - "components/userguide/additional-features/event-based-processes/" - ), optimizeLink( "Export and import", "components/userguide/additional-features/export-import/" @@ -1218,14 +1193,6 @@ module.exports = { "Camunda 8 system configuration", "self-managed/optimize-deployment/configuration/system-configuration-platform-8/" ), - optimizeLink( - "Camunda 7 system configuration", - "self-managed/optimize-deployment/configuration/system-configuration-platform-7/" - ), - optimizeLink( - "Event-based process system configuration", - "self-managed/optimize-deployment/configuration/event-based-process-configuration/" - ), ], }, @@ -1233,10 +1200,6 @@ module.exports = { "Logging", "self-managed/optimize-deployment/configuration/logging/" ), - optimizeLink( - "Optimize license key", - "self-managed/optimize-deployment/configuration/optimize-license/" - ), optimizeLink( "Security instructions", "self-managed/optimize-deployment/configuration/security-instructions/" @@ -1261,30 +1224,10 @@ module.exports = { "Clustering", "self-managed/optimize-deployment/configuration/clustering/" ), - optimizeLink( - "Webhooks", - "self-managed/optimize-deployment/configuration/webhooks/" - ), - optimizeLink( - "Authorization management", - "self-managed/optimize-deployment/configuration/authorization-management/" - ), - optimizeLink( - "User access management", - "self-managed/optimize-deployment/configuration/user-management/" - ), optimizeLink( "Multi-tenancy", "self-managed/optimize-deployment/configuration/multi-tenancy/" ), - optimizeLink( - "Multiple process engines", - "self-managed/optimize-deployment/configuration/multiple-engines/" - ), - optimizeLink( - "Event-based processes", - "self-managed/optimize-deployment/configuration/setup-event-based-processes/" - ), optimizeLink( "Common problems", "self-managed/optimize-deployment/configuration/common-problems/" @@ -1479,10 +1422,6 @@ module.exports = { "Engine data deletion", "self-managed/optimize-deployment/advanced-features/engine-data-deletion/" ), - optimizeLink( - "Data import", - "self-managed/optimize-deployment/advanced-features/import-guide/" - ), ], }, ], From e297f8fbd64874837c83cf68a2450ab11c197611 Mon Sep 17 00:00:00 2001 From: Amara Date: Tue, 17 Dec 2024 13:28:57 -0600 Subject: [PATCH 3/9] remaining sidebar changes and cross instance links --- optimize_sidebars.js | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/optimize_sidebars.js b/optimize_sidebars.js index dca8f72980a..5f5751c4f06 100644 --- a/optimize_sidebars.js +++ b/optimize_sidebars.js @@ -1230,7 +1230,6 @@ module.exports = { ], }, "components/userguide/creating-reports", - "components/userguide/combined-process-reports", "components/userguide/process-KPIs", { @@ -1271,18 +1270,9 @@ module.exports = { ], }, - { - "Decision analysis": [ - "components/userguide/decision-analysis/decision-analysis-overview", - "components/userguide/decision-analysis/decision-report", - "components/userguide/decision-analysis/decision-filter", - ], - }, - { "Additional features": [ "components/userguide/additional-features/alerts", - "components/userguide/additional-features/event-based-processes", "components/userguide/additional-features/export-import", "components/userguide/additional-features/footer", "components/userguide/additional-features/variable-labeling", @@ -2974,23 +2964,16 @@ module.exports = { "System configuration": [ "self-managed/optimize-deployment/configuration/system-configuration", "self-managed/optimize-deployment/configuration/system-configuration-platform-8", - "self-managed/optimize-deployment/configuration/event-based-process-configuration", ], }, "self-managed/optimize-deployment/configuration/logging", - "self-managed/optimize-deployment/configuration/optimize-license", "self-managed/optimize-deployment/configuration/security-instructions", "self-managed/optimize-deployment/configuration/shared-elasticsearch-cluster", "self-managed/optimize-deployment/configuration/history-cleanup", "self-managed/optimize-deployment/configuration/localization", "self-managed/optimize-deployment/configuration/object-variables", "self-managed/optimize-deployment/configuration/clustering", - "self-managed/optimize-deployment/configuration/webhooks", - "self-managed/optimize-deployment/configuration/authorization-management", - "self-managed/optimize-deployment/configuration/user-management", "self-managed/optimize-deployment/configuration/multi-tenancy", - "self-managed/optimize-deployment/configuration/multiple-engines", - "self-managed/optimize-deployment/configuration/setup-event-based-processes", "self-managed/optimize-deployment/configuration/common-problems", ], }, @@ -3015,7 +2998,6 @@ module.exports = { { "Advanced features": [ "self-managed/optimize-deployment/advanced-features/engine-data-deletion", - "self-managed/optimize-deployment/advanced-features/import-guide", ], }, ], From c58e93bc77047821da7b6e2edcf8952b7210336c Mon Sep 17 00:00:00 2001 From: Amara Date: Tue, 17 Dec 2024 13:30:44 -0600 Subject: [PATCH 4/9] remove authentication and authorization sections --- .../configuration/security-instructions.md | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/optimize/self-managed/optimize-deployment/configuration/security-instructions.md b/optimize/self-managed/optimize-deployment/configuration/security-instructions.md index 8880e3ac829..932d5d6ac47 100644 --- a/optimize/self-managed/optimize-deployment/configuration/security-instructions.md +++ b/optimize/self-managed/optimize-deployment/configuration/security-instructions.md @@ -32,18 +32,6 @@ Over time, various client-side security mechanisms have been developed to protec Optimize adds several of these headers which can be fine-tuned in the [configuration](./system-configuration.md#security) to ensure appropriate security. -## Authentication - -Camunda 7 only - -Authentication controls who can access Optimize. Read all about how to restrict the application access in the [user access management guide](./user-management.md). - -## Authorization - -Camunda 7 only - -Authorization controls what data a user can access and change in Optimize once authenticated. Authentication is a prerequisite to authorization. Read all about how to restrict the data access in the [authorization management guide](./authorization-management.md). - From f25f1b3fd3d713c4532c7928660cd602e19b0089 Mon Sep 17 00:00:00 2001 From: Amara Date: Tue, 17 Dec 2024 13:51:26 -0600 Subject: [PATCH 5/9] adjust all links for build --- .../optimize-api/event-ingestion.md | 192 ------------------ .../configuration/clustering.md | 10 +- .../configuration/common-problems.md | 7 +- .../configuration/getting-started.md | 6 - .../configuration/history-cleanup.md | 4 +- .../configuration/object-variables.md | 4 +- .../configuration/system-configuration.md | 4 +- optimize_sidebars.js | 1 - .../optimize-api/event-ingestion.md | 40 ++-- .../event-based-processes.md | 6 +- .../configuration/authorization-management.md | 4 +- .../configuration/clustering.md | 4 +- .../configuration/common-problems.md | 2 +- .../configuration/event-based-processes.md | 2 +- .../configuration/history-cleanup.md | 2 +- .../configuration/multiple-engines.md | 2 +- .../configuration/security-instructions.md | 2 +- .../setup-event-based-processes.md | 6 +- .../configuration/system-configuration.md | 4 +- .../configuration/user-management.md | 2 +- .../optimize-deployment/install-and-start.md | 2 +- .../optimize-api/event-ingestion.md | 40 ++-- .../event-based-processes.md | 6 +- .../configuration/authorization-management.md | 4 +- .../configuration/clustering.md | 4 +- .../configuration/common-problems.md | 2 +- .../configuration/event-based-processes.md | 2 +- .../configuration/history-cleanup.md | 2 +- .../configuration/multiple-engines.md | 2 +- .../configuration/security-instructions.md | 2 +- .../setup-event-based-processes.md | 6 +- .../configuration/system-configuration.md | 4 +- .../configuration/user-management.md | 2 +- .../optimize-deployment/install-and-start.md | 2 +- .../optimize-api/event-ingestion.md | 40 ++-- .../event-based-processes.md | 6 +- .../configuration/authorization-management.md | 4 +- .../configuration/clustering.md | 4 +- .../configuration/common-problems.md | 2 +- .../configuration/event-based-processes.md | 2 +- .../configuration/history-cleanup.md | 2 +- .../configuration/multiple-engines.md | 2 +- .../configuration/security-instructions.md | 2 +- .../setup-event-based-processes.md | 6 +- .../configuration/system-configuration.md | 4 +- .../configuration/user-management.md | 2 +- .../optimize-deployment/install-and-start.md | 2 +- .../optimize-api/event-ingestion.md | 40 ++-- .../event-based-processes.md | 6 +- .../configuration/authorization-management.md | 4 +- .../configuration/clustering.md | 4 +- .../configuration/common-problems.md | 2 +- .../configuration/event-based-processes.md | 2 +- .../configuration/history-cleanup.md | 2 +- .../configuration/multiple-engines.md | 2 +- .../configuration/security-instructions.md | 2 +- .../setup-event-based-processes.md | 6 +- .../configuration/system-configuration.md | 4 +- .../configuration/user-management.md | 2 +- .../optimize-deployment/install-and-start.md | 2 +- 60 files changed, 175 insertions(+), 365 deletions(-) delete mode 100644 optimize/apis-tools/optimize-api/event-ingestion.md diff --git a/optimize/apis-tools/optimize-api/event-ingestion.md b/optimize/apis-tools/optimize-api/event-ingestion.md deleted file mode 100644 index a5a356dd4b7..00000000000 --- a/optimize/apis-tools/optimize-api/event-ingestion.md +++ /dev/null @@ -1,192 +0,0 @@ ---- -id: event-ingestion -title: "Event ingestion" -description: "The REST API to ingest external events into Optimize." ---- - -Camunda 7 only - -The Event Ingestion REST API ingests business process related event data from any third-party system to Camunda Optimize. These events can then be correlated into an [event-based process](components/userguide/additional-features/event-based-processes.md) in Optimize to get business insights into business processes that are not yet fully modeled nor automated using Camunda 7. - -## Functionality - -The Event Ingestion REST API has the following functionality: - -1. Ingest new event data in batches, see the example on [ingesting three cloud events](#ingest-cloud-events). -2. Reingest/override previously ingested events, see the example on [reingesting cloud events](#reingest-cloud-events). - -## CloudEvents compliance - -To provide the best interoperability possible, the Optimize Event Ingestion REST API implements the [CloudEvents Version 1.0](https://github.com/cloudevents/spec/blob/v1.0/spec.md) specification, which is hosted by the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/). - -In particular, the Optimize Event Ingestion REST API is a CloudEvents consumer implemented as an HTTP Web Hook, as defined by the [CloudEvents HTTP 1.1 Web Hooks for Event Delivery - Version 1.0](https://github.com/cloudevents/spec/blob/v1.0/http-webhook.md) specification. Following the [Structured Content Mode](https://github.com/cloudevents/spec/blob/v1.0/http-protocol-binding.md#32-structured-content-mode) of the [HTTP Protocol Binding for CloudEvents - Version 1.0](https://github.com/cloudevents/spec/blob/v1.0/http-protocol-binding.md), event context attributes and event data is encoded in the [JSON Batch Format](https://github.com/cloudevents/spec/blob/v1.0/json-format.md#4-json-batch-format) of the [CloudEvents JSON Event Format Version 1.0](https://github.com/cloudevents/spec/blob/v1.0/json-format.md). - -## Authentication - -As required by the [CloudEvents HTTP 1.1 Web Hooks for Event Delivery - Version 1.0](https://github.com/cloudevents/spec/blob/v1.0/http-webhook.md#3-authorization) specification, every [Event Ingestion REST API Request](#method-and-http-target-resource) needs to include an authentication token as an [`Authorization`](https://tools.ietf.org/html/rfc7235#section-4.2) request header. - -Details on how to configure and pass this token can be found [here](./optimize-api-authentication.md). - -## Method and HTTP target resource - -POST `/api/ingestion/event/batch` - -## Request headers - -The following request headers have to be provided with every ingest request: - -| Header | Constraints | Value | -| -------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| Authentication | REQUIRED | See [authentication](./optimize-api-authentication.md) | -| Content-Length | REQUIRED | Size in bytes of the entity-body, also see [Content-Length](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Length). | -| Content-Type | REQUIRED | Must be one of: `application/cloudevents-batch+json` or `application/json` | - -## Request body - -[JSON Batch Format](https://github.com/cloudevents/spec/blob/v1.0/json-format.md#4-json-batch-format) compliant JSON Array of CloudEvent JSON Objects: - -| Name | Type | Constraints | Description | -| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion) | String | REQUIRED | The version of the CloudEvents specification, which the event uses, must be `1.0`. See [CloudEvents - Version 1.0 - specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion). | -| [ID](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id) | String | REQUIRED | Uniquely identifies an event, see [CloudEvents - Version 1.0 - ID](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id). | -| [source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1) | String | REQUIRED | Identifies the context in which an event happened, see [CloudEvents - Version 1.0 - source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1). A use-case could be if you have conflicting types across different sources. For example, a `type:OrderProcessed` originating from both `order-service` and `shipping-service`. In this case, the `source` field provides means to clearly separate between the origins of a particular event. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | -| [type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | String | REQUIRED | This attribute contains a value describing the type of event related to the originating occurrence, see [CloudEvents - Version 1.0 - type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type). Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. The value `camunda` cannot be used for this field. | -| [time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | [Timestamp](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type-system) | OPTIONAL | Timestamp of when the occurrence happened, see [CloudEvents - Version 1.0 - time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#time). String encoding: [RFC 3339](https://tools.ietf.org/html/rfc3339). If not present, a default value of the time the event was received will be created. | -| [data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data) | Object | OPTIONAL | Event payload data that is part of the event, see [CloudEvents - Version 1.0 - Event Data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data). This CloudEvents Consumer API only accepts data encoded as `application/json`, the optional attribute [CloudEvents - Version 1.0 - datacontenttype](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is thus not required to be provided by the producer. Furthermore, there are no schema restrictions on the `data` attribute and thus the attribute [CloudEvents - Version 1.0 - dataschema](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is also not required to be provided. Producer may provide any valid JSON object, but only simple properties of that object will get converted to variables of a process instances of an [event-based process](self-managed/optimize-deployment/configuration/setup-event-based-processes.md) instance later on. | -| group | String | OPTIONAL | This is an OPTIONAL [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A group identifier that may allow to easier identify a group of related events for a user at the stage of mapping events to a process model. An example could be a domain of events that are most likely related to each other; for example, `billing`. When this field is provided, it will be used to allow adding events that belong to a group to the [mapping table](components/userguide/additional-features/event-based-processes.md#external-events). Optimize handles groups case-sensitively. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | -| traceid | String | REQUIRED | This is a REQUIRED [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A traceid is a correlation key that relates multiple events to a single business transaction or process instance in BPMN terms. Events with the same traceid will get correlated into one process instance of an Event Based Process. | - -The following is an example of a valid propertie's `data` value. Each of those properties would be available as a variable in any [event-based process](self-managed/optimize-deployment/configuration/setup-event-based-processes.md) where an event containing this as `data` was mapped: - -``` - { - "reviewSuccessful": true, - "amount": 10.5, - "customerId": "lovelyCustomer1" - } -``` - -Nested objects, such as `customer` in this example, would not be available as a variable in event-based processes where an event containing this as `data` value was mapped: - -``` - { - "customer": { - "firstName":"John", - "lasTName":"Doe" - } - } -``` - -## Result - -This method returns no content. - -## Response codes - -Possible HTTP response status codes: - -| Code | Description | -| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 204 | Request successful | -| 400 | Returned if some of the properties in the request body are invalid or missing. | -| 401 | Secret incorrect or missing in HTTP Header `Authorization`. See [Authorization](#authorization) on how to authenticate. | -| 403 | The Event Based Process feature is not enabled. | -| 429 | The maximum number of requests that can be serviced at any time has been reached. The response will include a `Retry-After` HTTP header specifying the recommended number of seconds before the request should be retried. See [Configuration](self-managed/optimize-deployment/configuration/event-based-processes.md#event-ingestion-rest-api-configuration) for information on how to configure this limit. | -| 500 | Some error occurred while processing the ingested event, best check the Optimize log. | - -## Example - -### Ingest cloud events - -#### Request - -POST `/api/ingestion/event/batch` - -##### Request header - -`Authorization: Bearer mySecret` - -##### Request body - - [ - { - "specversion": "1.0", - "id": "1edc4160-74e5-4ffc-af59-2d281cf5aca341", - "source": "order-service", - "type": "orderCreated", - "time": "2020-01-01T10:00:00.000Z", - "traceid": "id1", - "group": "shop", - "data": { - "numberField": 1, - "stringField": "example" - } - }, - { - "specversion": "1.0", - "id": "1edc4160-74e5-4ffc-af59-2d281cf5aca342", - "source": "order-service", - "type": "orderValidated", - "time": "2020-01-01T10:00:10.000Z", - "traceid": "id1", - "group": "shop", - "data": { - "numberField": 1, - "stringField": "example" - } - }, - { - "specversion": "1.0", - "id": "1edc4160-74e5-4ffc-af59-2d281cf5aca343", - "source": "shipping-service", - "type": "packageShipped", - "traceid": "id1", - "group": "shop", - "time": "2020-01-01T10:00:20.000Z" - } - ] - -#### Response - -Status 204. - -### Reingest cloud events - -The API allows you to update any previously ingested cloud event by ingesting an event using the same event `id`. - -The following request would update the first cloud event that got ingested in the [ingest three cloud events sample](#ingest-cloud-events). Note that on an update, the cloud event needs to be provided as a whole; it's not possible to perform partial updates through this API. - -In this example, an additional field `newField` is added to the data block of the cloud event with the ID `1edc4160-74e5-4ffc-af59-2d281cf5aca341`. - -#### Request - -POST `/api/ingestion/event/batch` - -##### Request header - -`Authorization: Bearer mySecret` - -##### Request Body: - -``` - [ - { - "specversion": "1.0", - "id": "1edc4160-74e5-4ffc-af59-2d281cf5aca341", - "source": "order-service", - "type": "orderCreated", - "time": "2020-01-01T10:00:00.000Z", - "traceid": "id1", - "group": "shop", - "data": { - "numberField": 1, - "stringField": "example", - "newField": "allNew" - } - } - ] -``` - -#### Response - -Status 204. diff --git a/optimize/self-managed/optimize-deployment/configuration/clustering.md b/optimize/self-managed/optimize-deployment/configuration/clustering.md index 752e83f08fc..f6796361dd1 100644 --- a/optimize/self-managed/optimize-deployment/configuration/clustering.md +++ b/optimize/self-managed/optimize-deployment/configuration/clustering.md @@ -13,6 +13,8 @@ Both of these aspects are explained in detail in the following subsections. ### 1. Import - define importing instance + + Camunda 7 only It is important to configure the cluster in the sense that only one instance at a time is actively importing from a particular Camunda 7 engine. @@ -21,7 +23,7 @@ It is important to configure the cluster in the sense that only one instance at If more than one instance is importing data from one and the same Camunda 7 engine concurrently, inconsistencies can occur. ::: -The configuration property [`engines.${engineAlias}.importEnabled`](./system-configuration-platform-7.md) allows to disable the import from a particular configured engine. +The configuration property [`engines.${engineAlias}.importEnabled`](#) allows to disable the import from a particular configured engine. Given a simple failover cluster consisting of two instances connected to one engine, the engine configurations in the `environment-config.yaml` would look like the following: @@ -61,13 +63,15 @@ The importing instance has the [history cleanup enabled](./system-configuration. ### 1.1 Import - event-based process import + + Camunda 7 only In the context of event-based process import and clustering, there are two additional configuration properties to consider carefully. -One is specific to each configured Camunda engine [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) and controls whether data from this engine is imported as event source data as well for [event-based processes](components/userguide/additional-features/event-based-processes.md). You need to enable this on the same cluster node for which the [`engines.${engineAlias}.importEnabled`](./system-configuration-platform-7.md) configuration flag is set to `true`. +One is specific to each configured Camunda engine [`engines.${engineAlias}.eventImportEnabled`](#) and controls whether data from this engine is imported as event source data as well for [event-based processes](#). You need to enable this on the same cluster node for which the [`engines.${engineAlias}.importEnabled`](#) configuration flag is set to `true`. -[`eventBasedProcess.eventImport.enabled`](./setup-event-based-processes.md) controls whether the particular cluster node processes events to create event based process instances. This allows you to run a dedicated node that performs this operation, while other nodes might just feed in Camunda activity events. +[`eventBasedProcess.eventImport.enabled`](#) controls whether the particular cluster node processes events to create event based process instances. This allows you to run a dedicated node that performs this operation, while other nodes might just feed in Camunda activity events. ### 2. Distributed user sessions - configure shared secret token diff --git a/optimize/self-managed/optimize-deployment/configuration/common-problems.md b/optimize/self-managed/optimize-deployment/configuration/common-problems.md index dbda43dfbfa..a30a775af04 100644 --- a/optimize/self-managed/optimize-deployment/configuration/common-problems.md +++ b/optimize/self-managed/optimize-deployment/configuration/common-problems.md @@ -8,7 +8,7 @@ This section aims to provide initial help to troubleshoot common issues. This gu ## Optimize is missing some or all definitions -It is possible that the user you are logged in as does not have the relevant authorizations to view all definitions in Optimize. Refer to the [authorization management section](./authorization-management.md#process-or-decision-definition-related-authorizations) to confirm the user has all required authorizations. +It is possible that the user you are logged in as does not have the relevant authorizations to view all definitions in Optimize. Refer to the [authorization management section](##process-or-decision-definition-related-authorizations) to confirm the user has all required authorizations. Another common cause for this type of problem are issues with Optimize's data import, for example due to underlying problems with the engine data. In this case, the Optimize logs should contain more information on what is causing Optimize to not import the definition data correctly. If you are unsure on how to interpret what you find in the logs, create a support ticket. @@ -24,7 +24,9 @@ This often occurs when Elasticsearch is running out of disk space. If this is th ## Exception indicating an error while checking the engine version -The most common cause for this issue is that the engine endpoint Optimize uses is not configured correctly. Check your [configuration](./system-configuration-platform-7.md) and ensure the engine REST URL is set correctly. + + +The most common cause for this issue is that the engine endpoint Optimize uses is not configured correctly. Check your [configuration](#) and ensure the engine REST URL is set correctly. ## Server language results in UI/server errors @@ -34,7 +36,6 @@ When Optimize is running with its language set to one with characters that it ca Always check the migration and update instructions for the version you are migrating from: -- For Camunda 7, refer to the [Camunda 7 migration guide](./../migration-update/camunda-8/instructions.md). - For Camunda 8, refer to the [Camunda 8 migration guide](./../migration-update/camunda-8/instructions.md). These guides often document known issues along with their solutions, which might already address the problem you're encountering. diff --git a/optimize/self-managed/optimize-deployment/configuration/getting-started.md b/optimize/self-managed/optimize-deployment/configuration/getting-started.md index e013f0f040b..d0114b3a6c2 100644 --- a/optimize/self-managed/optimize-deployment/configuration/getting-started.md +++ b/optimize/self-managed/optimize-deployment/configuration/getting-started.md @@ -16,12 +16,6 @@ Refer to the [configuration section on container settings](./system-configuratio You can customize the [Elasticsearch/OpenSearch connection settings](./system-configuration.md#connection-settings) as well as the [index settings](./system-configuration.md#index-settings). -## Camunda 7 configuration - -Camunda 7 only - -To perform an import and provide the full set of features, Optimize requires a connection to the REST API of the Camunda engine. For details on how to configure the connection to the Camunda 7, refer to the [Camunda 7 configuration section](./system-configuration-platform-7.md). - ## Camunda 8 specific configuration For Camunda 8, Optimize is importing process data from exported zeebe records as created by the [Zeebe Elasticsearch Exporter](https://github.com/camunda/camunda/tree/main/zeebe/exporters/elasticsearch-exporter) (or [Zeebe OpenSearch Exporter](https://github.com/camunda/camunda/tree/main/zeebe/exporters/opensearch-exporter)) from the same cluster that Optimize used to store its own data. For the relevant configuration options, refer to the [Camunda 8 import configuration](./system-configuration-platform-8.md). diff --git a/optimize/self-managed/optimize-deployment/configuration/history-cleanup.md b/optimize/self-managed/optimize-deployment/configuration/history-cleanup.md index edab85d8c5a..d6e95a96d2b 100644 --- a/optimize/self-managed/optimize-deployment/configuration/history-cleanup.md +++ b/optimize/self-managed/optimize-deployment/configuration/history-cleanup.md @@ -106,8 +106,10 @@ historyCleanup: enabled: true ``` + + :::note -The ingested event cleanup does not cascade down to potentially existing [event-based processes](components/userguide/additional-features/event-based-processes.md) that may contain data originating from ingested events. To make sure data of ingested events is also removed from event-based processes, you need to enable the [Process Data Cleanup](#process-data-cleanup) as well. +The ingested event cleanup does not cascade down to potentially existing [event-based processes](#) that may contain data originating from ingested events. To make sure data of ingested events is also removed from event-based processes, you need to enable the [Process Data Cleanup](#process-data-cleanup) as well. ::: diff --git a/optimize/self-managed/optimize-deployment/configuration/object-variables.md b/optimize/self-managed/optimize-deployment/configuration/object-variables.md index 2819e377311..76268d1d51f 100644 --- a/optimize/self-managed/optimize-deployment/configuration/object-variables.md +++ b/optimize/self-managed/optimize-deployment/configuration/object-variables.md @@ -33,7 +33,9 @@ Any configured [variable plugins](../../plugins/variable-import-plugin) are appl ## Optimize configuration -The import of object variable values is enabled by default and can be disabled using the `import.data.variable.includeObjectVariableValue` [configuration](./system-configuration-platform-7.md). + + +The import of object variable values is enabled by default and can be disabled using the `import.data.variable.includeObjectVariableValue` [configuration](#). ## Other system configurations diff --git a/optimize/self-managed/optimize-deployment/configuration/system-configuration.md b/optimize/self-managed/optimize-deployment/configuration/system-configuration.md index 97342e02234..d6736787bab 100644 --- a/optimize/self-managed/optimize-deployment/configuration/system-configuration.md +++ b/optimize/self-managed/optimize-deployment/configuration/system-configuration.md @@ -88,8 +88,8 @@ These values control mechanisms of Optimize related security, e.g. security head | | | security.auth.token.lifeMin | 60 | Optimize uses token-based authentication to keep track of which users are logged in. Define the lifetime of the token in minutes. | | security.auth.token.secret | null | Optional secret used to sign authentication tokens, it's recommended to use at least a 64-character secret. If set to `null` a random secret will be generated with each startup of Optimize. | -| security.auth.superUserIds | [ ] | List of user IDs that are granted full permission to all collections, reports, and dashboards.

Note: For reports, these users are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](./authorization-management.md). | -| security.auth.superGroupIds | [ ] | List of group IDs that are granted full permission to all collections, reports, and dashboards. All members of the groups specified will have superuser permissions in Optimize.

Note: For reports, these groups are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](./authorization-management.md). | +| security.auth.superUserIds | [ ] | List of user IDs that are granted full permission to all collections, reports, and dashboards.

Note: For reports, these users are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](#). | +| security.auth.superGroupIds | [ ] | List of group IDs that are granted full permission to all collections, reports, and dashboards. All members of the groups specified will have superuser permissions in Optimize.

Note: For reports, these groups are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](#). | | security.responseHeaders.HSTS.max-age | 63072000 | HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. This field defines the time, in seconds, that the browser should remember that this site is only to be accessed using HTTPS. If you set the number to a negative value no HSTS header is sent. | | security.responseHeaders.HSTS.includeSubDomains | true | HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. If this optional parameter is specified, this rule applies to all the site’s subdomains as well. | | security.responseHeaders.X-XSS-Protection | 1; mode=block | This header enables the cross-site scripting (XSS) filter in your browser. Can have one of the following options:

  • `0`: Filter disabled.
  • `1`: Filter enabled. If a cross-site scripting attack is detected, in order to stop the attack, the browser will sanitize the page.
  • `1; mode=block`: Filter enabled. Rather than sanitize the page, when a XSS attack is detected, the browser will prevent rendering of the page.
  • `1; report=http://[YOURDOMAIN]/your_report_URI`: Filter enabled. The browser will sanitize the page and report the violation. This is a Chromium function utilizing CSP violation reports to send details to a URI of your choice.
| diff --git a/optimize_sidebars.js b/optimize_sidebars.js index 5f5751c4f06..da1ef25ed40 100644 --- a/optimize_sidebars.js +++ b/optimize_sidebars.js @@ -1906,7 +1906,6 @@ module.exports = { "apis-tools/optimize-api/report/get-data-export", ], }, - "apis-tools/optimize-api/event-ingestion", "apis-tools/optimize-api/external-variable-ingestion", "apis-tools/optimize-api/health-readiness", "apis-tools/optimize-api/import-entities", diff --git a/optimize_versioned_docs/version-3.11.0/apis-tools/optimize-api/event-ingestion.md b/optimize_versioned_docs/version-3.11.0/apis-tools/optimize-api/event-ingestion.md index 6c453a3271f..78e51c6e45c 100644 --- a/optimize_versioned_docs/version-3.11.0/apis-tools/optimize-api/event-ingestion.md +++ b/optimize_versioned_docs/version-3.11.0/apis-tools/optimize-api/event-ingestion.md @@ -6,7 +6,7 @@ description: "The REST API to ingest external events into Optimize." Camunda 7 only -The Event Ingestion REST API ingests business process related event data from any third-party system to Camunda Optimize. These events can then be correlated into an [event-based process](components/userguide/additional-features/event-based-processes.md) in Optimize to get business insights into business processes that are not yet fully modeled nor automated using Camunda 7. +The Event Ingestion REST API ingests business process related event data from any third-party system to Camunda Optimize. These events can then be correlated into an [event-based process](#) in Optimize to get business insights into business processes that are not yet fully modeled nor automated using Camunda 7. ## Functionality @@ -45,18 +45,18 @@ The following request headers have to be provided with every ingest request: [JSON Batch Format](https://github.com/cloudevents/spec/blob/v1.0/json-format.md#4-json-batch-format) compliant JSON Array of CloudEvent JSON Objects: -| Name | Type | Constraints | Description | -| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion) | String | REQUIRED | The version of the CloudEvents specification, which the event uses, must be `1.0`. See [CloudEvents - Version 1.0 - specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion). | -| [id](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id) | String | REQUIRED | Uniquely identifies an event, see [CloudEvents - Version 1.0 - id](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id). | -| [source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1) | String | REQUIRED | Identifies the context in which an event happened, see [CloudEvents - Version 1.0 - source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1). A use-case could be if you have conflicting types across different sources. For example, a `type:OrderProcessed` originating from both `order-service` and `shipping-service`. In this case, the `source` field provides means to clearly separate between the origins of a particular event. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | -| [type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | String | REQUIRED | This attribute contains a value describing the type of event related to the originating occurrence, see [CloudEvents - Version 1.0 - type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type). Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. The value `camunda` cannot be used for this field. | -| [time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | [Timestamp](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type-system) | OPTIONAL | Timestamp of when the occurrence happened, see [CloudEvents - Version 1.0 - time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#time). String encoding: [RFC 3339](https://tools.ietf.org/html/rfc3339). If not present, a default value of the time the event was received will be created. | -| [data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data) | Object | OPTIONAL | Event payload data that is part of the event, see [CloudEvents - Version 1.0 - Event Data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data). This CloudEvents Consumer API only accepts data encoded as `application/json`, the optional attribute [CloudEvents - Version 1.0 - datacontenttype](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is thus not required to be provided by the producer. Furthermore, there are no schema restrictions on the `data` attribute and thus the attribute [CloudEvents - Version 1.0 - dataschema](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is also not required to be provided. Producer may provide any valid JSON object, but only simple properties of that object will get converted to variables of a process instances of an [event-based process](self-managed/optimize-deployment/configuration/setup-event-based-processes.md) instance later on. | -| group | String | OPTIONAL | This is an OPTIONAL [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A group identifier that may allow to easier identify a group of related events for a user at the stage of mapping events to a process model. An example could be a domain of events that are most likely related to each other; for example, `billing`. When this field is provided, it will be used to allow adding events that belong to a group to the [mapping table](components/userguide/additional-features/event-based-processes.md#external-events). Optimize handles groups case-sensitively. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | -| traceid | String | REQUIRED | This is a REQUIRED [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A traceid is a correlation key that relates multiple events to a single business transaction or process instance in BPMN terms. Events with the same traceid will get correlated into one process instance of an Event Based Process. | +| Name | Type | Constraints | Description | +| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion) | String | REQUIRED | The version of the CloudEvents specification, which the event uses, must be `1.0`. See [CloudEvents - Version 1.0 - specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion). | +| [id](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id) | String | REQUIRED | Uniquely identifies an event, see [CloudEvents - Version 1.0 - id](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id). | +| [source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1) | String | REQUIRED | Identifies the context in which an event happened, see [CloudEvents - Version 1.0 - source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1). A use-case could be if you have conflicting types across different sources. For example, a `type:OrderProcessed` originating from both `order-service` and `shipping-service`. In this case, the `source` field provides means to clearly separate between the origins of a particular event. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | +| [type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | String | REQUIRED | This attribute contains a value describing the type of event related to the originating occurrence, see [CloudEvents - Version 1.0 - type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type). Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. The value `camunda` cannot be used for this field. | +| [time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | [Timestamp](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type-system) | OPTIONAL | Timestamp of when the occurrence happened, see [CloudEvents - Version 1.0 - time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#time). String encoding: [RFC 3339](https://tools.ietf.org/html/rfc3339). If not present, a default value of the time the event was received will be created. | +| [data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data) | Object | OPTIONAL | Event payload data that is part of the event, see [CloudEvents - Version 1.0 - Event Data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data). This CloudEvents Consumer API only accepts data encoded as `application/json`, the optional attribute [CloudEvents - Version 1.0 - datacontenttype](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is thus not required to be provided by the producer. Furthermore, there are no schema restrictions on the `data` attribute and thus the attribute [CloudEvents - Version 1.0 - dataschema](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is also not required to be provided. Producer may provide any valid JSON object, but only simple properties of that object will get converted to variables of a process instances of an [event-based process](#) instance later on. | +| group | String | OPTIONAL | This is an OPTIONAL [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A group identifier that may allow to easier identify a group of related events for a user at the stage of mapping events to a process model. An example could be a domain of events that are most likely related to each other; for example, `billing`. When this field is provided, it will be used to allow adding events that belong to a group to the [mapping table](##external-events). Optimize handles groups case-sensitively. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | +| traceid | String | REQUIRED | This is a REQUIRED [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A traceid is a correlation key that relates multiple events to a single business transaction or process instance in BPMN terms. Events with the same traceid will get correlated into one process instance of an Event Based Process. | -The following is an example of a valid propertie's `data` value. Each of those properties would be available as a variable in any [event-based process](self-managed/optimize-deployment/configuration/setup-event-based-processes.md) where an event containing this as `data` was mapped: +The following is an example of a valid propertie's `data` value. Each of those properties would be available as a variable in any [event-based process](#) where an event containing this as `data` was mapped: ``` { @@ -85,14 +85,14 @@ This method returns no content. Possible HTTP response status codes: -| Code | Description | -| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 204 | Request successful | -| 400 | Returned if some of the properties in the request body are invalid or missing. | -| 401 | Secret incorrect or missing in HTTP Header `Authorization`. See [Authorization](#authorization) on how to authenticate. | -| 403 | The Event Based Process feature is not enabled. | -| 429 | The maximum number of requests that can be serviced at any time has been reached. The response will include a `Retry-After` HTTP header specifying the recommended number of seconds before the request should be retried. See [Configuration](self-managed/optimize-deployment/configuration/event-based-processes.md#event-ingestion-rest-api-configuration) for information on how to configure this limit. | -| 500 | Some error occurred while processing the ingested event, best check the Optimize log. | +| Code | Description | +| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 204 | Request successful | +| 400 | Returned if some of the properties in the request body are invalid or missing. | +| 401 | Secret incorrect or missing in HTTP Header `Authorization`. See [Authorization](#authorization) on how to authenticate. | +| 403 | The Event Based Process feature is not enabled. | +| 429 | The maximum number of requests that can be serviced at any time has been reached. The response will include a `Retry-After` HTTP header specifying the recommended number of seconds before the request should be retried. See [Configuration](##event-ingestion-rest-api-configuration) for information on how to configure this limit. | +| 500 | Some error occurred while processing the ingested event, best check the Optimize log. | ## Example diff --git a/optimize_versioned_docs/version-3.11.0/components/userguide/additional-features/event-based-processes.md b/optimize_versioned_docs/version-3.11.0/components/userguide/additional-features/event-based-processes.md index f8198a5fd61..3b680c17934 100644 --- a/optimize_versioned_docs/version-3.11.0/components/userguide/additional-features/event-based-processes.md +++ b/optimize_versioned_docs/version-3.11.0/components/userguide/additional-features/event-based-processes.md @@ -15,12 +15,12 @@ Once the event-based process feature is correctly configured, you will see a new :::note When Camunda activity events are used in event-based processes, Camunda admin authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](#publishing-an-event-based-process) or at any time via the [edit access option](#event-based-process-list---edit-access) in the event-based process list. -Visit our [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md) on authorization management and event-based processes for the reasoning behind this behavior. +Visit our [technical guide](/#) on authorization management and event-based processes for the reasoning behind this behavior. ::: ## Set up -You need to set up the event-based processes feature to make use of this feature. See the [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md) for more information. +You need to set up the event-based processes feature to make use of this feature. See the [technical guide](/#) for more information. ## Event-based process list @@ -104,7 +104,7 @@ Defining the `group` property when ingesting the events will allow selecting eve These are events generated from an existing Camunda BPMN process. Only processes for which Optimize has imported at least one event will be visible for selection. This means the process has to have at least one instance and Optimize has to have been configured to import data from that process. -See the [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md#use-camunda-activity-event-sources-for-event-based-processes) for more information on how this is configured. +See the [technical guide](/##use-camunda-activity-event-sources-for-event-based-processes) for more information on how this is configured. To add such events, provide the following details: diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/authorization-management.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/authorization-management.md index 7058a6ba28c..00d8786097f 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/authorization-management.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/authorization-management.md @@ -6,7 +6,7 @@ description: "Define which data users are authorized to see." Camunda 7 only -User authorization management differs depending on whether the entities to manage the authorizations for are originating from adjacent systems like imported data from connected Camunda-BPM engines such as process instances, or whether the entities are fully managed by Camunda Optimize, such as [event-based processes and instances](components/userguide/additional-features/event-based-processes.md) or [collections](components/userguide/collections-dashboards-reports.md). For entities originating from adjacent systems authorizations are managed in the Camunda 7 via Camunda Admin, for the latter the authorizations are managed in Camunda Optimize. +User authorization management differs depending on whether the entities to manage the authorizations for are originating from adjacent systems like imported data from connected Camunda-BPM engines such as process instances, or whether the entities are fully managed by Camunda Optimize, such as [event-based processes and instances](#) or [collections](components/userguide/collections-dashboards-reports.md). For entities originating from adjacent systems authorizations are managed in the Camunda 7 via Camunda Admin, for the latter the authorizations are managed in Camunda Optimize. ## Camunda 7 data authorizations @@ -50,4 +50,4 @@ There are entities that only exist in Camunda Optimize and authorizations to the Camunda 7 only -Although [event-based processes](components/userguide/additional-features/event-based-processes.md) may include data originating from adjacent systems like the Camunda Engine when using [Camunda Activity Event Sources](components/userguide/additional-features/event-based-processes.md#event-sources), they do not enforce any authorizations from Camunda Admin. The reason for that is that multiple sources can get combined in a single [event-based process](components/userguide/additional-features/event-based-processes.md) that may contain conflicting authorizations. It is thus required to authorize users or groups to [event-based processes](components/userguide/additional-features/event-based-processes.md) either directly when [publishing](components/userguide/additional-features/event-based-processes.md#publishing-an-event-based-process) them or later on via the [event-based process - Edit Access](components/userguide/additional-features/event-based-processes.md#event-based-process-list---edit-access) option. +Although [event-based processes](#) may include data originating from adjacent systems like the Camunda Engine when using [Camunda Activity Event Sources](##event-sources), they do not enforce any authorizations from Camunda Admin. The reason for that is that multiple sources can get combined in a single [event-based process](#) that may contain conflicting authorizations. It is thus required to authorize users or groups to [event-based processes](#) either directly when [publishing](##publishing-an-event-based-process) them or later on via the [event-based process - Edit Access](##event-based-process-list---edit-access) option. diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/clustering.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/clustering.md index de22429c75c..81ea7065ff3 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/clustering.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/clustering.md @@ -65,9 +65,9 @@ The importing instance has the [history cleanup enabled](./system-configuration. In the context of event-based process import and clustering, there are two additional configuration properties to consider carefully. -One is specific to each configured Camunda engine [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) and controls whether data from this engine is imported as event source data as well for [event-based processes](components/userguide/additional-features/event-based-processes.md). You need to enable this on the same cluster node for which the [`engines.${engineAlias}.importEnabled`](./system-configuration-platform-7.md) configuration flag is set to `true`. +One is specific to each configured Camunda engine [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) and controls whether data from this engine is imported as event source data as well for [event-based processes](#). You need to enable this on the same cluster node for which the [`engines.${engineAlias}.importEnabled`](./system-configuration-platform-7.md) configuration flag is set to `true`. -[`eventBasedProcess.eventImport.enabled`](./setup-event-based-processes.md) controls whether the particular cluster node processes events to create event based process instances. This allows you to run a dedicated node that performs this operation, while other nodes might just feed in Camunda activity events. +[`eventBasedProcess.eventImport.enabled`](#) controls whether the particular cluster node processes events to create event based process instances. This allows you to run a dedicated node that performs this operation, while other nodes might just feed in Camunda activity events. ### 2. Distributed user sessions - configure shared secret token diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/common-problems.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/common-problems.md index 8fb78a97860..ff425d78843 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/common-problems.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/common-problems.md @@ -8,7 +8,7 @@ This section aims to provide initial help to troubleshoot common issues. This gu ## Optimize is missing some or all definitions -It is possible that the user you are logged in as does not have the relevant authorizations to view all definitions in Optimize. Refer to the [authorization management section](./authorization-management.md#process-or-decision-definition-related-authorizations) to confirm the user has all required authorizations. +It is possible that the user you are logged in as does not have the relevant authorizations to view all definitions in Optimize. Refer to the [authorization management section](##process-or-decision-definition-related-authorizations) to confirm the user has all required authorizations. Another common cause for this type of problem are issues with Optimize's data import, for example due to underlying problems with the engine data. In this case, the Optimize logs should contain more information on what is causing Optimize to not import the definition data correctly. If you are unsure on how to interpret what you find in the logs, create a support ticket. diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/event-based-processes.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/event-based-processes.md index 884e804160f..bbccda648b5 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/event-based-processes.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/event-based-processes.md @@ -21,7 +21,7 @@ Configuration of the Optimize event based process feature. Camunda 7 only -Configuration of the Optimize [Event Ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](components/userguide/additional-features/event-based-processes.md). +Configuration of the Optimize [Event Ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](#). | YAML Path | Default Value | Description | | ----------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/history-cleanup.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/history-cleanup.md index e945fc9e325..1cf50acd8c1 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/history-cleanup.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/history-cleanup.md @@ -98,7 +98,7 @@ historyCleanup: ``` :::note -The ingested event cleanup does not cascade down to potentially existing [event-based processes](components/userguide/additional-features/event-based-processes.md) that may contain data originating from ingested events. To make sure data of ingested events is also removed from event-based processes, you need to enable the [Process Data Cleanup](#process-data-cleanup) as well. +The ingested event cleanup does not cascade down to potentially existing [event-based processes](#) that may contain data originating from ingested events. To make sure data of ingested events is also removed from event-based processes, you need to enable the [Process Data Cleanup](#process-data-cleanup) as well. ::: ## Example diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/multiple-engines.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/multiple-engines.md index f1ba7216737..0ecae650f26 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/multiple-engines.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/multiple-engines.md @@ -80,7 +80,7 @@ In general, tests have shown that Optimize puts a very low strain on the engine ## Authentication and authorization in the multiple engine setup When you configure multiple engines in Optimize, each process engine can host different users with a different set of authorizations. If a user is logging in, Optimize will try to authenticate and authorize the user on each configured engine. In case you are not familiar with how -the authorization/authentication works for a single engine scenario, visit the [User Access Management](./user-management.md) and [Authorization Management](./authorization-management.md) documentation first. +the authorization/authentication works for a single engine scenario, visit the [User Access Management](./user-management.md) and [Authorization Management](#) documentation first. To determine if a user is allowed to log in and which resources they are allowed to access within the multiple engine scenario, Optimize uses the following algorithm: diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/security-instructions.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/security-instructions.md index a1b64350563..4d319230e49 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/security-instructions.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/security-instructions.md @@ -42,7 +42,7 @@ Authentication controls who can access Optimize. Read all about how to restrict Camunda 7 only -Authorization controls what data a user can access and change in Optimize once authenticated. Authentication is a prerequisite to authorization. Read all about how to restrict the data access in the [authorization management guide](./authorization-management.md). +Authorization controls what data a user can access and change in Optimize once authenticated. Authentication is a prerequisite to authorization. Read all about how to restrict the data access in the [authorization management guide](#). ## Secure Elasticsearch diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md index fd4d98ac99f..d9f2f2243db 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md @@ -33,12 +33,12 @@ A full configuration example authorizing the user `demo` and all members of the ## Use Camunda activity event sources for event based processes :::note Authorization to event-based processes -When Camunda activity events are used in event-based processes, Camunda Admin Authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](components/userguide/additional-features/event-based-processes.md#publishing-an-event-based-process) or at any time via the [Edit Access Option](components/userguide/additional-features/event-based-processes.md#event-based-process-list---edit-access) in the event-based process List. +When Camunda activity events are used in event-based processes, Camunda Admin Authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](##publishing-an-event-based-process) or at any time via the [Edit Access Option](##event-based-process-list---edit-access) in the event-based process List. -Visit [Authorization Management - event-based process](./authorization-management.md#event-based-processes) for the reasoning behind this behavior. +Visit [Authorization Management - event-based process](##event-based-processes) for the reasoning behind this behavior. ::: -To publish event-based processes that include [Camunda Event Sources](components/userguide/additional-features/event-based-processes.md#camunda-events), it is required to set [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) to `true` for the connected engine the Camunda process originates from. +To publish event-based processes that include [Camunda Event Sources](##camunda-events), it is required to set [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) to `true` for the connected engine the Camunda process originates from. :::note Heads Up! You need to [reimport data](./../migration-update/instructions.md#force-reimport-of-engine-data-in-optimize) from this engine to have all historic Camunda events available for event-based processes. Otherwise, only new events will be included. diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/system-configuration.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/system-configuration.md index 911913526d4..ccbe1d20b49 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/system-configuration.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/system-configuration.md @@ -88,8 +88,8 @@ These values control mechanisms of Optimize related security, e.g. security head | | | security.auth.token.lifeMin | 60 | Optimize uses token-based authentication to keep track of which users are logged in. Define the lifetime of the token in minutes. | | security.auth.token.secret | null | Optional secret used to sign authentication tokens, it's recommended to use at least a 64-character secret. If set to `null` a random secret will be generated with each startup of Optimize. | -| security.auth.superUserIds | [ ] | List of user IDs that are granted full permission to all collections, reports, and dashboards.

Note: For reports, these users are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](./authorization-management.md). | -| security.auth.superGroupIds | [ ] | List of group IDs that are granted full permission to all collections, reports, and dashboards. All members of the groups specified will have superuser permissions in Optimize.

Note: For reports, these groups are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](./authorization-management.md). | +| security.auth.superUserIds | [ ] | List of user IDs that are granted full permission to all collections, reports, and dashboards.

Note: For reports, these users are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](#). | +| security.auth.superGroupIds | [ ] | List of group IDs that are granted full permission to all collections, reports, and dashboards. All members of the groups specified will have superuser permissions in Optimize.

Note: For reports, these groups are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](#). | | security.responseHeaders.HSTS.max-age | 63072000 | HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. This field defines the time, in seconds, that the browser should remember that this site is only to be accessed using HTTPS. If you set the number to a negative value no HSTS header is sent. | | security.responseHeaders.HSTS.includeSubDomains | true | HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. If this optional parameter is specified, this rule applies to all the site’s subdomains as well. | | security.responseHeaders.X-XSS-Protection | 1; mode=block | This header enables the cross-site scripting (XSS) filter in your browser. Can have one of the following options:
  • `0`: Filter disabled.
  • `1`: Filter enabled. If a cross-site scripting attack is detected, in order to stop the attack, the browser will sanitize the page.
  • `1; mode=block`: Filter enabled. Rather than sanitize the page, when a XSS attack is detected, the browser will prevent rendering of the page.
  • `1; report=http://[YOURDOMAIN]/your_report_URI`: Filter enabled. The browser will sanitize the page and report the violation. This is a Chromium function utilizing CSP violation reports to send details to a URI of your choice.
| diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/user-management.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/user-management.md index 001faa9d4cc..7dbdedb0485 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/user-management.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/user-management.md @@ -10,7 +10,7 @@ description: "Define which users have access to Optimize." Providing Optimize access to a user just enables them to log in to Optimize. To be able to create reports, the user also needs to have permission to access the engine data. To see -how this can be done, refer to the [Authorization Management](./authorization-management.md) section. +how this can be done, refer to the [Authorization Management](#) section. ::: You can use the credentials from the Camunda 7 users to access Optimize. However, for the users to gain access to Optimize, they need to be authorized. This is not done in Optimize itself, but needs to be configured in the Camunda 7 and can be achieved on different levels with different options. If you do not know how authorization in Camunda works, visit the [authorization service documentation](https://docs.camunda.org/manual/latest/user-guide/process-engine/authorization-service/). diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/install-and-start.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/install-and-start.md index 21a90569e3c..2d7fc9fc4e4 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/install-and-start.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/install-and-start.md @@ -121,7 +121,7 @@ The most important environment variables you may have to configure are related t A complete sample can be found within [Connect to remote Camunda 7 and Elasticsearch](#connect-to-remote-camunda-platform-7-and-elasticsearch). -Furthermore, there are also environment variables specific to the [event-based process](components/userguide/additional-features/event-based-processes.md) feature you may make use of: +Furthermore, there are also environment variables specific to the [event-based process](#) feature you may make use of: - `OPTIMIZE_CAMUNDA_BPM_EVENT_IMPORT_ENABLED`: Determines whether this instance of Optimize should convert historical data to event data usable for event-based processes (default: `false`) - `OPTIMIZE_EVENT_BASED_PROCESSES_USER_IDS`: An array of user ids that are authorized to administer event-based processes (default: `[]`) diff --git a/optimize_versioned_docs/version-3.12.0/apis-tools/optimize-api/event-ingestion.md b/optimize_versioned_docs/version-3.12.0/apis-tools/optimize-api/event-ingestion.md index 76a4f9ad0e7..e9ff0cf3092 100644 --- a/optimize_versioned_docs/version-3.12.0/apis-tools/optimize-api/event-ingestion.md +++ b/optimize_versioned_docs/version-3.12.0/apis-tools/optimize-api/event-ingestion.md @@ -6,7 +6,7 @@ description: "The REST API to ingest external events into Optimize." Camunda 7 only -The Event Ingestion REST API ingests business process related event data from any third-party system to Camunda Optimize. These events can then be correlated into an [event-based process](components/userguide/additional-features/event-based-processes.md) in Optimize to get business insights into business processes that are not yet fully modeled nor automated using Camunda 7. +The Event Ingestion REST API ingests business process related event data from any third-party system to Camunda Optimize. These events can then be correlated into an [event-based process](#) in Optimize to get business insights into business processes that are not yet fully modeled nor automated using Camunda 7. ## Functionality @@ -45,18 +45,18 @@ The following request headers have to be provided with every ingest request: [JSON Batch Format](https://github.com/cloudevents/spec/blob/v1.0/json-format.md#4-json-batch-format) compliant JSON Array of CloudEvent JSON Objects: -| Name | Type | Constraints | Description | -| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion) | String | REQUIRED | The version of the CloudEvents specification, which the event uses, must be `1.0`. See [CloudEvents - Version 1.0 - specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion). | -| [id](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id) | String | REQUIRED | Uniquely identifies an event, see [CloudEvents - Version 1.0 - id](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id). | -| [source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1) | String | REQUIRED | Identifies the context in which an event happened, see [CloudEvents - Version 1.0 - source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1). A use-case could be if you have conflicting types across different sources. For example, a `type:OrderProcessed` originating from both `order-service` and `shipping-service`. In this case, the `source` field provides means to clearly separate between the origins of a particular event. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | -| [type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | String | REQUIRED | This attribute contains a value describing the type of event related to the originating occurrence, see [CloudEvents - Version 1.0 - type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type). Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. The value `camunda` cannot be used for this field. | -| [time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | [Timestamp](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type-system) | OPTIONAL | Timestamp of when the occurrence happened, see [CloudEvents - Version 1.0 - time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#time). String encoding: [RFC 3339](https://tools.ietf.org/html/rfc3339). If not present, a default value of the time the event was received will be created. | -| [data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data) | Object | OPTIONAL | Event payload data that is part of the event, see [CloudEvents - Version 1.0 - Event Data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data). This CloudEvents Consumer API only accepts data encoded as `application/json`, the optional attribute [CloudEvents - Version 1.0 - datacontenttype](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is thus not required to be provided by the producer. Furthermore, there are no schema restrictions on the `data` attribute and thus the attribute [CloudEvents - Version 1.0 - dataschema](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is also not required to be provided. Producer may provide any valid JSON object, but only simple properties of that object will get converted to variables of a process instances of an [event-based process](self-managed/optimize-deployment/configuration/setup-event-based-processes.md) instance later on. | -| group | String | OPTIONAL | This is an OPTIONAL [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A group identifier that may allow to easier identify a group of related events for a user at the stage of mapping events to a process model. An example could be a domain of events that are most likely related to each other; for example, `billing`. When this field is provided, it will be used to allow adding events that belong to a group to the [mapping table](components/userguide/additional-features/event-based-processes.md#external-events). Optimize handles groups case-sensitively. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | -| traceid | String | REQUIRED | This is a REQUIRED [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A traceid is a correlation key that relates multiple events to a single business transaction or process instance in BPMN terms. Events with the same traceid will get correlated into one process instance of an Event Based Process. | +| Name | Type | Constraints | Description | +| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion) | String | REQUIRED | The version of the CloudEvents specification, which the event uses, must be `1.0`. See [CloudEvents - Version 1.0 - specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion). | +| [id](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id) | String | REQUIRED | Uniquely identifies an event, see [CloudEvents - Version 1.0 - id](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id). | +| [source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1) | String | REQUIRED | Identifies the context in which an event happened, see [CloudEvents - Version 1.0 - source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1). A use-case could be if you have conflicting types across different sources. For example, a `type:OrderProcessed` originating from both `order-service` and `shipping-service`. In this case, the `source` field provides means to clearly separate between the origins of a particular event. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | +| [type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | String | REQUIRED | This attribute contains a value describing the type of event related to the originating occurrence, see [CloudEvents - Version 1.0 - type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type). Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. The value `camunda` cannot be used for this field. | +| [time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | [Timestamp](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type-system) | OPTIONAL | Timestamp of when the occurrence happened, see [CloudEvents - Version 1.0 - time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#time). String encoding: [RFC 3339](https://tools.ietf.org/html/rfc3339). If not present, a default value of the time the event was received will be created. | +| [data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data) | Object | OPTIONAL | Event payload data that is part of the event, see [CloudEvents - Version 1.0 - Event Data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data). This CloudEvents Consumer API only accepts data encoded as `application/json`, the optional attribute [CloudEvents - Version 1.0 - datacontenttype](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is thus not required to be provided by the producer. Furthermore, there are no schema restrictions on the `data` attribute and thus the attribute [CloudEvents - Version 1.0 - dataschema](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is also not required to be provided. Producer may provide any valid JSON object, but only simple properties of that object will get converted to variables of a process instances of an [event-based process](#) instance later on. | +| group | String | OPTIONAL | This is an OPTIONAL [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A group identifier that may allow to easier identify a group of related events for a user at the stage of mapping events to a process model. An example could be a domain of events that are most likely related to each other; for example, `billing`. When this field is provided, it will be used to allow adding events that belong to a group to the [mapping table](##external-events). Optimize handles groups case-sensitively. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | +| traceid | String | REQUIRED | This is a REQUIRED [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A traceid is a correlation key that relates multiple events to a single business transaction or process instance in BPMN terms. Events with the same traceid will get correlated into one process instance of an Event Based Process. | -The following is an example of a valid propertie's `data` value. Each of those properties would be available as a variable in any [event-based process](self-managed/optimize-deployment/configuration/setup-event-based-processes.md) where an event containing this as `data` was mapped: +The following is an example of a valid propertie's `data` value. Each of those properties would be available as a variable in any [event-based process](#) where an event containing this as `data` was mapped: ``` { @@ -85,14 +85,14 @@ This method returns no content. Possible HTTP response status codes: -| Code | Description | -| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 204 | Request successful | -| 400 | Returned if some of the properties in the request body are invalid or missing. | -| 401 | Secret incorrect or missing in HTTP Header `Authorization`. See [Authorization](#authorization) on how to authenticate. | -| 403 | The Event Based Process feature is not enabled. | -| 429 | The maximum number of requests that can be serviced at any time has been reached. The response will include a `Retry-After` HTTP header specifying the recommended number of seconds before the request should be retried. See [Configuration](self-managed/optimize-deployment/configuration/event-based-processes.md#event-ingestion-rest-api-configuration) for information on how to configure this limit. | -| 500 | Some error occurred while processing the ingested event, best check the Optimize log. | +| Code | Description | +| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 204 | Request successful | +| 400 | Returned if some of the properties in the request body are invalid or missing. | +| 401 | Secret incorrect or missing in HTTP Header `Authorization`. See [Authorization](#authorization) on how to authenticate. | +| 403 | The Event Based Process feature is not enabled. | +| 429 | The maximum number of requests that can be serviced at any time has been reached. The response will include a `Retry-After` HTTP header specifying the recommended number of seconds before the request should be retried. See [Configuration](##event-ingestion-rest-api-configuration) for information on how to configure this limit. | +| 500 | Some error occurred while processing the ingested event, best check the Optimize log. | ## Example diff --git a/optimize_versioned_docs/version-3.12.0/components/userguide/additional-features/event-based-processes.md b/optimize_versioned_docs/version-3.12.0/components/userguide/additional-features/event-based-processes.md index f8198a5fd61..3b680c17934 100644 --- a/optimize_versioned_docs/version-3.12.0/components/userguide/additional-features/event-based-processes.md +++ b/optimize_versioned_docs/version-3.12.0/components/userguide/additional-features/event-based-processes.md @@ -15,12 +15,12 @@ Once the event-based process feature is correctly configured, you will see a new :::note When Camunda activity events are used in event-based processes, Camunda admin authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](#publishing-an-event-based-process) or at any time via the [edit access option](#event-based-process-list---edit-access) in the event-based process list. -Visit our [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md) on authorization management and event-based processes for the reasoning behind this behavior. +Visit our [technical guide](/#) on authorization management and event-based processes for the reasoning behind this behavior. ::: ## Set up -You need to set up the event-based processes feature to make use of this feature. See the [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md) for more information. +You need to set up the event-based processes feature to make use of this feature. See the [technical guide](/#) for more information. ## Event-based process list @@ -104,7 +104,7 @@ Defining the `group` property when ingesting the events will allow selecting eve These are events generated from an existing Camunda BPMN process. Only processes for which Optimize has imported at least one event will be visible for selection. This means the process has to have at least one instance and Optimize has to have been configured to import data from that process. -See the [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md#use-camunda-activity-event-sources-for-event-based-processes) for more information on how this is configured. +See the [technical guide](/##use-camunda-activity-event-sources-for-event-based-processes) for more information on how this is configured. To add such events, provide the following details: diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/authorization-management.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/authorization-management.md index d26c080356e..b3cc86dc2e9 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/authorization-management.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/authorization-management.md @@ -6,7 +6,7 @@ description: "Define which data users are authorized to see." Camunda 7 only -User authorization management differs depending on whether the entities to manage the authorizations for are originating from adjacent systems like imported data from connected Camunda-BPM engines such as process instances, or whether the entities are fully managed by Camunda Optimize, such as [event-based processes and instances](components/userguide/additional-features/event-based-processes.md) or [collections](components/userguide/collections-dashboards-reports.md). For entities originating from adjacent systems authorizations are managed in the Camunda 7 via Camunda Admin, for the latter the authorizations are managed in Camunda Optimize. +User authorization management differs depending on whether the entities to manage the authorizations for are originating from adjacent systems like imported data from connected Camunda-BPM engines such as process instances, or whether the entities are fully managed by Camunda Optimize, such as [event-based processes and instances](#) or [collections](components/userguide/collections-dashboards-reports.md). For entities originating from adjacent systems authorizations are managed in the Camunda 7 via Camunda Admin, for the latter the authorizations are managed in Camunda Optimize. ## Camunda 7 data authorizations @@ -50,4 +50,4 @@ There are entities that only exist in Camunda Optimize and authorizations to the Camunda 7 only -Although [event-based processes](components/userguide/additional-features/event-based-processes.md) may include data originating from adjacent systems like the Camunda Engine when using [Camunda Activity Event Sources](components/userguide/additional-features/event-based-processes.md#event-sources), they do not enforce any authorizations from Camunda Admin. The reason for that is that multiple sources can get combined in a single [event-based process](components/userguide/additional-features/event-based-processes.md) that may contain conflicting authorizations. It is thus required to authorize users or groups to [event-based processes](components/userguide/additional-features/event-based-processes.md) either directly when [publishing](components/userguide/additional-features/event-based-processes.md#publishing-an-event-based-process) them or later on via the [event-based process - Edit Access](components/userguide/additional-features/event-based-processes.md#event-based-process-list---edit-access) option. +Although [event-based processes](#) may include data originating from adjacent systems like the Camunda Engine when using [Camunda Activity Event Sources](##event-sources), they do not enforce any authorizations from Camunda Admin. The reason for that is that multiple sources can get combined in a single [event-based process](#) that may contain conflicting authorizations. It is thus required to authorize users or groups to [event-based processes](#) either directly when [publishing](##publishing-an-event-based-process) them or later on via the [event-based process - Edit Access](##event-based-process-list---edit-access) option. diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/clustering.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/clustering.md index 752e83f08fc..63c01b06b24 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/clustering.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/clustering.md @@ -65,9 +65,9 @@ The importing instance has the [history cleanup enabled](./system-configuration. In the context of event-based process import and clustering, there are two additional configuration properties to consider carefully. -One is specific to each configured Camunda engine [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) and controls whether data from this engine is imported as event source data as well for [event-based processes](components/userguide/additional-features/event-based-processes.md). You need to enable this on the same cluster node for which the [`engines.${engineAlias}.importEnabled`](./system-configuration-platform-7.md) configuration flag is set to `true`. +One is specific to each configured Camunda engine [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) and controls whether data from this engine is imported as event source data as well for [event-based processes](#). You need to enable this on the same cluster node for which the [`engines.${engineAlias}.importEnabled`](./system-configuration-platform-7.md) configuration flag is set to `true`. -[`eventBasedProcess.eventImport.enabled`](./setup-event-based-processes.md) controls whether the particular cluster node processes events to create event based process instances. This allows you to run a dedicated node that performs this operation, while other nodes might just feed in Camunda activity events. +[`eventBasedProcess.eventImport.enabled`](#) controls whether the particular cluster node processes events to create event based process instances. This allows you to run a dedicated node that performs this operation, while other nodes might just feed in Camunda activity events. ### 2. Distributed user sessions - configure shared secret token diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/common-problems.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/common-problems.md index 8fb78a97860..ff425d78843 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/common-problems.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/common-problems.md @@ -8,7 +8,7 @@ This section aims to provide initial help to troubleshoot common issues. This gu ## Optimize is missing some or all definitions -It is possible that the user you are logged in as does not have the relevant authorizations to view all definitions in Optimize. Refer to the [authorization management section](./authorization-management.md#process-or-decision-definition-related-authorizations) to confirm the user has all required authorizations. +It is possible that the user you are logged in as does not have the relevant authorizations to view all definitions in Optimize. Refer to the [authorization management section](##process-or-decision-definition-related-authorizations) to confirm the user has all required authorizations. Another common cause for this type of problem are issues with Optimize's data import, for example due to underlying problems with the engine data. In this case, the Optimize logs should contain more information on what is causing Optimize to not import the definition data correctly. If you are unsure on how to interpret what you find in the logs, create a support ticket. diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/event-based-processes.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/event-based-processes.md index efc9f48f2f4..bf7b722bc6f 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/event-based-processes.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/event-based-processes.md @@ -21,7 +21,7 @@ Configuration of the Optimize event-based process feature. Camunda 7 only -Configuration of the Optimize [event ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](components/userguide/additional-features/event-based-processes.md). +Configuration of the Optimize [event ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](#). | YAML path | Default value | Description | | ----------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/history-cleanup.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/history-cleanup.md index 773b1824d82..bec76181dd8 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/history-cleanup.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/history-cleanup.md @@ -113,7 +113,7 @@ historyCleanup: ``` :::note -The ingested event cleanup does not cascade down to potentially existing [event-based processes](components/userguide/additional-features/event-based-processes.md) that may contain data originating from ingested events. To make sure data of ingested events is also removed from event-based processes, you need to enable the [Process Data Cleanup](#process-data-cleanup) as well. +The ingested event cleanup does not cascade down to potentially existing [event-based processes](#) that may contain data originating from ingested events. To make sure data of ingested events is also removed from event-based processes, you need to enable the [Process Data Cleanup](#process-data-cleanup) as well. ::: diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/multiple-engines.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/multiple-engines.md index f1ba7216737..0ecae650f26 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/multiple-engines.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/multiple-engines.md @@ -80,7 +80,7 @@ In general, tests have shown that Optimize puts a very low strain on the engine ## Authentication and authorization in the multiple engine setup When you configure multiple engines in Optimize, each process engine can host different users with a different set of authorizations. If a user is logging in, Optimize will try to authenticate and authorize the user on each configured engine. In case you are not familiar with how -the authorization/authentication works for a single engine scenario, visit the [User Access Management](./user-management.md) and [Authorization Management](./authorization-management.md) documentation first. +the authorization/authentication works for a single engine scenario, visit the [User Access Management](./user-management.md) and [Authorization Management](#) documentation first. To determine if a user is allowed to log in and which resources they are allowed to access within the multiple engine scenario, Optimize uses the following algorithm: diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/security-instructions.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/security-instructions.md index e8884e7055d..447c924effe 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/security-instructions.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/security-instructions.md @@ -55,7 +55,7 @@ Authentication controls who can access Optimize. Read all about how to restrict Camunda 7 only -Authorization controls what data a user can access and change in Optimize once authenticated. Authentication is a prerequisite to authorization. Read all about how to restrict the data access in the [authorization management guide](./authorization-management.md). +Authorization controls what data a user can access and change in Optimize once authenticated. Authentication is a prerequisite to authorization. Read all about how to restrict the data access in the [authorization management guide](#). diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md index fd4d98ac99f..d9f2f2243db 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md @@ -33,12 +33,12 @@ A full configuration example authorizing the user `demo` and all members of the ## Use Camunda activity event sources for event based processes :::note Authorization to event-based processes -When Camunda activity events are used in event-based processes, Camunda Admin Authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](components/userguide/additional-features/event-based-processes.md#publishing-an-event-based-process) or at any time via the [Edit Access Option](components/userguide/additional-features/event-based-processes.md#event-based-process-list---edit-access) in the event-based process List. +When Camunda activity events are used in event-based processes, Camunda Admin Authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](##publishing-an-event-based-process) or at any time via the [Edit Access Option](##event-based-process-list---edit-access) in the event-based process List. -Visit [Authorization Management - event-based process](./authorization-management.md#event-based-processes) for the reasoning behind this behavior. +Visit [Authorization Management - event-based process](##event-based-processes) for the reasoning behind this behavior. ::: -To publish event-based processes that include [Camunda Event Sources](components/userguide/additional-features/event-based-processes.md#camunda-events), it is required to set [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) to `true` for the connected engine the Camunda process originates from. +To publish event-based processes that include [Camunda Event Sources](##camunda-events), it is required to set [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) to `true` for the connected engine the Camunda process originates from. :::note Heads Up! You need to [reimport data](./../migration-update/instructions.md#force-reimport-of-engine-data-in-optimize) from this engine to have all historic Camunda events available for event-based processes. Otherwise, only new events will be included. diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/system-configuration.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/system-configuration.md index edf98f8cd65..b2e5c747d12 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/system-configuration.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/system-configuration.md @@ -88,8 +88,8 @@ These values control mechanisms of Optimize related security, e.g. security head | | | security.auth.token.lifeMin | 60 | Optimize uses token-based authentication to keep track of which users are logged in. Define the lifetime of the token in minutes. | | security.auth.token.secret | null | Optional secret used to sign authentication tokens, it's recommended to use at least a 64-character secret. If set to `null` a random secret will be generated with each startup of Optimize. | -| security.auth.superUserIds | [ ] | List of user IDs that are granted full permission to all collections, reports, and dashboards.

Note: For reports, these users are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](./authorization-management.md). | -| security.auth.superGroupIds | [ ] | List of group IDs that are granted full permission to all collections, reports, and dashboards. All members of the groups specified will have superuser permissions in Optimize.

Note: For reports, these groups are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](./authorization-management.md). | +| security.auth.superUserIds | [ ] | List of user IDs that are granted full permission to all collections, reports, and dashboards.

Note: For reports, these users are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](#). | +| security.auth.superGroupIds | [ ] | List of group IDs that are granted full permission to all collections, reports, and dashboards. All members of the groups specified will have superuser permissions in Optimize.

Note: For reports, these groups are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](#). | | security.responseHeaders.HSTS.max-age | 63072000 | HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. This field defines the time, in seconds, that the browser should remember that this site is only to be accessed using HTTPS. If you set the number to a negative value no HSTS header is sent. | | security.responseHeaders.HSTS.includeSubDomains | true | HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. If this optional parameter is specified, this rule applies to all the site’s subdomains as well. | | security.responseHeaders.X-XSS-Protection | 1; mode=block | This header enables the cross-site scripting (XSS) filter in your browser. Can have one of the following options:
  • `0`: Filter disabled.
  • `1`: Filter enabled. If a cross-site scripting attack is detected, in order to stop the attack, the browser will sanitize the page.
  • `1; mode=block`: Filter enabled. Rather than sanitize the page, when a XSS attack is detected, the browser will prevent rendering of the page.
  • `1; report=http://[YOURDOMAIN]/your_report_URI`: Filter enabled. The browser will sanitize the page and report the violation. This is a Chromium function utilizing CSP violation reports to send details to a URI of your choice.
| diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/user-management.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/user-management.md index 001faa9d4cc..7dbdedb0485 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/user-management.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/user-management.md @@ -10,7 +10,7 @@ description: "Define which users have access to Optimize." Providing Optimize access to a user just enables them to log in to Optimize. To be able to create reports, the user also needs to have permission to access the engine data. To see -how this can be done, refer to the [Authorization Management](./authorization-management.md) section. +how this can be done, refer to the [Authorization Management](#) section. ::: You can use the credentials from the Camunda 7 users to access Optimize. However, for the users to gain access to Optimize, they need to be authorized. This is not done in Optimize itself, but needs to be configured in the Camunda 7 and can be achieved on different levels with different options. If you do not know how authorization in Camunda works, visit the [authorization service documentation](https://docs.camunda.org/manual/latest/user-guide/process-engine/authorization-service/). diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/install-and-start.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/install-and-start.md index 9c1653d9992..95d7eb1818d 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/install-and-start.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/install-and-start.md @@ -125,7 +125,7 @@ The most important environment variables you may have to configure are related t A complete sample can be found within [Connect to remote Camunda 7 and Elasticsearch](#connect-to-remote-camunda-platform-7-and-elasticsearch). -Furthermore, there are also environment variables specific to the [event-based process](components/userguide/additional-features/event-based-processes.md) feature you may make use of: +Furthermore, there are also environment variables specific to the [event-based process](#) feature you may make use of: - `OPTIMIZE_CAMUNDA_BPM_EVENT_IMPORT_ENABLED`: Determines whether this instance of Optimize should convert historical data to event data usable for event-based processes (default: `false`) - `OPTIMIZE_EVENT_BASED_PROCESSES_USER_IDS`: An array of user ids that are authorized to administer event-based processes (default: `[]`) diff --git a/optimize_versioned_docs/version-3.13.0/apis-tools/optimize-api/event-ingestion.md b/optimize_versioned_docs/version-3.13.0/apis-tools/optimize-api/event-ingestion.md index 76a4f9ad0e7..e9ff0cf3092 100644 --- a/optimize_versioned_docs/version-3.13.0/apis-tools/optimize-api/event-ingestion.md +++ b/optimize_versioned_docs/version-3.13.0/apis-tools/optimize-api/event-ingestion.md @@ -6,7 +6,7 @@ description: "The REST API to ingest external events into Optimize." Camunda 7 only -The Event Ingestion REST API ingests business process related event data from any third-party system to Camunda Optimize. These events can then be correlated into an [event-based process](components/userguide/additional-features/event-based-processes.md) in Optimize to get business insights into business processes that are not yet fully modeled nor automated using Camunda 7. +The Event Ingestion REST API ingests business process related event data from any third-party system to Camunda Optimize. These events can then be correlated into an [event-based process](#) in Optimize to get business insights into business processes that are not yet fully modeled nor automated using Camunda 7. ## Functionality @@ -45,18 +45,18 @@ The following request headers have to be provided with every ingest request: [JSON Batch Format](https://github.com/cloudevents/spec/blob/v1.0/json-format.md#4-json-batch-format) compliant JSON Array of CloudEvent JSON Objects: -| Name | Type | Constraints | Description | -| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion) | String | REQUIRED | The version of the CloudEvents specification, which the event uses, must be `1.0`. See [CloudEvents - Version 1.0 - specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion). | -| [id](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id) | String | REQUIRED | Uniquely identifies an event, see [CloudEvents - Version 1.0 - id](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id). | -| [source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1) | String | REQUIRED | Identifies the context in which an event happened, see [CloudEvents - Version 1.0 - source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1). A use-case could be if you have conflicting types across different sources. For example, a `type:OrderProcessed` originating from both `order-service` and `shipping-service`. In this case, the `source` field provides means to clearly separate between the origins of a particular event. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | -| [type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | String | REQUIRED | This attribute contains a value describing the type of event related to the originating occurrence, see [CloudEvents - Version 1.0 - type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type). Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. The value `camunda` cannot be used for this field. | -| [time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | [Timestamp](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type-system) | OPTIONAL | Timestamp of when the occurrence happened, see [CloudEvents - Version 1.0 - time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#time). String encoding: [RFC 3339](https://tools.ietf.org/html/rfc3339). If not present, a default value of the time the event was received will be created. | -| [data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data) | Object | OPTIONAL | Event payload data that is part of the event, see [CloudEvents - Version 1.0 - Event Data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data). This CloudEvents Consumer API only accepts data encoded as `application/json`, the optional attribute [CloudEvents - Version 1.0 - datacontenttype](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is thus not required to be provided by the producer. Furthermore, there are no schema restrictions on the `data` attribute and thus the attribute [CloudEvents - Version 1.0 - dataschema](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is also not required to be provided. Producer may provide any valid JSON object, but only simple properties of that object will get converted to variables of a process instances of an [event-based process](self-managed/optimize-deployment/configuration/setup-event-based-processes.md) instance later on. | -| group | String | OPTIONAL | This is an OPTIONAL [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A group identifier that may allow to easier identify a group of related events for a user at the stage of mapping events to a process model. An example could be a domain of events that are most likely related to each other; for example, `billing`. When this field is provided, it will be used to allow adding events that belong to a group to the [mapping table](components/userguide/additional-features/event-based-processes.md#external-events). Optimize handles groups case-sensitively. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | -| traceid | String | REQUIRED | This is a REQUIRED [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A traceid is a correlation key that relates multiple events to a single business transaction or process instance in BPMN terms. Events with the same traceid will get correlated into one process instance of an Event Based Process. | +| Name | Type | Constraints | Description | +| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion) | String | REQUIRED | The version of the CloudEvents specification, which the event uses, must be `1.0`. See [CloudEvents - Version 1.0 - specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion). | +| [id](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id) | String | REQUIRED | Uniquely identifies an event, see [CloudEvents - Version 1.0 - id](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id). | +| [source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1) | String | REQUIRED | Identifies the context in which an event happened, see [CloudEvents - Version 1.0 - source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1). A use-case could be if you have conflicting types across different sources. For example, a `type:OrderProcessed` originating from both `order-service` and `shipping-service`. In this case, the `source` field provides means to clearly separate between the origins of a particular event. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | +| [type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | String | REQUIRED | This attribute contains a value describing the type of event related to the originating occurrence, see [CloudEvents - Version 1.0 - type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type). Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. The value `camunda` cannot be used for this field. | +| [time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | [Timestamp](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type-system) | OPTIONAL | Timestamp of when the occurrence happened, see [CloudEvents - Version 1.0 - time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#time). String encoding: [RFC 3339](https://tools.ietf.org/html/rfc3339). If not present, a default value of the time the event was received will be created. | +| [data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data) | Object | OPTIONAL | Event payload data that is part of the event, see [CloudEvents - Version 1.0 - Event Data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data). This CloudEvents Consumer API only accepts data encoded as `application/json`, the optional attribute [CloudEvents - Version 1.0 - datacontenttype](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is thus not required to be provided by the producer. Furthermore, there are no schema restrictions on the `data` attribute and thus the attribute [CloudEvents - Version 1.0 - dataschema](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is also not required to be provided. Producer may provide any valid JSON object, but only simple properties of that object will get converted to variables of a process instances of an [event-based process](#) instance later on. | +| group | String | OPTIONAL | This is an OPTIONAL [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A group identifier that may allow to easier identify a group of related events for a user at the stage of mapping events to a process model. An example could be a domain of events that are most likely related to each other; for example, `billing`. When this field is provided, it will be used to allow adding events that belong to a group to the [mapping table](##external-events). Optimize handles groups case-sensitively. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | +| traceid | String | REQUIRED | This is a REQUIRED [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A traceid is a correlation key that relates multiple events to a single business transaction or process instance in BPMN terms. Events with the same traceid will get correlated into one process instance of an Event Based Process. | -The following is an example of a valid propertie's `data` value. Each of those properties would be available as a variable in any [event-based process](self-managed/optimize-deployment/configuration/setup-event-based-processes.md) where an event containing this as `data` was mapped: +The following is an example of a valid propertie's `data` value. Each of those properties would be available as a variable in any [event-based process](#) where an event containing this as `data` was mapped: ``` { @@ -85,14 +85,14 @@ This method returns no content. Possible HTTP response status codes: -| Code | Description | -| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 204 | Request successful | -| 400 | Returned if some of the properties in the request body are invalid or missing. | -| 401 | Secret incorrect or missing in HTTP Header `Authorization`. See [Authorization](#authorization) on how to authenticate. | -| 403 | The Event Based Process feature is not enabled. | -| 429 | The maximum number of requests that can be serviced at any time has been reached. The response will include a `Retry-After` HTTP header specifying the recommended number of seconds before the request should be retried. See [Configuration](self-managed/optimize-deployment/configuration/event-based-processes.md#event-ingestion-rest-api-configuration) for information on how to configure this limit. | -| 500 | Some error occurred while processing the ingested event, best check the Optimize log. | +| Code | Description | +| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 204 | Request successful | +| 400 | Returned if some of the properties in the request body are invalid or missing. | +| 401 | Secret incorrect or missing in HTTP Header `Authorization`. See [Authorization](#authorization) on how to authenticate. | +| 403 | The Event Based Process feature is not enabled. | +| 429 | The maximum number of requests that can be serviced at any time has been reached. The response will include a `Retry-After` HTTP header specifying the recommended number of seconds before the request should be retried. See [Configuration](##event-ingestion-rest-api-configuration) for information on how to configure this limit. | +| 500 | Some error occurred while processing the ingested event, best check the Optimize log. | ## Example diff --git a/optimize_versioned_docs/version-3.13.0/components/userguide/additional-features/event-based-processes.md b/optimize_versioned_docs/version-3.13.0/components/userguide/additional-features/event-based-processes.md index f8198a5fd61..3b680c17934 100644 --- a/optimize_versioned_docs/version-3.13.0/components/userguide/additional-features/event-based-processes.md +++ b/optimize_versioned_docs/version-3.13.0/components/userguide/additional-features/event-based-processes.md @@ -15,12 +15,12 @@ Once the event-based process feature is correctly configured, you will see a new :::note When Camunda activity events are used in event-based processes, Camunda admin authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](#publishing-an-event-based-process) or at any time via the [edit access option](#event-based-process-list---edit-access) in the event-based process list. -Visit our [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md) on authorization management and event-based processes for the reasoning behind this behavior. +Visit our [technical guide](/#) on authorization management and event-based processes for the reasoning behind this behavior. ::: ## Set up -You need to set up the event-based processes feature to make use of this feature. See the [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md) for more information. +You need to set up the event-based processes feature to make use of this feature. See the [technical guide](/#) for more information. ## Event-based process list @@ -104,7 +104,7 @@ Defining the `group` property when ingesting the events will allow selecting eve These are events generated from an existing Camunda BPMN process. Only processes for which Optimize has imported at least one event will be visible for selection. This means the process has to have at least one instance and Optimize has to have been configured to import data from that process. -See the [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md#use-camunda-activity-event-sources-for-event-based-processes) for more information on how this is configured. +See the [technical guide](/##use-camunda-activity-event-sources-for-event-based-processes) for more information on how this is configured. To add such events, provide the following details: diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/authorization-management.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/authorization-management.md index d26c080356e..b3cc86dc2e9 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/authorization-management.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/authorization-management.md @@ -6,7 +6,7 @@ description: "Define which data users are authorized to see." Camunda 7 only -User authorization management differs depending on whether the entities to manage the authorizations for are originating from adjacent systems like imported data from connected Camunda-BPM engines such as process instances, or whether the entities are fully managed by Camunda Optimize, such as [event-based processes and instances](components/userguide/additional-features/event-based-processes.md) or [collections](components/userguide/collections-dashboards-reports.md). For entities originating from adjacent systems authorizations are managed in the Camunda 7 via Camunda Admin, for the latter the authorizations are managed in Camunda Optimize. +User authorization management differs depending on whether the entities to manage the authorizations for are originating from adjacent systems like imported data from connected Camunda-BPM engines such as process instances, or whether the entities are fully managed by Camunda Optimize, such as [event-based processes and instances](#) or [collections](components/userguide/collections-dashboards-reports.md). For entities originating from adjacent systems authorizations are managed in the Camunda 7 via Camunda Admin, for the latter the authorizations are managed in Camunda Optimize. ## Camunda 7 data authorizations @@ -50,4 +50,4 @@ There are entities that only exist in Camunda Optimize and authorizations to the Camunda 7 only -Although [event-based processes](components/userguide/additional-features/event-based-processes.md) may include data originating from adjacent systems like the Camunda Engine when using [Camunda Activity Event Sources](components/userguide/additional-features/event-based-processes.md#event-sources), they do not enforce any authorizations from Camunda Admin. The reason for that is that multiple sources can get combined in a single [event-based process](components/userguide/additional-features/event-based-processes.md) that may contain conflicting authorizations. It is thus required to authorize users or groups to [event-based processes](components/userguide/additional-features/event-based-processes.md) either directly when [publishing](components/userguide/additional-features/event-based-processes.md#publishing-an-event-based-process) them or later on via the [event-based process - Edit Access](components/userguide/additional-features/event-based-processes.md#event-based-process-list---edit-access) option. +Although [event-based processes](#) may include data originating from adjacent systems like the Camunda Engine when using [Camunda Activity Event Sources](##event-sources), they do not enforce any authorizations from Camunda Admin. The reason for that is that multiple sources can get combined in a single [event-based process](#) that may contain conflicting authorizations. It is thus required to authorize users or groups to [event-based processes](#) either directly when [publishing](##publishing-an-event-based-process) them or later on via the [event-based process - Edit Access](##event-based-process-list---edit-access) option. diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/clustering.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/clustering.md index 752e83f08fc..63c01b06b24 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/clustering.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/clustering.md @@ -65,9 +65,9 @@ The importing instance has the [history cleanup enabled](./system-configuration. In the context of event-based process import and clustering, there are two additional configuration properties to consider carefully. -One is specific to each configured Camunda engine [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) and controls whether data from this engine is imported as event source data as well for [event-based processes](components/userguide/additional-features/event-based-processes.md). You need to enable this on the same cluster node for which the [`engines.${engineAlias}.importEnabled`](./system-configuration-platform-7.md) configuration flag is set to `true`. +One is specific to each configured Camunda engine [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) and controls whether data from this engine is imported as event source data as well for [event-based processes](#). You need to enable this on the same cluster node for which the [`engines.${engineAlias}.importEnabled`](./system-configuration-platform-7.md) configuration flag is set to `true`. -[`eventBasedProcess.eventImport.enabled`](./setup-event-based-processes.md) controls whether the particular cluster node processes events to create event based process instances. This allows you to run a dedicated node that performs this operation, while other nodes might just feed in Camunda activity events. +[`eventBasedProcess.eventImport.enabled`](#) controls whether the particular cluster node processes events to create event based process instances. This allows you to run a dedicated node that performs this operation, while other nodes might just feed in Camunda activity events. ### 2. Distributed user sessions - configure shared secret token diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/common-problems.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/common-problems.md index 8fb78a97860..ff425d78843 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/common-problems.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/common-problems.md @@ -8,7 +8,7 @@ This section aims to provide initial help to troubleshoot common issues. This gu ## Optimize is missing some or all definitions -It is possible that the user you are logged in as does not have the relevant authorizations to view all definitions in Optimize. Refer to the [authorization management section](./authorization-management.md#process-or-decision-definition-related-authorizations) to confirm the user has all required authorizations. +It is possible that the user you are logged in as does not have the relevant authorizations to view all definitions in Optimize. Refer to the [authorization management section](##process-or-decision-definition-related-authorizations) to confirm the user has all required authorizations. Another common cause for this type of problem are issues with Optimize's data import, for example due to underlying problems with the engine data. In this case, the Optimize logs should contain more information on what is causing Optimize to not import the definition data correctly. If you are unsure on how to interpret what you find in the logs, create a support ticket. diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/event-based-processes.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/event-based-processes.md index efc9f48f2f4..bf7b722bc6f 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/event-based-processes.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/event-based-processes.md @@ -21,7 +21,7 @@ Configuration of the Optimize event-based process feature. Camunda 7 only -Configuration of the Optimize [event ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](components/userguide/additional-features/event-based-processes.md). +Configuration of the Optimize [event ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](#). | YAML path | Default value | Description | | ----------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/history-cleanup.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/history-cleanup.md index 773b1824d82..bec76181dd8 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/history-cleanup.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/history-cleanup.md @@ -113,7 +113,7 @@ historyCleanup: ``` :::note -The ingested event cleanup does not cascade down to potentially existing [event-based processes](components/userguide/additional-features/event-based-processes.md) that may contain data originating from ingested events. To make sure data of ingested events is also removed from event-based processes, you need to enable the [Process Data Cleanup](#process-data-cleanup) as well. +The ingested event cleanup does not cascade down to potentially existing [event-based processes](#) that may contain data originating from ingested events. To make sure data of ingested events is also removed from event-based processes, you need to enable the [Process Data Cleanup](#process-data-cleanup) as well. ::: diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/multiple-engines.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/multiple-engines.md index 10fb4c5074f..a2db8bb9dc0 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/multiple-engines.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/multiple-engines.md @@ -80,7 +80,7 @@ In general, tests have shown that Optimize puts a very low strain on the engine ## Authentication and authorization in the multiple engine setup When you configure multiple engines in Optimize, each process engine can host different users with a different set of authorizations. If a user is logging in, Optimize will try to authenticate and authorize the user on each configured engine. In case you are not familiar with how -the authorization/authentication works for a single engine scenario, visit the [User Access Management](./user-management.md) and [Authorization Management](./authorization-management.md) documentation first. +the authorization/authentication works for a single engine scenario, visit the [User Access Management](./user-management.md) and [Authorization Management](#) documentation first. To determine if a user is allowed to log in and which resources they are allowed to access within the multiple engine scenario, Optimize uses the following algorithm: diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/security-instructions.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/security-instructions.md index e8884e7055d..447c924effe 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/security-instructions.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/security-instructions.md @@ -55,7 +55,7 @@ Authentication controls who can access Optimize. Read all about how to restrict Camunda 7 only -Authorization controls what data a user can access and change in Optimize once authenticated. Authentication is a prerequisite to authorization. Read all about how to restrict the data access in the [authorization management guide](./authorization-management.md). +Authorization controls what data a user can access and change in Optimize once authenticated. Authentication is a prerequisite to authorization. Read all about how to restrict the data access in the [authorization management guide](#). diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md index fd4d98ac99f..d9f2f2243db 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md @@ -33,12 +33,12 @@ A full configuration example authorizing the user `demo` and all members of the ## Use Camunda activity event sources for event based processes :::note Authorization to event-based processes -When Camunda activity events are used in event-based processes, Camunda Admin Authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](components/userguide/additional-features/event-based-processes.md#publishing-an-event-based-process) or at any time via the [Edit Access Option](components/userguide/additional-features/event-based-processes.md#event-based-process-list---edit-access) in the event-based process List. +When Camunda activity events are used in event-based processes, Camunda Admin Authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](##publishing-an-event-based-process) or at any time via the [Edit Access Option](##event-based-process-list---edit-access) in the event-based process List. -Visit [Authorization Management - event-based process](./authorization-management.md#event-based-processes) for the reasoning behind this behavior. +Visit [Authorization Management - event-based process](##event-based-processes) for the reasoning behind this behavior. ::: -To publish event-based processes that include [Camunda Event Sources](components/userguide/additional-features/event-based-processes.md#camunda-events), it is required to set [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) to `true` for the connected engine the Camunda process originates from. +To publish event-based processes that include [Camunda Event Sources](##camunda-events), it is required to set [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) to `true` for the connected engine the Camunda process originates from. :::note Heads Up! You need to [reimport data](./../migration-update/instructions.md#force-reimport-of-engine-data-in-optimize) from this engine to have all historic Camunda events available for event-based processes. Otherwise, only new events will be included. diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/system-configuration.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/system-configuration.md index 9a871dd74d7..b8a6a66b722 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/system-configuration.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/system-configuration.md @@ -88,8 +88,8 @@ These values control mechanisms of Optimize related security, e.g. security head | | | security.auth.token.lifeMin | 60 | Optimize uses token-based authentication to keep track of which users are logged in. Define the lifetime of the token in minutes. | | security.auth.token.secret | null | Optional secret used to sign authentication tokens, it's recommended to use at least a 64-character secret. If set to `null` a random secret will be generated with each startup of Optimize. | -| security.auth.superUserIds | [ ] | List of user IDs that are granted full permission to all collections, reports, and dashboards.

Note: For reports, these users are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](./authorization-management.md). | -| security.auth.superGroupIds | [ ] | List of group IDs that are granted full permission to all collections, reports, and dashboards. All members of the groups specified will have superuser permissions in Optimize.

Note: For reports, these groups are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](./authorization-management.md). | +| security.auth.superUserIds | [ ] | List of user IDs that are granted full permission to all collections, reports, and dashboards.

Note: For reports, these users are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](#). | +| security.auth.superGroupIds | [ ] | List of group IDs that are granted full permission to all collections, reports, and dashboards. All members of the groups specified will have superuser permissions in Optimize.

Note: For reports, these groups are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](#). | | security.responseHeaders.HSTS.max-age | 63072000 | HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. This field defines the time, in seconds, that the browser should remember that this site is only to be accessed using HTTPS. If you set the number to a negative value no HSTS header is sent. | | security.responseHeaders.HSTS.includeSubDomains | true | HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. If this optional parameter is specified, this rule applies to all the site’s subdomains as well. | | security.responseHeaders.X-XSS-Protection | 1; mode=block | This header enables the cross-site scripting (XSS) filter in your browser. Can have one of the following options:
  • `0`: Filter disabled.
  • `1`: Filter enabled. If a cross-site scripting attack is detected, in order to stop the attack, the browser will sanitize the page.
  • `1; mode=block`: Filter enabled. Rather than sanitize the page, when a XSS attack is detected, the browser will prevent rendering of the page.
  • `1; report=http://[YOURDOMAIN]/your_report_URI`: Filter enabled. The browser will sanitize the page and report the violation. This is a Chromium function utilizing CSP violation reports to send details to a URI of your choice.
| diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/user-management.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/user-management.md index 001faa9d4cc..7dbdedb0485 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/user-management.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/user-management.md @@ -10,7 +10,7 @@ description: "Define which users have access to Optimize." Providing Optimize access to a user just enables them to log in to Optimize. To be able to create reports, the user also needs to have permission to access the engine data. To see -how this can be done, refer to the [Authorization Management](./authorization-management.md) section. +how this can be done, refer to the [Authorization Management](#) section. ::: You can use the credentials from the Camunda 7 users to access Optimize. However, for the users to gain access to Optimize, they need to be authorized. This is not done in Optimize itself, but needs to be configured in the Camunda 7 and can be achieved on different levels with different options. If you do not know how authorization in Camunda works, visit the [authorization service documentation](https://docs.camunda.org/manual/latest/user-guide/process-engine/authorization-service/). diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/install-and-start.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/install-and-start.md index 9bdf27e3864..3090dcedcfa 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/install-and-start.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/install-and-start.md @@ -125,7 +125,7 @@ The most important environment variables you may have to configure are related t A complete sample can be found within [Connect to remote Camunda 7 and Elasticsearch](#connect-to-remote-camunda-platform-7-and-elasticsearch). -Furthermore, there are also environment variables specific to the [event-based process](components/userguide/additional-features/event-based-processes.md) feature you may make use of: +Furthermore, there are also environment variables specific to the [event-based process](#) feature you may make use of: - `OPTIMIZE_CAMUNDA_BPM_EVENT_IMPORT_ENABLED`: Determines whether this instance of Optimize should convert historical data to event data usable for event-based processes (default: `false`) - `OPTIMIZE_EVENT_BASED_PROCESSES_USER_IDS`: An array of user ids that are authorized to administer event-based processes (default: `[]`) diff --git a/optimize_versioned_docs/version-3.14.0/apis-tools/optimize-api/event-ingestion.md b/optimize_versioned_docs/version-3.14.0/apis-tools/optimize-api/event-ingestion.md index a5a356dd4b7..4e00319fabf 100644 --- a/optimize_versioned_docs/version-3.14.0/apis-tools/optimize-api/event-ingestion.md +++ b/optimize_versioned_docs/version-3.14.0/apis-tools/optimize-api/event-ingestion.md @@ -6,7 +6,7 @@ description: "The REST API to ingest external events into Optimize." Camunda 7 only -The Event Ingestion REST API ingests business process related event data from any third-party system to Camunda Optimize. These events can then be correlated into an [event-based process](components/userguide/additional-features/event-based-processes.md) in Optimize to get business insights into business processes that are not yet fully modeled nor automated using Camunda 7. +The Event Ingestion REST API ingests business process related event data from any third-party system to Camunda Optimize. These events can then be correlated into an [event-based process](#) in Optimize to get business insights into business processes that are not yet fully modeled nor automated using Camunda 7. ## Functionality @@ -45,18 +45,18 @@ The following request headers have to be provided with every ingest request: [JSON Batch Format](https://github.com/cloudevents/spec/blob/v1.0/json-format.md#4-json-batch-format) compliant JSON Array of CloudEvent JSON Objects: -| Name | Type | Constraints | Description | -| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion) | String | REQUIRED | The version of the CloudEvents specification, which the event uses, must be `1.0`. See [CloudEvents - Version 1.0 - specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion). | -| [ID](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id) | String | REQUIRED | Uniquely identifies an event, see [CloudEvents - Version 1.0 - ID](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id). | -| [source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1) | String | REQUIRED | Identifies the context in which an event happened, see [CloudEvents - Version 1.0 - source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1). A use-case could be if you have conflicting types across different sources. For example, a `type:OrderProcessed` originating from both `order-service` and `shipping-service`. In this case, the `source` field provides means to clearly separate between the origins of a particular event. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | -| [type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | String | REQUIRED | This attribute contains a value describing the type of event related to the originating occurrence, see [CloudEvents - Version 1.0 - type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type). Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. The value `camunda` cannot be used for this field. | -| [time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | [Timestamp](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type-system) | OPTIONAL | Timestamp of when the occurrence happened, see [CloudEvents - Version 1.0 - time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#time). String encoding: [RFC 3339](https://tools.ietf.org/html/rfc3339). If not present, a default value of the time the event was received will be created. | -| [data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data) | Object | OPTIONAL | Event payload data that is part of the event, see [CloudEvents - Version 1.0 - Event Data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data). This CloudEvents Consumer API only accepts data encoded as `application/json`, the optional attribute [CloudEvents - Version 1.0 - datacontenttype](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is thus not required to be provided by the producer. Furthermore, there are no schema restrictions on the `data` attribute and thus the attribute [CloudEvents - Version 1.0 - dataschema](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is also not required to be provided. Producer may provide any valid JSON object, but only simple properties of that object will get converted to variables of a process instances of an [event-based process](self-managed/optimize-deployment/configuration/setup-event-based-processes.md) instance later on. | -| group | String | OPTIONAL | This is an OPTIONAL [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A group identifier that may allow to easier identify a group of related events for a user at the stage of mapping events to a process model. An example could be a domain of events that are most likely related to each other; for example, `billing`. When this field is provided, it will be used to allow adding events that belong to a group to the [mapping table](components/userguide/additional-features/event-based-processes.md#external-events). Optimize handles groups case-sensitively. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | -| traceid | String | REQUIRED | This is a REQUIRED [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A traceid is a correlation key that relates multiple events to a single business transaction or process instance in BPMN terms. Events with the same traceid will get correlated into one process instance of an Event Based Process. | +| Name | Type | Constraints | Description | +| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion) | String | REQUIRED | The version of the CloudEvents specification, which the event uses, must be `1.0`. See [CloudEvents - Version 1.0 - specversion](https://github.com/cloudevents/spec/blob/v1.0/spec.md#specversion). | +| [ID](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id) | String | REQUIRED | Uniquely identifies an event, see [CloudEvents - Version 1.0 - ID](https://github.com/cloudevents/spec/blob/v1.0/spec.md#id). | +| [source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1) | String | REQUIRED | Identifies the context in which an event happened, see [CloudEvents - Version 1.0 - source](https://github.com/cloudevents/spec/blob/v1.0/spec.md#source-1). A use-case could be if you have conflicting types across different sources. For example, a `type:OrderProcessed` originating from both `order-service` and `shipping-service`. In this case, the `source` field provides means to clearly separate between the origins of a particular event. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | +| [type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | String | REQUIRED | This attribute contains a value describing the type of event related to the originating occurrence, see [CloudEvents - Version 1.0 - type](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type). Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. The value `camunda` cannot be used for this field. | +| [time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type) | [Timestamp](https://github.com/cloudevents/spec/blob/v1.0/spec.md#type-system) | OPTIONAL | Timestamp of when the occurrence happened, see [CloudEvents - Version 1.0 - time](https://github.com/cloudevents/spec/blob/v1.0/spec.md#time). String encoding: [RFC 3339](https://tools.ietf.org/html/rfc3339). If not present, a default value of the time the event was received will be created. | +| [data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data) | Object | OPTIONAL | Event payload data that is part of the event, see [CloudEvents - Version 1.0 - Event Data](https://github.com/cloudevents/spec/blob/v1.0/spec.md#event-data). This CloudEvents Consumer API only accepts data encoded as `application/json`, the optional attribute [CloudEvents - Version 1.0 - datacontenttype](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is thus not required to be provided by the producer. Furthermore, there are no schema restrictions on the `data` attribute and thus the attribute [CloudEvents - Version 1.0 - dataschema](https://github.com/cloudevents/spec/blob/v1.0/spec.md#datacontenttype) is also not required to be provided. Producer may provide any valid JSON object, but only simple properties of that object will get converted to variables of a process instances of an [event-based process](#) instance later on. | +| group | String | OPTIONAL | This is an OPTIONAL [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A group identifier that may allow to easier identify a group of related events for a user at the stage of mapping events to a process model. An example could be a domain of events that are most likely related to each other; for example, `billing`. When this field is provided, it will be used to allow adding events that belong to a group to the [mapping table](##external-events). Optimize handles groups case-sensitively. Note: The triplet of `type`, `source`, and `group` will be used as a unique identifier for classes of events. | +| traceid | String | REQUIRED | This is a REQUIRED [CloudEvents Extension Context Attribute](https://github.com/cloudevents/spec/blob/v1.0/spec.md#extension-context-attributes) that is specific to this API. A traceid is a correlation key that relates multiple events to a single business transaction or process instance in BPMN terms. Events with the same traceid will get correlated into one process instance of an Event Based Process. | -The following is an example of a valid propertie's `data` value. Each of those properties would be available as a variable in any [event-based process](self-managed/optimize-deployment/configuration/setup-event-based-processes.md) where an event containing this as `data` was mapped: +The following is an example of a valid propertie's `data` value. Each of those properties would be available as a variable in any [event-based process](#) where an event containing this as `data` was mapped: ``` { @@ -85,14 +85,14 @@ This method returns no content. Possible HTTP response status codes: -| Code | Description | -| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 204 | Request successful | -| 400 | Returned if some of the properties in the request body are invalid or missing. | -| 401 | Secret incorrect or missing in HTTP Header `Authorization`. See [Authorization](#authorization) on how to authenticate. | -| 403 | The Event Based Process feature is not enabled. | -| 429 | The maximum number of requests that can be serviced at any time has been reached. The response will include a `Retry-After` HTTP header specifying the recommended number of seconds before the request should be retried. See [Configuration](self-managed/optimize-deployment/configuration/event-based-processes.md#event-ingestion-rest-api-configuration) for information on how to configure this limit. | -| 500 | Some error occurred while processing the ingested event, best check the Optimize log. | +| Code | Description | +| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 204 | Request successful | +| 400 | Returned if some of the properties in the request body are invalid or missing. | +| 401 | Secret incorrect or missing in HTTP Header `Authorization`. See [Authorization](#authorization) on how to authenticate. | +| 403 | The Event Based Process feature is not enabled. | +| 429 | The maximum number of requests that can be serviced at any time has been reached. The response will include a `Retry-After` HTTP header specifying the recommended number of seconds before the request should be retried. See [Configuration](##event-ingestion-rest-api-configuration) for information on how to configure this limit. | +| 500 | Some error occurred while processing the ingested event, best check the Optimize log. | ## Example diff --git a/optimize_versioned_docs/version-3.14.0/components/userguide/additional-features/event-based-processes.md b/optimize_versioned_docs/version-3.14.0/components/userguide/additional-features/event-based-processes.md index f8198a5fd61..3b680c17934 100644 --- a/optimize_versioned_docs/version-3.14.0/components/userguide/additional-features/event-based-processes.md +++ b/optimize_versioned_docs/version-3.14.0/components/userguide/additional-features/event-based-processes.md @@ -15,12 +15,12 @@ Once the event-based process feature is correctly configured, you will see a new :::note When Camunda activity events are used in event-based processes, Camunda admin authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](#publishing-an-event-based-process) or at any time via the [edit access option](#event-based-process-list---edit-access) in the event-based process list. -Visit our [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md) on authorization management and event-based processes for the reasoning behind this behavior. +Visit our [technical guide](/#) on authorization management and event-based processes for the reasoning behind this behavior. ::: ## Set up -You need to set up the event-based processes feature to make use of this feature. See the [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md) for more information. +You need to set up the event-based processes feature to make use of this feature. See the [technical guide](/#) for more information. ## Event-based process list @@ -104,7 +104,7 @@ Defining the `group` property when ingesting the events will allow selecting eve These are events generated from an existing Camunda BPMN process. Only processes for which Optimize has imported at least one event will be visible for selection. This means the process has to have at least one instance and Optimize has to have been configured to import data from that process. -See the [technical guide](/self-managed/optimize-deployment/configuration/setup-event-based-processes.md#use-camunda-activity-event-sources-for-event-based-processes) for more information on how this is configured. +See the [technical guide](/##use-camunda-activity-event-sources-for-event-based-processes) for more information on how this is configured. To add such events, provide the following details: diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/authorization-management.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/authorization-management.md index d26c080356e..b3cc86dc2e9 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/authorization-management.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/authorization-management.md @@ -6,7 +6,7 @@ description: "Define which data users are authorized to see." Camunda 7 only -User authorization management differs depending on whether the entities to manage the authorizations for are originating from adjacent systems like imported data from connected Camunda-BPM engines such as process instances, or whether the entities are fully managed by Camunda Optimize, such as [event-based processes and instances](components/userguide/additional-features/event-based-processes.md) or [collections](components/userguide/collections-dashboards-reports.md). For entities originating from adjacent systems authorizations are managed in the Camunda 7 via Camunda Admin, for the latter the authorizations are managed in Camunda Optimize. +User authorization management differs depending on whether the entities to manage the authorizations for are originating from adjacent systems like imported data from connected Camunda-BPM engines such as process instances, or whether the entities are fully managed by Camunda Optimize, such as [event-based processes and instances](#) or [collections](components/userguide/collections-dashboards-reports.md). For entities originating from adjacent systems authorizations are managed in the Camunda 7 via Camunda Admin, for the latter the authorizations are managed in Camunda Optimize. ## Camunda 7 data authorizations @@ -50,4 +50,4 @@ There are entities that only exist in Camunda Optimize and authorizations to the Camunda 7 only -Although [event-based processes](components/userguide/additional-features/event-based-processes.md) may include data originating from adjacent systems like the Camunda Engine when using [Camunda Activity Event Sources](components/userguide/additional-features/event-based-processes.md#event-sources), they do not enforce any authorizations from Camunda Admin. The reason for that is that multiple sources can get combined in a single [event-based process](components/userguide/additional-features/event-based-processes.md) that may contain conflicting authorizations. It is thus required to authorize users or groups to [event-based processes](components/userguide/additional-features/event-based-processes.md) either directly when [publishing](components/userguide/additional-features/event-based-processes.md#publishing-an-event-based-process) them or later on via the [event-based process - Edit Access](components/userguide/additional-features/event-based-processes.md#event-based-process-list---edit-access) option. +Although [event-based processes](#) may include data originating from adjacent systems like the Camunda Engine when using [Camunda Activity Event Sources](##event-sources), they do not enforce any authorizations from Camunda Admin. The reason for that is that multiple sources can get combined in a single [event-based process](#) that may contain conflicting authorizations. It is thus required to authorize users or groups to [event-based processes](#) either directly when [publishing](##publishing-an-event-based-process) them or later on via the [event-based process - Edit Access](##event-based-process-list---edit-access) option. diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/clustering.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/clustering.md index 752e83f08fc..63c01b06b24 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/clustering.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/clustering.md @@ -65,9 +65,9 @@ The importing instance has the [history cleanup enabled](./system-configuration. In the context of event-based process import and clustering, there are two additional configuration properties to consider carefully. -One is specific to each configured Camunda engine [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) and controls whether data from this engine is imported as event source data as well for [event-based processes](components/userguide/additional-features/event-based-processes.md). You need to enable this on the same cluster node for which the [`engines.${engineAlias}.importEnabled`](./system-configuration-platform-7.md) configuration flag is set to `true`. +One is specific to each configured Camunda engine [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) and controls whether data from this engine is imported as event source data as well for [event-based processes](#). You need to enable this on the same cluster node for which the [`engines.${engineAlias}.importEnabled`](./system-configuration-platform-7.md) configuration flag is set to `true`. -[`eventBasedProcess.eventImport.enabled`](./setup-event-based-processes.md) controls whether the particular cluster node processes events to create event based process instances. This allows you to run a dedicated node that performs this operation, while other nodes might just feed in Camunda activity events. +[`eventBasedProcess.eventImport.enabled`](#) controls whether the particular cluster node processes events to create event based process instances. This allows you to run a dedicated node that performs this operation, while other nodes might just feed in Camunda activity events. ### 2. Distributed user sessions - configure shared secret token diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/common-problems.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/common-problems.md index dbda43dfbfa..e4e60c861be 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/common-problems.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/common-problems.md @@ -8,7 +8,7 @@ This section aims to provide initial help to troubleshoot common issues. This gu ## Optimize is missing some or all definitions -It is possible that the user you are logged in as does not have the relevant authorizations to view all definitions in Optimize. Refer to the [authorization management section](./authorization-management.md#process-or-decision-definition-related-authorizations) to confirm the user has all required authorizations. +It is possible that the user you are logged in as does not have the relevant authorizations to view all definitions in Optimize. Refer to the [authorization management section](##process-or-decision-definition-related-authorizations) to confirm the user has all required authorizations. Another common cause for this type of problem are issues with Optimize's data import, for example due to underlying problems with the engine data. In this case, the Optimize logs should contain more information on what is causing Optimize to not import the definition data correctly. If you are unsure on how to interpret what you find in the logs, create a support ticket. diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/event-based-processes.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/event-based-processes.md index efc9f48f2f4..bf7b722bc6f 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/event-based-processes.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/event-based-processes.md @@ -21,7 +21,7 @@ Configuration of the Optimize event-based process feature. Camunda 7 only -Configuration of the Optimize [event ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](components/userguide/additional-features/event-based-processes.md). +Configuration of the Optimize [event ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](#). | YAML path | Default value | Description | | ----------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/history-cleanup.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/history-cleanup.md index 773b1824d82..bec76181dd8 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/history-cleanup.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/history-cleanup.md @@ -113,7 +113,7 @@ historyCleanup: ``` :::note -The ingested event cleanup does not cascade down to potentially existing [event-based processes](components/userguide/additional-features/event-based-processes.md) that may contain data originating from ingested events. To make sure data of ingested events is also removed from event-based processes, you need to enable the [Process Data Cleanup](#process-data-cleanup) as well. +The ingested event cleanup does not cascade down to potentially existing [event-based processes](#) that may contain data originating from ingested events. To make sure data of ingested events is also removed from event-based processes, you need to enable the [Process Data Cleanup](#process-data-cleanup) as well. ::: diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/multiple-engines.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/multiple-engines.md index 10fb4c5074f..a2db8bb9dc0 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/multiple-engines.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/multiple-engines.md @@ -80,7 +80,7 @@ In general, tests have shown that Optimize puts a very low strain on the engine ## Authentication and authorization in the multiple engine setup When you configure multiple engines in Optimize, each process engine can host different users with a different set of authorizations. If a user is logging in, Optimize will try to authenticate and authorize the user on each configured engine. In case you are not familiar with how -the authorization/authentication works for a single engine scenario, visit the [User Access Management](./user-management.md) and [Authorization Management](./authorization-management.md) documentation first. +the authorization/authentication works for a single engine scenario, visit the [User Access Management](./user-management.md) and [Authorization Management](#) documentation first. To determine if a user is allowed to log in and which resources they are allowed to access within the multiple engine scenario, Optimize uses the following algorithm: diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/security-instructions.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/security-instructions.md index b0ff9980154..23d56f89f73 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/security-instructions.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/security-instructions.md @@ -55,7 +55,7 @@ Authentication controls who can access Optimize. Read all about how to restrict Camunda 7 only -Authorization controls what data a user can access and change in Optimize once authenticated. Authentication is a prerequisite to authorization. Read all about how to restrict the data access in the [authorization management guide](./authorization-management.md). +Authorization controls what data a user can access and change in Optimize once authenticated. Authentication is a prerequisite to authorization. Read all about how to restrict the data access in the [authorization management guide](#). diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md index 7109c5567f5..6e6d2562da4 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/setup-event-based-processes.md @@ -33,12 +33,12 @@ A full configuration example authorizing the user `demo` and all members of the ## Use Camunda activity event sources for event based processes :::note Authorization to event-based processes -When Camunda activity events are used in event-based processes, Camunda Admin Authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](components/userguide/additional-features/event-based-processes.md#publishing-an-event-based-process) or at any time via the [Edit Access Option](components/userguide/additional-features/event-based-processes.md#event-based-process-list---edit-access) in the event-based process List. +When Camunda activity events are used in event-based processes, Camunda Admin Authorizations are not inherited for the event-based process. The authorization to use an event-based process is solely managed via the access management of event-based processes when [publishing an event-based process](##publishing-an-event-based-process) or at any time via the [Edit Access Option](##event-based-process-list---edit-access) in the event-based process List. -Visit [Authorization Management - event-based process](./authorization-management.md#event-based-processes) for the reasoning behind this behavior. +Visit [Authorization Management - event-based process](##event-based-processes) for the reasoning behind this behavior. ::: -To publish event-based processes that include [Camunda Event Sources](components/userguide/additional-features/event-based-processes.md#camunda-events), it is required to set [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) to `true` for the connected engine the Camunda process originates from. +To publish event-based processes that include [Camunda Event Sources](##camunda-events), it is required to set [`engines.${engineAlias}.eventImportEnabled`](./system-configuration-platform-7.md) to `true` for the connected engine the Camunda process originates from. :::note Heads Up! You need to [reimport data](./../migration-update/camunda-7/instructions.md#force-reimport-of-engine-data-in-optimize) from this engine to have all historic Camunda events available for event-based processes. Otherwise, only new events will be included. diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/system-configuration.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/system-configuration.md index 22b7c67c0e9..90f3580f9f1 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/system-configuration.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/system-configuration.md @@ -88,8 +88,8 @@ These values control mechanisms of Optimize related security, e.g. security head | | | security.auth.token.lifeMin | 60 | Optimize uses token-based authentication to keep track of which users are logged in. Define the lifetime of the token in minutes. | | security.auth.token.secret | null | Optional secret used to sign authentication tokens, it's recommended to use at least a 64-character secret. If set to `null` a random secret will be generated with each startup of Optimize. | -| security.auth.superUserIds | [ ] | List of user IDs that are granted full permission to all collections, reports, and dashboards.

Note: For reports, these users are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](./authorization-management.md). | -| security.auth.superGroupIds | [ ] | List of group IDs that are granted full permission to all collections, reports, and dashboards. All members of the groups specified will have superuser permissions in Optimize.

Note: For reports, these groups are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](./authorization-management.md). | +| security.auth.superUserIds | [ ] | List of user IDs that are granted full permission to all collections, reports, and dashboards.

Note: For reports, these users are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](#). | +| security.auth.superGroupIds | [ ] | List of group IDs that are granted full permission to all collections, reports, and dashboards. All members of the groups specified will have superuser permissions in Optimize.

Note: For reports, these groups are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](#). | | security.responseHeaders.HSTS.max-age | 63072000 | HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. This field defines the time, in seconds, that the browser should remember that this site is only to be accessed using HTTPS. If you set the number to a negative value no HSTS header is sent. | | security.responseHeaders.HSTS.includeSubDomains | true | HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. If this optional parameter is specified, this rule applies to all the site’s subdomains as well. | | security.responseHeaders.X-XSS-Protection | 1; mode=block | This header enables the cross-site scripting (XSS) filter in your browser. Can have one of the following options:
  • `0`: Filter disabled.
  • `1`: Filter enabled. If a cross-site scripting attack is detected, in order to stop the attack, the browser will sanitize the page.
  • `1; mode=block`: Filter enabled. Rather than sanitize the page, when a XSS attack is detected, the browser will prevent rendering of the page.
  • `1; report=http://[YOURDOMAIN]/your_report_URI`: Filter enabled. The browser will sanitize the page and report the violation. This is a Chromium function utilizing CSP violation reports to send details to a URI of your choice.
| diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/user-management.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/user-management.md index 001faa9d4cc..7dbdedb0485 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/user-management.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/user-management.md @@ -10,7 +10,7 @@ description: "Define which users have access to Optimize." Providing Optimize access to a user just enables them to log in to Optimize. To be able to create reports, the user also needs to have permission to access the engine data. To see -how this can be done, refer to the [Authorization Management](./authorization-management.md) section. +how this can be done, refer to the [Authorization Management](#) section. ::: You can use the credentials from the Camunda 7 users to access Optimize. However, for the users to gain access to Optimize, they need to be authorized. This is not done in Optimize itself, but needs to be configured in the Camunda 7 and can be achieved on different levels with different options. If you do not know how authorization in Camunda works, visit the [authorization service documentation](https://docs.camunda.org/manual/latest/user-guide/process-engine/authorization-service/). diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/install-and-start.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/install-and-start.md index 2c99ebde0ef..f86b039a148 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/install-and-start.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/install-and-start.md @@ -159,7 +159,7 @@ For an OpenSearch installation: A complete sample can be found within [Connect to remote Camunda 7 and database](#connect-to-remote-camunda-7-and-database). -Furthermore, there are also environment variables specific to the [event-based process](components/userguide/additional-features/event-based-processes.md) feature you may make use of: +Furthermore, there are also environment variables specific to the [event-based process](#) feature you may make use of: - `OPTIMIZE_CAMUNDA_BPM_EVENT_IMPORT_ENABLED`: Determines whether this instance of Optimize should convert historical data to event data usable for event-based processes (default: `false`) - `OPTIMIZE_EVENT_BASED_PROCESSES_USER_IDS`: An array of user ids that are authorized to administer event-based processes (default: `[]`) From 333c59edda89780e48f950d4501f16f6392fd63d Mon Sep 17 00:00:00 2001 From: Amara Date: Tue, 17 Dec 2024 14:23:05 -0600 Subject: [PATCH 6/9] adjust links --- .../configuration/clustering.md | 106 ------------------ .../configuration/history-cleanup.md | 2 +- .../configuration/system-configuration.md | 2 - .../migration-update/camunda-8/3.9-to-3.10.md | 2 +- optimize_sidebars.js | 1 - .../configuration/event-based-processes.md | 2 +- .../configuration/history-cleanup.md | 2 +- .../migration-update/2.7-to-3.0.md | 2 +- .../configuration/event-based-processes.md | 2 +- .../configuration/history-cleanup.md | 2 +- .../migration-update/2.7-to-3.0.md | 2 +- .../configuration/event-based-processes.md | 2 +- .../configuration/history-cleanup.md | 2 +- .../migration-update/2.7-to-3.0.md | 2 +- .../configuration/event-based-processes.md | 2 +- .../configuration/history-cleanup.md | 2 +- .../migration-update/camunda-7/2.7-to-3.0.md | 2 +- .../camunda-7/3.10-to-3.11.md | 2 +- .../migration-update/camunda-7/3.9-to-3.10.md | 2 +- .../migration-update/camunda-8/3.9-to-3.10.md | 2 +- sidebars.js | 4 - 21 files changed, 17 insertions(+), 130 deletions(-) delete mode 100644 optimize/self-managed/optimize-deployment/configuration/clustering.md diff --git a/optimize/self-managed/optimize-deployment/configuration/clustering.md b/optimize/self-managed/optimize-deployment/configuration/clustering.md deleted file mode 100644 index f6796361dd1..00000000000 --- a/optimize/self-managed/optimize-deployment/configuration/clustering.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -id: clustering -title: "Clustering" -description: "Read about how to run Optimize in a cluster." ---- - -This document describes the set up of a Camunda Optimize cluster which is mainly useful in a failover scenario, but also provides means of load-balancing in terms of distributing import and user load. - -## Configuration - -There are two configuration requirements to address in order to operate Camunda Optimize successfully in a cluster scenario. -Both of these aspects are explained in detail in the following subsections. - -### 1. Import - define importing instance - - - -Camunda 7 only - -It is important to configure the cluster in the sense that only one instance at a time is actively importing from a particular Camunda 7 engine. - -:::note Warning -If more than one instance is importing data from one and the same Camunda 7 engine concurrently, inconsistencies can occur. -::: - -The configuration property [`engines.${engineAlias}.importEnabled`](#) allows to disable the import from a particular configured engine. - -Given a simple failover cluster consisting of two instances connected to one engine, the engine configurations in the `environment-config.yaml` would look like the following: - -**Instance 1 (import from engine `default` enabled):** - -``` -... -engines: - 'camunda-bpm': - name: default - rest: 'http://localhost:8080/engine-rest' - importEnabled: true - -historyCleanup: - processDataCleanup: - enabled: true - decisionDataCleanup: - enabled: true -... -``` - -**Instance 2 (import from engine `camunda-bpm` disabled):** - -``` -... -engines: - 'camunda-bpm': - name: default - rest: 'http://localhost:8080/engine-rest' - importEnabled: false -... -``` - -:::note -The importing instance has the [history cleanup enabled](./system-configuration.md#history-cleanup-settings). It is strongly recommended all non-importing Optimize instances in the cluster do not enable history cleanup to prevent any conflicts when the [history cleanup](../history-cleanup/) is performed. -::: - -### 1.1 Import - event-based process import - - - -Camunda 7 only - -In the context of event-based process import and clustering, there are two additional configuration properties to consider carefully. - -One is specific to each configured Camunda engine [`engines.${engineAlias}.eventImportEnabled`](#) and controls whether data from this engine is imported as event source data as well for [event-based processes](#). You need to enable this on the same cluster node for which the [`engines.${engineAlias}.importEnabled`](#) configuration flag is set to `true`. - -[`eventBasedProcess.eventImport.enabled`](#) controls whether the particular cluster node processes events to create event based process instances. This allows you to run a dedicated node that performs this operation, while other nodes might just feed in Camunda activity events. - -### 2. Distributed user sessions - configure shared secret token - -If more than one Camunda Optimize instance are accessible by users for e.g. a failover scenario a shared secret token needs to be configured for all the instances. -This enables distributed sessions among all instances and users do not lose their session when being routed to another instance. - -The relevant configuration property is [`auth.token.secret`](./system-configuration.md#security) which needs to be configured in the `environment-configuration.yaml` of each Camunda Optimize instance that is part of the cluster. - -It is recommended to use a secret token with a length of at least 64 characters generated using a sufficiently good random number generator, for example the one provided by `/dev/urandom` on Linux systems. - -The following example command would generate a 64-character random string: - -``` -< /dev/urandom tr -dc A-Za-z0-9 | head -c64; echo -``` - -The corresponding `environment-config.yaml` entry would look the **same for all instances of the cluster**: - -``` -auth: - token: - secret: '' -``` - -## Example setup - -The tiniest cluster setup consisting of one importing instance from a given `default` engine and another instance where the import is disabled would look like the following: - -![Two Optimize instances](./img/Optimize-Clustering.png) - -The HTTP/S Load-Balancer would route user requests to either of the two instances, while Optimize #1 would also care about importing data from the engine to the shared -Elasticsearch instance/cluster and Optimize #2 only accesses the engine in order to authenticate and authorize users. diff --git a/optimize/self-managed/optimize-deployment/configuration/history-cleanup.md b/optimize/self-managed/optimize-deployment/configuration/history-cleanup.md index d6e95a96d2b..e7dbe7abd28 100644 --- a/optimize/self-managed/optimize-deployment/configuration/history-cleanup.md +++ b/optimize/self-managed/optimize-deployment/configuration/history-cleanup.md @@ -95,7 +95,7 @@ historyCleanup: -The age of ingested event data is determined by the [`time`](../../../apis-tools/optimize-api/event-ingestion.md#request-body) field provided for each event at the time of ingestion. +The age of ingested event data is determined by the [`time`](##request-body) field provided for each event at the time of ingestion. To enable the cleanup of event data, the `historyCleanup.ingestedEventCleanup.enabled` property needs to be set to `true`. diff --git a/optimize/self-managed/optimize-deployment/configuration/system-configuration.md b/optimize/self-managed/optimize-deployment/configuration/system-configuration.md index ee43e065d77..564826cf08b 100644 --- a/optimize/self-managed/optimize-deployment/configuration/system-configuration.md +++ b/optimize/self-managed/optimize-deployment/configuration/system-configuration.md @@ -88,8 +88,6 @@ These values control mechanisms of Optimize related security, e.g. security head | | | security.auth.token.lifeMin | 60 | Optimize uses token-based authentication to keep track of which users are logged in. Define the lifetime of the token in minutes. | | security.auth.token.secret | null | Optional secret used to sign authentication tokens, it's recommended to use at least a 64-character secret. If set to `null` a random secret will be generated with each startup of Optimize. | -| security.auth.superUserIds | [ ] | List of user IDs that are granted full permission to all collections, reports, and dashboards.

Note: For reports, these users are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](#). | -| security.auth.superGroupIds | [ ] | List of group IDs that are granted full permission to all collections, reports, and dashboards. All members of the groups specified will have superuser permissions in Optimize.

Note: For reports, these groups are still required to be granted access to the corresponding process/decision definitions in Camunda 7 Admin. See [Authorization Management](#). | | security.responseHeaders.HSTS.max-age | 63072000 | HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. This field defines the time, in seconds, that the browser should remember that this site is only to be accessed using HTTPS. If you set the number to a negative value no HSTS header is sent. | | security.responseHeaders.HSTS.includeSubDomains | true | HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. If this optional parameter is specified, this rule applies to all the site’s subdomains as well. | | security.responseHeaders.X-XSS-Protection | 1; mode=block | This header enables the cross-site scripting (XSS) filter in your browser. Can have one of the following options:
  • `0`: Filter disabled.
  • `1`: Filter enabled. If a cross-site scripting attack is detected, in order to stop the attack, the browser will sanitize the page.
  • `1; mode=block`: Filter enabled. Rather than sanitize the page, when a XSS attack is detected, the browser will prevent rendering of the page.
  • `1; report=http://[YOURDOMAIN]/your_report_URI`: Filter enabled. The browser will sanitize the page and report the violation. This is a Chromium function utilizing CSP violation reports to send details to a URI of your choice.
| diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md index 862e36c8211..89be4e8541f 100644 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md +++ b/optimize/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md @@ -49,7 +49,7 @@ From Optimize 3.10.4, the minimum version of Java that Optimize supports is now ### Plugins -From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](./../../plugins/engine-rest-filter-plugin.md) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. +From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](#) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. ### Logging diff --git a/optimize_sidebars.js b/optimize_sidebars.js index 9925dd55c28..ce96e9a90c3 100644 --- a/optimize_sidebars.js +++ b/optimize_sidebars.js @@ -2915,7 +2915,6 @@ module.exports = { "self-managed/optimize-deployment/configuration/history-cleanup", "self-managed/optimize-deployment/configuration/localization", "self-managed/optimize-deployment/configuration/object-variables", - "self-managed/optimize-deployment/configuration/clustering", "self-managed/optimize-deployment/configuration/multi-tenancy", "self-managed/optimize-deployment/configuration/common-problems", ], diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/event-based-processes.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/event-based-processes.md index bbccda648b5..30d927a052e 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/event-based-processes.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/event-based-processes.md @@ -21,7 +21,7 @@ Configuration of the Optimize event based process feature. Camunda 7 only -Configuration of the Optimize [Event Ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](#). +Configuration of the Optimize [Event Ingestion REST API](#) for [event-based processes](#). | YAML Path | Default Value | Description | | ----------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/history-cleanup.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/history-cleanup.md index 1cf50acd8c1..3363997fc80 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/history-cleanup.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/configuration/history-cleanup.md @@ -86,7 +86,7 @@ historyCleanup: ### Ingested event cleanup -The age of ingested event data is determined by the [`time`](../../../apis-tools/optimize-api/event-ingestion.md#request-body) field provided for each event at the time of ingestion. +The age of ingested event data is determined by the [`time`](##request-body) field provided for each event at the time of ingestion. To enable the cleanup of event data, the `historyCleanup.ingestedEventCleanup.enabled` property needs to be set to `true`. diff --git a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/migration-update/2.7-to-3.0.md b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/migration-update/2.7-to-3.0.md index aa3df00aabe..58477b9b4e1 100644 --- a/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/migration-update/2.7-to-3.0.md +++ b/optimize_versioned_docs/version-3.11.0/self-managed/optimize-deployment/migration-update/2.7-to-3.0.md @@ -44,7 +44,7 @@ The update should now successfully complete. ### Cannot disable import from particular engine -In 3.0.0, it is not possible to deactivate the import of a particular Optimize instance from a particular engine (via `engines.${engineAlias}.importEnabled`). In case your environment is using that feature for e.g. a [clustering setup](./../configuration/clustering.md), we recommend you to stay on Optimize 2.7.0 until the release of Optimize 3.1.0 (Scheduled for 14/07/2020) and then update straight to Optimize 3.1.0. +In 3.0.0, it is not possible to deactivate the import of a particular Optimize instance from a particular engine (via `engines.${engineAlias}.importEnabled`). In case your environment is using that feature for e.g. a [clustering setup](#), we recommend you to stay on Optimize 2.7.0 until the release of Optimize 3.1.0 (Scheduled for 14/07/2020) and then update straight to Optimize 3.1.0. ## Limitations diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/event-based-processes.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/event-based-processes.md index bf7b722bc6f..c8a0b781a7e 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/event-based-processes.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/event-based-processes.md @@ -21,7 +21,7 @@ Configuration of the Optimize event-based process feature. Camunda 7 only -Configuration of the Optimize [event ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](#). +Configuration of the Optimize [event ingestion REST API](#) for [event-based processes](#). | YAML path | Default value | Description | | ----------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/history-cleanup.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/history-cleanup.md index bec76181dd8..62df0229dad 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/history-cleanup.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/configuration/history-cleanup.md @@ -101,7 +101,7 @@ historyCleanup: -The age of ingested event data is determined by the [`time`](../../../apis-tools/optimize-api/event-ingestion.md#request-body) field provided for each event at the time of ingestion. +The age of ingested event data is determined by the [`time`](##request-body) field provided for each event at the time of ingestion. To enable the cleanup of event data, the `historyCleanup.ingestedEventCleanup.enabled` property needs to be set to `true`. diff --git a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/migration-update/2.7-to-3.0.md b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/migration-update/2.7-to-3.0.md index aa3df00aabe..58477b9b4e1 100644 --- a/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/migration-update/2.7-to-3.0.md +++ b/optimize_versioned_docs/version-3.12.0/self-managed/optimize-deployment/migration-update/2.7-to-3.0.md @@ -44,7 +44,7 @@ The update should now successfully complete. ### Cannot disable import from particular engine -In 3.0.0, it is not possible to deactivate the import of a particular Optimize instance from a particular engine (via `engines.${engineAlias}.importEnabled`). In case your environment is using that feature for e.g. a [clustering setup](./../configuration/clustering.md), we recommend you to stay on Optimize 2.7.0 until the release of Optimize 3.1.0 (Scheduled for 14/07/2020) and then update straight to Optimize 3.1.0. +In 3.0.0, it is not possible to deactivate the import of a particular Optimize instance from a particular engine (via `engines.${engineAlias}.importEnabled`). In case your environment is using that feature for e.g. a [clustering setup](#), we recommend you to stay on Optimize 2.7.0 until the release of Optimize 3.1.0 (Scheduled for 14/07/2020) and then update straight to Optimize 3.1.0. ## Limitations diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/event-based-processes.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/event-based-processes.md index bf7b722bc6f..c8a0b781a7e 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/event-based-processes.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/event-based-processes.md @@ -21,7 +21,7 @@ Configuration of the Optimize event-based process feature. Camunda 7 only -Configuration of the Optimize [event ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](#). +Configuration of the Optimize [event ingestion REST API](#) for [event-based processes](#). | YAML path | Default value | Description | | ----------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/history-cleanup.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/history-cleanup.md index bec76181dd8..62df0229dad 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/history-cleanup.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/configuration/history-cleanup.md @@ -101,7 +101,7 @@ historyCleanup: -The age of ingested event data is determined by the [`time`](../../../apis-tools/optimize-api/event-ingestion.md#request-body) field provided for each event at the time of ingestion. +The age of ingested event data is determined by the [`time`](##request-body) field provided for each event at the time of ingestion. To enable the cleanup of event data, the `historyCleanup.ingestedEventCleanup.enabled` property needs to be set to `true`. diff --git a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/migration-update/2.7-to-3.0.md b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/migration-update/2.7-to-3.0.md index aa3df00aabe..58477b9b4e1 100644 --- a/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/migration-update/2.7-to-3.0.md +++ b/optimize_versioned_docs/version-3.13.0/self-managed/optimize-deployment/migration-update/2.7-to-3.0.md @@ -44,7 +44,7 @@ The update should now successfully complete. ### Cannot disable import from particular engine -In 3.0.0, it is not possible to deactivate the import of a particular Optimize instance from a particular engine (via `engines.${engineAlias}.importEnabled`). In case your environment is using that feature for e.g. a [clustering setup](./../configuration/clustering.md), we recommend you to stay on Optimize 2.7.0 until the release of Optimize 3.1.0 (Scheduled for 14/07/2020) and then update straight to Optimize 3.1.0. +In 3.0.0, it is not possible to deactivate the import of a particular Optimize instance from a particular engine (via `engines.${engineAlias}.importEnabled`). In case your environment is using that feature for e.g. a [clustering setup](#), we recommend you to stay on Optimize 2.7.0 until the release of Optimize 3.1.0 (Scheduled for 14/07/2020) and then update straight to Optimize 3.1.0. ## Limitations diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/event-based-processes.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/event-based-processes.md index bf7b722bc6f..c8a0b781a7e 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/event-based-processes.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/event-based-processes.md @@ -21,7 +21,7 @@ Configuration of the Optimize event-based process feature. Camunda 7 only -Configuration of the Optimize [event ingestion REST API](../../../apis-tools/optimize-api/event-ingestion.md) for [event-based processes](#). +Configuration of the Optimize [event ingestion REST API](#) for [event-based processes](#). | YAML path | Default value | Description | | ----------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/history-cleanup.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/history-cleanup.md index bec76181dd8..62df0229dad 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/history-cleanup.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/configuration/history-cleanup.md @@ -101,7 +101,7 @@ historyCleanup: -The age of ingested event data is determined by the [`time`](../../../apis-tools/optimize-api/event-ingestion.md#request-body) field provided for each event at the time of ingestion. +The age of ingested event data is determined by the [`time`](##request-body) field provided for each event at the time of ingestion. To enable the cleanup of event data, the `historyCleanup.ingestedEventCleanup.enabled` property needs to be set to `true`. diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/2.7-to-3.0.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/2.7-to-3.0.md index 81c0db8fe39..f3372235561 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/2.7-to-3.0.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/2.7-to-3.0.md @@ -44,7 +44,7 @@ The update should now successfully complete. ### Cannot disable import from particular engine -In 3.0.0, it is not possible to deactivate the import of a particular Optimize instance from a particular engine (via `engines.${engineAlias}.importEnabled`). In case your environment is using that feature for e.g. a [clustering setup](./../../configuration/clustering.md), we recommend you to stay on Optimize 2.7.0 until the release of Optimize 3.1.0 (Scheduled for 14/07/2020) and then update straight to Optimize 3.1.0. +In 3.0.0, it is not possible to deactivate the import of a particular Optimize instance from a particular engine (via `engines.${engineAlias}.importEnabled`). In case your environment is using that feature for e.g. a [clustering setup](./.#), we recommend you to stay on Optimize 2.7.0 until the release of Optimize 3.1.0 (Scheduled for 14/07/2020) and then update straight to Optimize 3.1.0. ## Limitations diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11.md index c455b994fba..f5611b19145 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11.md @@ -47,7 +47,7 @@ With this release, the minimum version of Java that Optimize supports is now Jav ### Plugins -Optimize now runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](./../../plugins/engine-rest-filter-plugin.md) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins and are updating from version 3.10.3 or earlier, you will need to adjust your implementation accordingly. +Optimize now runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](#) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins and are updating from version 3.10.3 or earlier, you will need to adjust your implementation accordingly. ### Logging diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10.md index 5b203450a62..e8ded28f24a 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10.md @@ -40,7 +40,7 @@ From Optimize 3.10.4, the minimum version of Java that Optimize supports is now ### Plugins -From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](./../../plugins/engine-rest-filter-plugin.md) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. +From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](#) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. ### Logging diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md index 862e36c8211..89be4e8541f 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md @@ -49,7 +49,7 @@ From Optimize 3.10.4, the minimum version of Java that Optimize supports is now ### Plugins -From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](./../../plugins/engine-rest-filter-plugin.md) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. +From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](#) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. ### Logging diff --git a/sidebars.js b/sidebars.js index 8b38837ff95..56d9d106b4e 100644 --- a/sidebars.js +++ b/sidebars.js @@ -1219,10 +1219,6 @@ module.exports = { "Object and list variable support", "self-managed/optimize-deployment/configuration/object-variables/" ), - optimizeLink( - "Clustering", - "self-managed/optimize-deployment/configuration/clustering/" - ), optimizeLink( "Multi-tenancy", "self-managed/optimize-deployment/configuration/multi-tenancy/" From 7336141f7a4e53866784e9115ca05e30fe7c3891 Mon Sep 17 00:00:00 2001 From: Amara Date: Tue, 17 Dec 2024 14:28:30 -0600 Subject: [PATCH 7/9] adjust remaining links --- .../migration-update/camunda-8/3.9-to-3.10.md | 2 +- .../migration-update/camunda-7/3.10-to-3.11.md | 2 +- .../migration-update/camunda-7/3.9-to-3.10.md | 2 +- .../migration-update/camunda-8/3.9-to-3.10.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/optimize/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md b/optimize/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md index 89be4e8541f..98c1b78c5fd 100644 --- a/optimize/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md +++ b/optimize/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md @@ -49,7 +49,7 @@ From Optimize 3.10.4, the minimum version of Java that Optimize supports is now ### Plugins -From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](#) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. +From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](#) and the [Single-Sign-On Plugin](#) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. ### Logging diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11.md index f5611b19145..fda2e0fcea9 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.10-to-3.11.md @@ -47,7 +47,7 @@ With this release, the minimum version of Java that Optimize supports is now Jav ### Plugins -Optimize now runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](#) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins and are updating from version 3.10.3 or earlier, you will need to adjust your implementation accordingly. +Optimize now runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](#) and the [Single-Sign-On Plugin](#) now import jakarta dependencies. If you use these plugins and are updating from version 3.10.3 or earlier, you will need to adjust your implementation accordingly. ### Logging diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10.md index e8ded28f24a..7dd2c0cf029 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-7/3.9-to-3.10.md @@ -40,7 +40,7 @@ From Optimize 3.10.4, the minimum version of Java that Optimize supports is now ### Plugins -From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](#) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. +From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](#) and the [Single-Sign-On Plugin](#) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. ### Logging diff --git a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md index 89be4e8541f..98c1b78c5fd 100644 --- a/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md +++ b/optimize_versioned_docs/version-3.14.0/self-managed/optimize-deployment/migration-update/camunda-8/3.9-to-3.10.md @@ -49,7 +49,7 @@ From Optimize 3.10.4, the minimum version of Java that Optimize supports is now ### Plugins -From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](#) and the [Single-Sign-On Plugin](./../../plugins/single-sign-on.md) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. +From 3.10.4, Optimize runs with Spring Boot 3. As a result, some plugin interfaces have been updated accordingly. More specifically, the [Engine Rest Filter Plugin](#) and the [Single-Sign-On Plugin](#) now import jakarta dependencies. If you use these plugins, you will need to adjust your implementation accordingly. ### Logging From d1930f1ff883b4a19e9d1e090d12a1c659eb2a5c Mon Sep 17 00:00:00 2001 From: Amara Date: Tue, 17 Dec 2024 17:02:57 -0600 Subject: [PATCH 8/9] remove c7 as default value --- .../optimize-deployment/configuration/security-instructions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimize/self-managed/optimize-deployment/configuration/security-instructions.md b/optimize/self-managed/optimize-deployment/configuration/security-instructions.md index 932d5d6ac47..13a220fd622 100644 --- a/optimize/self-managed/optimize-deployment/configuration/security-instructions.md +++ b/optimize/self-managed/optimize-deployment/configuration/security-instructions.md @@ -11,7 +11,7 @@ This page provides an overview of how to secure a Camunda Optimize installation. This guide also identifies areas where we consider security issues to be relevant for the Camunda Optimize product and list those in the subsequent sections. Compliance for those areas is ensured based on common industry best practices and influenced by security requirements of standards like OWASP Top 10 and others. - Date: Tue, 17 Dec 2024 17:21:20 -0600 Subject: [PATCH 9/9] remove C7 sections --- .../configuration/object-variables.md | 4 ---- .../configuration/system-configuration.md | 17 ----------------- 2 files changed, 21 deletions(-) diff --git a/optimize/self-managed/optimize-deployment/configuration/object-variables.md b/optimize/self-managed/optimize-deployment/configuration/object-variables.md index 76268d1d51f..b13507f6742 100644 --- a/optimize/self-managed/optimize-deployment/configuration/object-variables.md +++ b/optimize/self-managed/optimize-deployment/configuration/object-variables.md @@ -27,10 +27,6 @@ Similarly, the "contains" filter matches process instances whose list variable c The value of list properties within objects as well as variables which are lists of objects rather than primitives can be inspected in the raw object variable value column accessible in raw data reports. -## Variable plugins - -Any configured [variable plugins](../../plugins/variable-import-plugin) are applied _before_ Optimize creates the flattened property "sub variables", meaning the configured plugins have access to the raw JSON object variables only. Any modifications applied to the JSON object variables will then be persisted to the "sub variables" when Optimize flattens the resulting objects in the next step of the import cycle. - ## Optimize configuration diff --git a/optimize/self-managed/optimize-deployment/configuration/system-configuration.md b/optimize/self-managed/optimize-deployment/configuration/system-configuration.md index 564826cf08b..10eeaeff5e5 100644 --- a/optimize/self-managed/optimize-deployment/configuration/system-configuration.md +++ b/optimize/self-managed/optimize-deployment/configuration/system-configuration.md @@ -254,23 +254,6 @@ Settings influencing the process digest feature. | ------------------ | --------------- | -------------------------------------------------------------------- | | digest.cronTrigger | 0 0 9 \* \* MON | Cron expression to define when enabled email digests are to be sent. | -### Alert notification webhooks - -Camunda 7 only - -Settings for webhooks which can receive custom alert notifications. You can configure multiple webhooks which will be available to select from when creating or editing alerts. Each webhook configuration should have a unique human readable name which will appear in the Optimize UI. - -| YAML path | Default value | Description | -| --------------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| webhookAlerting.webhooks.$\{webhookName}.url | | The URL of the webhook. | -| webhookAlerting.webhooks.$\{webhookName}.headers | | A map of the headers of the request to be sent to the webhook. | -| webhookAlerting.webhooks.$\{webhookName}.httpMethod | | The HTTP Method of the request to be sent to the webhook. | -| webhookAlerting.webhooks.$\{webhookName}.defaultPayload | | The payload of the request to be sent to the webhook. This should include placeholder keys that allow you to define dynamic content. See [Alert Webhook Payload Placeholders](../webhooks#alert-webhook-payload-placeholders) for available values. | -| webhookAlerting.webhooks.$\{webhookName}.proxy.enabled | | Whether an HTTP proxy should be used for requests to the webhook URL. | -| webhookAlerting.webhooks.$\{webhookName}.proxy.host | | The proxy host to use, must be set if webhookAlerting.webhooks.$\{webhookName}.proxy.enabled = true. | -| webhookAlerting.webhooks.$\{webhookName}.proxy.port | | The proxy port to use, must be set if webhookAlerting.webhooks.$\{webhookName}.proxy.enabled = true. | -| webhookAlerting.webhooks.$\{webhookName}.proxy.sslEnabled | | Whether this proxy is using a secured connection (HTTPS). Must be set if webhookAlerting.webhooks.$\{webhookName}.proxy.enabled = true. | - ### History cleanup settings Settings for automatic cleanup of historic process/decision instances based on their end time.