diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 000000000..f777f5997 --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,31 @@ +# Using the IDE Plugin + +## Get a Demo App or Any App You Like to Migrate + +1. Clone the Cool-store application: + ```bash + git clone https://github.com/konveyor-ecosystem/coolstore.git + ``` +2. Navigate to File > Open in VSCode and locate the folder we just cloned. + +### Running Kai RPC server + +1. Users will land on the welcome page after installation as shown below. If the Welcome Page does not appear, proceed to the step 2. + ![walkthrough](images/walkthrough-1.png) + If "Set up Konveyor" is not available in the list, click the More button for additional options. + ![walkthrough](images/walkthrough-2.png) +2. If the welcome page does not appear, open the command palette by pressing Command + Shift + P. This will bring up a list of commands. + ![walkthrough](images/walkthrough-3.png) + From the command palette, locate and select the "Set up Konveyor" option. This will guide you through the configuration process. + ![walkthrough](images/walkthrough-4.png) +3. Configure Konveyor for your project. + - User has an option to override binaries and custom rules, however it comes with the default packaged binaries and custom rules. + ![setup-konveyor](images/setup-konveyor.png) + - The Konveyor extension allows you to add custom rules to the analyzer. This is useful when you want to apply your own rules during analysis. + - Configuring analysis arguments is necessary to determine which rules apply to the project during analysis. Set up analysis arguments specific to your project by selecting the appropriate options and pressing "OK" to save the changes. + - To confirm your arguments, navigate to your project directory and open `/.vscode/settings.json`. + ![setup-konveyor](images/setup-konveyor-2.png) + - Next, set up the Generative AI key for your project. This step will open the `provider-settings.yaml` file. By default, it is configured to use OpenAI. To change the model, update the anchor `&active` to the desired block. Modify this file with the required arguments, such as the model and API key, to complete the setup. Sample of the `provider-settings.yaml` can be found [here.](https://github.com/konveyor/editor-extensions/blob/main/vscode/resources/sample-provider-settings.yaml) + - As the final step, select "Get Solution Parameters". +4. Once the configuration is done, click on start server button. Logs are collected at output channel named konveyor-analyzer. + ![start-server](images/start-server.png) diff --git a/docs/debug.md b/docs/debug.md new file mode 100644 index 000000000..c6a45e653 --- /dev/null +++ b/docs/debug.md @@ -0,0 +1,48 @@ +# Debug Kai And File Issues + +Logs are divided into two separate files under your working directory at /.vscode/konveyor-logs: + +- kai-analyzer-server.log: This file is useful for debugging issues related to running analysis. It provides details about the Java and Maven installation, the initialization of the Java connection, and the startup process of the analyzer server. + +- kai-rpc-server.log: This log is intended for debugging the RPC server and any communication with the AI system. It captures interactions involved in fixing incidents and retrieving results. + +## File an Issue + +Please Fill out all the information requested below when opening an issue [here](https://github.com/konveyor/kai/issues). + +### Detailed Guidelines + +```md +Help us resolve your issue faster by providing detailed information. Please follow the structure below to ensure we have all the necessary details: + +1.Issue Description\*\* + +- Summary: Briefly describe the problem. +- Logs: Attach any relevant log files (e.g., `kai-analyzer-server.log` or `kai-rpc-server.log`) to help us identify the issue. + +2. Steps to Reproduce\*\* + +- Provide a step-by-step guide on how to reproduce the issue if possible. + +3. Environment Details + Please include the following information to help us better understand your setup: + +- Operating System (OS): (e.g., Windows 11, macOS Ventura, Ubuntu 22.04) +- Java Version: (e.g., OpenJDK 17.0.2) +- Maven Version: (e.g., Apache Maven 3.8.4) +- VS Code Version: (e.g., 1.82.0) +- Kai Version: (e.g., v0.0.6) + +4. Additional Details + +- Error Messages: Include any error messages or stack traces you encountered. +- Screenshots: Attach screenshots to illustrate the issue, if applicable. +- Expected Behavior: Describe what you expected to happen. +- Actual Behavior: Describe what actually happened. +``` + +### Troubleshooting + +- **No Incidents Found**: Check the `.vscode/settings.json` file in your working directory to ensure the targets are correctly recorded. + +- **Failed to Run Initial Analysis**: Verify that the correct Java and Maven versions are set in the current environment. Detailed logs can be found in `kai-analyzer-server.log`. diff --git a/docs/images/konveyor_analysis_view.png b/docs/images/konveyor_analysis_view.png new file mode 100644 index 000000000..8819791d0 Binary files /dev/null and b/docs/images/konveyor_analysis_view.png differ diff --git a/docs/images/konveyor_analysis_view_1.png b/docs/images/konveyor_analysis_view_1.png new file mode 100644 index 000000000..9eeba927b Binary files /dev/null and b/docs/images/konveyor_analysis_view_1.png differ diff --git a/docs/images/run_analysis.png b/docs/images/run_analysis.png new file mode 100644 index 000000000..22a4240b9 Binary files /dev/null and b/docs/images/run_analysis.png differ diff --git a/docs/images/setup-konveyor-2.png b/docs/images/setup-konveyor-2.png new file mode 100644 index 000000000..6af90143a Binary files /dev/null and b/docs/images/setup-konveyor-2.png differ diff --git a/docs/images/walkthrough-1.png b/docs/images/walkthrough-1.png new file mode 100644 index 000000000..6241933a7 Binary files /dev/null and b/docs/images/walkthrough-1.png differ diff --git a/docs/images/walkthrough-2.png b/docs/images/walkthrough-2.png new file mode 100644 index 000000000..9541b322e Binary files /dev/null and b/docs/images/walkthrough-2.png differ diff --git a/docs/images/walkthrough-3.png b/docs/images/walkthrough-3.png new file mode 100644 index 000000000..2306c4cdd Binary files /dev/null and b/docs/images/walkthrough-3.png differ diff --git a/docs/images/walkthrough-4.png b/docs/images/walkthrough-4.png new file mode 100644 index 000000000..0bbf72957 Binary files /dev/null and b/docs/images/walkthrough-4.png differ diff --git a/docs/installation.md b/docs/installation.md index 0da40e8c2..5195b1af6 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -7,10 +7,8 @@ We provide pre-built versions of the IDE plugin as a `vsix` file at [editor-exte ## Pre-requisite 1. Install **Java 17 or later** and the latest version of **Maven**. -2. Set up the required environment variables for the LLM service you plan to use. Refer to the [LLM Selection Guide](/docs/llm_selection.md) for details. - - For OpenAI: `OPENAI_API_KEY=my-secret-api-key-value` - - For IBM BAM: `GENAI_KEY=my-secret-api-key-value` +2. Required LLM model and key to use the Kai. Refer to the [LLM Selection Guide](/docs/llm_selection.md) for details. ## IDE Plugin Installation Methods @@ -38,23 +36,3 @@ Only follow these steps if you decided to skip installing from the UI side and y code --install-extension path/to/your-extension.vsix ``` 3. Restart/reload VSCode. - -## Using the IDE Plugin - -### Get a Demo App - -1. Clone the Cool-store application: - ```bash - git clone https://github.com/konveyor-ecosystem/coolstore.git - ``` -2. Navigate to File > Open in VSCode and locate the folder we just cloned. - -### Running Kai RPC server - -1. Open walkthrough after installing the extension to setup Konveyor - ![walkthrough](images/walkthrough.png) -2. User has an option to override binaries and custom rules, however it comes with the default packaged binaries and custom rules. - ![setup-konveyor](images/setup-konveyor.png) -3. Configure analysis argument is necessary in order to know which rules apply to the project during analysis. -4. Once the configuration is done, click on start server button. Logs are collected at output channel named konveyor-analyzer. - ![start-server](images/start-server.png) diff --git a/docs/scenarios/catalogService.png b/docs/scenarios/catalogService.png new file mode 100644 index 000000000..0f8adf4c2 Binary files /dev/null and b/docs/scenarios/catalogService.png differ diff --git a/docs/scenarios/cdi_bean_requirement.png b/docs/scenarios/cdi_bean_requirement.png new file mode 100644 index 000000000..11ab0b6e3 Binary files /dev/null and b/docs/scenarios/cdi_bean_requirement.png differ diff --git a/docs/scenarios/change_import_namespaces.png b/docs/scenarios/change_import_namespaces.png new file mode 100644 index 000000000..67477901d Binary files /dev/null and b/docs/scenarios/change_import_namespaces.png differ diff --git a/docs/scenarios/demo.md b/docs/scenarios/demo.md index b64b215e6..75baf661d 100644 --- a/docs/scenarios/demo.md +++ b/docs/scenarios/demo.md @@ -9,18 +9,17 @@ solved a similar problem in the past. - [Overview](#overview) - [Prerequisites](#prerequisites) - [Step 1: Setup](#step-1-setup) - - [Running Kai with IBM-served Llama 3](#running-kai-with-ibm-served-llama-3) - - [Running Kai with Amazon Bedrock-served Llama 3](#running-kai-with-amazon-bedrock-served-llama-3) - - [Running Kai with GPT-3.5-Turbo](#running-kai-with-gpt-35-turbo) - - [Running Kai with Cached Responses Only (demo mode)](#running-kai-with-cached-responses-only-demo-mode) - - [Step 2: Clone the coolstore app](#step-2-clone-the-coolstore-app) - - [Step 3: Run Analysis](#step-3-run-analysis) - - [3.1 Change import namespaces](#31-change-import-namespaces) - - [3.2 Modify Scope from CDI bean requirements](#32-modify-scope-from-cdi-bean-requirements) - - [3.3 EJB Remote and Message Driven Bean(MDB) changes](#33-ejb-remote-and-message-driven-beanmdb-changes) + - [Install Kai](#installation) + - [Clone Coolstore app](#get-a-demo-app) + - [Configure Konveyor](#configure-konveyor) + - [Step 2: Run Analysis](#step-2-run-analysis) + - [2.1 Change import namespaces](#21-change-import-namespaces) + - [2.2 Modify Scope from CDI bean requirements](#22-modify-scope-from-cdi-bean-requirements) + - [2.3 EJB Remote and Message Driven Bean(MDB) changes](#23-ejb-remote-and-message-driven-beanmdb-changes) - [EJB Remote](#ejb-remote) - [Message Driven Bean (MDB)](#message-driven-bean-mdb) - - [Step 4: Deploy app to Kubernetes](#step-4-deploy-app-to-kubernetes) + - [Step 3: Deploy app to Kubernetes](#step-3-deploy-app-to-kubernetes) + - [Step 4: Debug and File Incidents](#debug-and-file-incidents) - [Conclusion](#conclusion) ## Overview @@ -54,170 +53,82 @@ Download the latest from ## Step 1: Setup -[You can configure Kai in multiple ways](../contrib/configuration.md). The best -way to configure Kai is to follow the setup page to get started. After the -basic setup, additional configuration can be made by modifying `settings.json`. +### Installation -You will need to select an LLM model to use with Kai. Here are some examples of -how to configure Kai to use different models. For more options, see -[llm_selection.md](../llm_selection.md). +Follow the steps in the [installation guide](../installation.md) to install Kai. It will help you find the latest build and complete the setup. -If you don't have access to an LLM, you also have the option to run Kai in demo -mode, which uses cached responses. +### Get a Demo App -> [!IMPORTANT] -> -> The demo assumes you are using IBM-served Llama 3. If you are using a different -> model, the responses you get back may be different. - -### Running Kai with IBM-served Llama 3 - - - -> [!WARNING] -> In order to use this service an individual needs to obtain a w3id -> from IBM. The kai development team is unable to help obtaining this access. - -1. Login to https://bam.res.ibm.com/. -2. To access via an API you can look at ‘Documentation’ after logging into - https://bam.res.ibm.com/. You will see a field embedded in the - 'Documentation' section where you can generate/obtain an API Key. -3. Ensure you have exported the key via `export -GENAI_KEY=my-secret-api-key-value`. and this should exist in the shell where - VSCode is running - - - -Next, ensure the following values are set in `settings.json`: - -```json -{ - "konveyor.kai.providerName": "ChatIBMGenAI", - "konveyor.kai.providerArgs": { - "model_id": "meta-llama/llama-3-70b-instruct", - "parameters": { - "max_new_tokens": 2048 - } - } -} -``` - -Finally, start the Kai RPC server. - -### Running Kai with Amazon Bedrock-served Llama 3 - -1. Obtain your AWS API key from Amazon Bedrock. -2. Export your `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, and - `AWS_DEFAULT_REGION` environment variables. - -Next, paste the following into your `settings.json` file: - -```json -{ - "konveyor.kai.providerName": "ChatBedrock", - "konveyor.kai.providerArgs": { - "model_id": "meta.llama3-70b-instruct-v1:0", - "parameters": {} - } -} -``` - -Finally, start the Kai RPC server. - -### Running Kai with GPT-3.5-Turbo - - - -1. Follow the directions from OpenAI - [here](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key). -2. Ensure you have exported the key via `export -OPENAI_API_KEY=my-secret-api-key-value` - - - -Next, paste the following into your `settings.json` file: - -```json -{ - "konveyor.kai.providerName": "ChatOpenAI", - "konveyor.kai.providerArgs": { - "model": "gpt-3.5-turbo", - "parameters": {} - } -} -``` +1. Clone the Cool-store application: -Finally, start the Kai RPC server. + ```bash + git clone https://github.com/konveyor-ecosystem/coolstore.git + ``` -### Running Kai with GPT-4o + Next, switch to the branch of the Coolstore app that's been partially migrated: - + ```sh + git checkout partial-migration + ``` -1. Follow the directions from OpenAI - [here](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key). -2. Ensure you have exported the key via `export -OPENAI_API_KEY=my-secret-api-key-value` +2. Navigate to File > Open in VSCode and locate the folder we just cloned. + Make sure you have GenAI credentials before you start configuring Kai. - +### Configure Konveyor -Next, paste the following into your `settings.json` file: +1. When you launch the extension, you will land on the Welcome Page, as shown below. If the Welcome Page does not appear, proceed to the step 2. + ![walkthrough](../images/walkthrough-1.png) + If "Set up Konveyor" is not available in the list, click the More button for additional options. + ![walkthrough](../images/walkthrough-2.png) +2. If the welcome page does not appear, open the command palette by pressing Command + Shift + P. This will bring up a list of commands. + ![walkthrough](../images/walkthrough-3.png) + From the command palette, locate and select the "Set up Konveyor" option. This will guide you through the configuration process. + ![walkthrough](../images/walkthrough-4.png) +3. Configure Konveyor for your project. -```json -{ - "konveyor.kai.providerName": "ChatOpenAI", - "konveyor.kai.providerArgs": { - "model": "gpt-4o", - "parameters": {} - } -} -``` - -Finally, start the Kai RPC server. - -### Running Kai with Cached Responses Only (demo mode) - -If you don't have access to a `GEN_AI` key, you can run the server in demo mode -which will use cached responses + - User has an option to override binaries and custom rules, however it comes with the default packaged binaries and custom rules. + ![setup-konveyor](../images/setup-konveyor.png) + - The Konveyor extension allows you to add custom rules to the analyzer. This is useful when you want to apply your own rules during analysis. + - Configuring analysis arguments is necessary to determine which rules apply to the project during analysis. Set up analysis arguments specific to your project by selecting the appropriate options and pressing "OK" to save the changes. + ![setup-konveyor](../images/setup-konveyor-2.png) -To run the Kai server in demo mode, ensure `konveyor.kai.demo_mode: true` is -set in `settings.json`. + We will analyze the Coolstore application using the following migration targets to identify potential areas for improvement: -## Step 2: Clone the coolstore app + -Let's clone the Coolstore application, which we will be used demo the migration -process to Quarkus. + - cloud-readiness + - jakarta-ee + - jakarta-ee8 + - jakarta-ee9 + - quarkus -First, clone the Coolstore demo from its repository: + - To verify your arguments, go to your project directory and open `/.vscode/settings.json`. This serves as a reference for how `settings.json` should look. -```sh -git clone https://github.com/konveyor-ecosystem/coolstore.git -``` + ```json + { + "konveyor.analysis.labelSelector": "(konveyor.io/target=cloud-readiness || konveyor.io/target=jakarta-ee || konveyor.io/target=jakarta-ee8 || konveyor.io/target=jakarta-ee9 || konveyor.io/target=quarkus) || (discovery)" + } + ``` -Next, switch to the branch of the Coolstore app that's been partially migrated: + - Next, set up the Generative AI key for your project. This step will open the `provider-settings.yaml` file. By default, it is configured to use OpenAI. To change the model, update the anchor `&active` to the desired block. Modify this file with the required arguments, such as the model and API key, to complete the setup. Sample of the `provider-settings.yaml` can be found [here.](https://github.com/konveyor/editor-extensions/blob/main/vscode/resources/sample-provider-settings.yaml) -```sh -git checkout partial-migration -``` +4. Once the configuration is done, click on start server button. Logs are collected at output channel named konveyor-analyzer. + ![start-server](../images/start-server.png) -## Step 3: Run Analysis +## Step 2: Run Analysis -We will analyze the Coolstore application using the following migration targets -to identify potential areas for improvement: +Let's perform our initial analysis: - +1. Once you have RPC server initialized, navigate to "Konveyor Analysis View" and click `Run Analysis`. Open the command palette by pressing Command + Shift + P to find it. + ![run_analysis](../images/run_analysis.png) -- cloud-readiness -- jakarta-ee -- jakarta-ee8 -- jakarta-ee9 -- quarkus +2. The Konveyor Analysis View lists issues, allowing you to filter them by file issues. On the left side, the Konveyor Issue Panel groups files based on similar issues for easier navigation. + ![konveyor_analysis_view](../images/konveyor_analysis_view.png) -Let's perform our initial analysis: +If you lose the "Konveyor Analysis View" window, press Command + Shift + P to open the Command Palette, then search for and select the Analysis View window. Alternatively, click the editor icon under the Konveyor Issue panel to reopen it. +![konveyor_analysis_view_1](../images/konveyor_analysis_view_1.png) -1. Open VSCode and load coolstore project if it is not already loaded. -2. Follow the steps to run the analysis listed - [here](../getting_started.md#running-analysis) -3. Once the analysis is complete you will see incidents listed on the following files +Once the analysis is complete, you will see many incidents. However, let's focus on fixing only the 5 files necessary to migrate the Coolstore application. - `src/main/java/com/redhat/coolstore/model/ShoppingCart.java` - `src/main/java/com/redhat/coolstore/model/InventoryEntity.java` @@ -234,60 +145,51 @@ Let's perform our initial analysis: The incidents in the above files will provide insights into potential issues or areas that require attention during the migration process. -### 3.1 Change import namespaces +### 2.1 Change import namespaces -- Right-click on the file - `src/main/java/com/redhat/coolstore/model/ShoppingCart.java`. -- Select Kai Fix-All. -- Accept the proposed changes. -- Repeat the same process for the file - - `src/main/java/com/redhat/coolstore/model/InventoryEntity.java`. +Open “Konveyor Analysis View” and search for `InventoryEntity.java` file. Click on `Resolve 6 incidents` to resolve all incidents or individual incidents as shown below. +![request_fix](request_fix.png) -![Change import namespaces](model.png) +The “Resolution Details” window will display the requested fix information as shown below. +![resolution_details](resolution_details.png) -The above steps show how Kai simplifies the translation of import namespaces, -ensuring seamless automated migration of javax libraries to jakarta persistence +Click on the eye symbol to view the differences. +![change_import_namespaces.png](change_import_namespaces.png) + +Accept the changes by clicking on the symbol shown above on the screenshot. This will trigger analysis and reduce the number of incidents. + +The above steps show how Kai simplifies the translation of import namespaces, ensuring seamless automated migration of javax libraries to jakarta persistence libraries. -### 3.2 Modify Scope from CDI bean requirements +Just like we fixed `InventoryEntity.java`, repeat the same steps for `ShoppingCart.java`. -In this step, we will use Kai to modify the scope in `CatalogService.java` to -adhere to Quarkus CDI bean requirements. Kai will handle this automatically, -ensuring seamless migration. +### 2.2 Modify Scope from CDI bean requirements -- Right-click on the file - `src/main/java/com/redhat/coolstore/service/CatalogService.java`. -- Select Kai Fix-All. -- Accept the proposed changes. +In this step, we will use Kai to update the scope definitions in `CatalogService.java`, `ShippingService.java`, and `ShoppingCartOrderProcessor.java` to align with Quarkus CDI bean requirements. Kai will automate this process, ensuring a smooth migration. -![Modify Scope from CDI bean requirements](kai_type2.png) +As you can see, the files are grouped by common incidents. Request a fix for all three files shown below. +![cdi_bean_requirement](cdi_bean_requirement.png) -### 3.3 EJB Remote and Message Driven Bean(MDB) changes +Verify each solution one by one and ensure the requested changes are applied. In this case, Kai understands the problem and proactively fixes future issues as well. +![multi_file_fix](multi_file_fix.png) -We will address EJB Remote and MDB functionalities in `ShippingService.java` and -`ShoppingCartOrderProcessor.java` respectively. Kai will guide us through -replacing EJBs with REST functionality and updating related imports and -annotations. +In `CatalogService.java` Stateless EJB is converted to a CDI bean by replacing the @Stateless annotation with a scope @ApplicationScoped. -#### EJB Remote +![catalogService - diff](catalogService.png) -- Right-click on the file - `src/main/java/com/redhat/coolstore/service/ShippingService.java`. -- Select `Kai Fix-All`. -- Accept the proposed changes. +### 2.3 EJB Remote and Message Driven Bean(MDB) changes -![EJB Remote - Before/After](ejb_remote.png) +From the previous request, Kai not only modified the scope definitions but also addressed EJB Remote and MDB functionalities in `ShippingService.java` and `ShoppingCartOrderProcessor.java`, respectively. Kai replaced EJBs with REST functionality and updated related imports and annotations. -Due to the absence of support for Remote EJBs in Quarkus, you will notice that -these functionalities are removed and replaced with REST functionality. +#### EJB Remote -#### Message Driven Bean (MDB) +![shippingService - diff](shippingService.png) -- Right-click on the file `src/main/java/com/redhat/coolstore/service/ShoppingCartOrderProcessor.java`. +Due to the absence of support for Remote EJBs in Quarkus, you will notice that these functionalities are removed and replaced with REST functionality. -- Select `Kai Fix-All` and accept the changes. +#### Message Driven Bean (MDB) -![MDB - before/after](mdb.png) +![shoppingCartOrderProcessor - before/after](shoppingCartOrderProcessor.png) - Note the changes made to `ordersEmitter` channel: @@ -324,7 +226,7 @@ these functionalities are removed and replaced with REST functionality. ![MDB - Manual updates](mdbchanges.png) -### Step 4: Deploy app to Kubernetes +### Step 3: Deploy app to Kubernetes Although the app is deployable to any [Kubernetes](https://kubernetes.io/) distribution. For the sake of simplicity we choose @@ -381,6 +283,10 @@ minikube service list ![deploy app](deploy.gif) +## Debug and File Incidents + +Please review this [page](../debug.md) for information on Logs, Troubleshooting, and Filing Issues. + ## Conclusion In this demo, we showcased the capability of Kai in facilitating various types diff --git a/docs/scenarios/ejb_remote.png b/docs/scenarios/ejb_remote.png deleted file mode 100644 index c7472f6c3..000000000 Binary files a/docs/scenarios/ejb_remote.png and /dev/null differ diff --git a/docs/scenarios/kai_type2.png b/docs/scenarios/kai_type2.png deleted file mode 100644 index b74f11f94..000000000 Binary files a/docs/scenarios/kai_type2.png and /dev/null differ diff --git a/docs/scenarios/mdb.png b/docs/scenarios/mdb.png deleted file mode 100644 index 392d888ae..000000000 Binary files a/docs/scenarios/mdb.png and /dev/null differ diff --git a/docs/scenarios/model.png b/docs/scenarios/model.png deleted file mode 100644 index 93b8000d3..000000000 Binary files a/docs/scenarios/model.png and /dev/null differ diff --git a/docs/scenarios/multi_file_fix.png b/docs/scenarios/multi_file_fix.png new file mode 100644 index 000000000..2a10efb75 Binary files /dev/null and b/docs/scenarios/multi_file_fix.png differ diff --git a/docs/scenarios/request_fix.png b/docs/scenarios/request_fix.png new file mode 100644 index 000000000..813bb5969 Binary files /dev/null and b/docs/scenarios/request_fix.png differ diff --git a/docs/scenarios/resolution_details.png b/docs/scenarios/resolution_details.png new file mode 100644 index 000000000..d0a211be9 Binary files /dev/null and b/docs/scenarios/resolution_details.png differ diff --git a/docs/scenarios/shippingService.png b/docs/scenarios/shippingService.png new file mode 100644 index 000000000..13bc237a0 Binary files /dev/null and b/docs/scenarios/shippingService.png differ diff --git a/docs/scenarios/shoppingCartOrderProcessor.png b/docs/scenarios/shoppingCartOrderProcessor.png new file mode 100644 index 000000000..9460c0811 Binary files /dev/null and b/docs/scenarios/shoppingCartOrderProcessor.png differ