# 6

### Migration Guide

Appmixer 6 operates on the same stack (Node.js version, MongoDB version, etc.), so all custom components should function without modification.

There are no breaking changes in the API. However, one small change worth noting is that if a flow is running, its database document cannot be updated unless `?forceUpdate=true` is added to the request. You can read more about this in[ the changelog](#api).

An important database change in Appmixer 6 is the introduction of a flow type. A new property, type, is now present on each flow document, and a migration script will automatically execute when Appmixer 6 is deployed to assign a type to each flow in the system. More information about the types can be found in[ this section of the changelog](#miscellaneous-1). While this change isn’t breaking, SDK widgets now use this by default to display certain flow types. For instance, the `appmixer.ui.FlowManager` widget shows flows with `type: automation`. This default behavior can be modified using the *customFilter*, as described in the[ Appmixer SDK documentation](https://docs.appmixer.com/appmixer-sdk/ui-and-widgets/flow-manager). Similarly, the `appmixer.ui.Integrations` widget uses *type* to distinguish integration templates from integration instances.

The most significant update in the main UI (not the SDK) is the split of all flows into two categories: Automations and Integrations. More details can be found in[ the changelog](#main-page).

Appmixer 6 introduces several new garbage collectors, with additional information available in[ the changelog](#garbage-collectors). Be sure to review the garbage collector for continuity scopes (the *continuity scope* feature is described in[ the Appmixer documentation](https://docs.appmixer.com/building-connectors/behaviour)). These scopes are now deleted after 100 days by default (modifiable). If you’re using flows with continuity scopes and expect a webhook after 100 days, then you have to increase the value. For any custom components that rely on this feature, you can use the new `context.setMaxWait` function to set a specific expiration time, as explained in[ the documentation](https://docs.appmixer.com/building-connectors/behaviour#context.setmaxwait-timestamp).

Finally, please review the[ System Configuration section](#system-configuration), as several settings now have new default values.

### UI

#### Main page

* The main menu has been redesigned and a Dashboard page with links to the most important tutorials has been added:

<figure><img src="/files/OdbNy3boHlU8AUGREdBo" alt=""><figcaption></figcaption></figure>

* Automations and Integrations. The biggest change in Appmixer 6. Automations (internal business process/workflow automations) and Integrations (integration templates for end-users) are split into two separate views for better navigation.
* Expandable main menu.

#### Flow manager

* New menu options in Automation Designer, Integration Designer, Automations, and Integrations pages.

<figure><img src="/files/NVIbVR2XKBjgywY1hOyo" alt="" width="375"><figcaption></figcaption></figure>

#### Integration Wizard Editing

* Integration designer now displays a magic wand button next to each field. You can now easily add any field to the integration wizard for your end-users simply by clicking on the magic wand button.

<figure><img src="/files/fBr5JyCEEiVRz0Qov7qS" alt=""><figcaption></figcaption></figure>

* Go to “Edit Wizard” to see the live preview of the final wizard as your end-users would see it:

<figure><img src="/files/zH90KBitThgRGnpMKZVV" alt=""><figcaption></figcaption></figure>

* A new test flow has been added allowing you to test integration templates before publishing:

<figure><img src="/files/DJgwkVlC9pQTfjs7mhXQ" alt=""><figcaption></figcaption></figure>

* Starting a test opens the end-user Wizard allowing you to see and test how the integration configuration would look for your end-users:

<figure><img src="/files/ny1JBIGcl11P5UopkYiB" alt=""><figcaption></figcaption></figure>

*Explore logs of a running test and repeat stop/edit/start/delete cycle until you’re ready to publish your integration template to your end-users.*

<figure><img src="/files/ModscCuegMqvMjdweTRl" alt=""><figcaption></figcaption></figure>

* Publishing popup has been redesigned and simplified:

<figure><img src="/files/XtdzOBkXKFhZwd6KFOll" alt=""><figcaption></figcaption></figure>

* You can now update all existing integration instances running for your end-users when publishing an update to your integration templates:

<figure><img src="/files/wjM2msUyePeD1MTlsSqU" alt=""><figcaption></figcaption></figure>

#### Logs

* Log panel automatically opens when the flow starts.
* The log panel toggle button is now visible in Designer:

<figure><img src="/files/rko6ffvyg2xMw4JX5vpf" alt=""><figcaption></figcaption></figure>

* The log panel can be extended to full screen.

<figure><img src="/files/JBCEKR7rjg9Sj7pFDHCv" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/djpT5Dppd1Ju2kq0E60V" alt=""><figcaption></figcaption></figure>

* A search bar was added to the log panel allowing a full-text search in logs.

<figure><img src="/files/9dOhDYPcqKQ8MwaJCAFV" alt=""><figcaption></figcaption></figure>

* Correlation ID added to each log. You can now copy this correlation ID, add it to the search bar to see logs from the same flow “run”.

<figure><img src="/files/i3OGWw1Pght1tis4Uv6r" alt=""><figcaption></figcaption></figure>

#### Designer

* Expression *expand* option in the source.

  [https://docs.appmixer.com/component-definition/manifest/properties#expression](https://docs.appmixer.com/building-connectors/manifest/properties#expression)
* Show a hint to the user, guiding them to create a new flow in Flow Manager if no flows are found.

<figure><img src="/files/sCFdq4JIpX0gpImOsx8W" alt=""><figcaption></figcaption></figure>

* New *trigger* and *action* marker icons have been added to the component selector in the Inspector panel to make it easier to differentiate triggers from actions.

<figure><img src="/files/zidbDek7E4hnO6CU9cOk" alt="" width="375"><figcaption></figcaption></figure>

* A new *trigger* *selector* popup automatically opens by default when a new flow is created or the last trigger is deleted. This guides the user to select a trigger first. This behaviour can be optionally turned off when using the SDK. See <https://docs.appmixer.com/v/6.0/appmixer-sdk/ui-and-widgets/designer#config.options.triggerselector>

<figure><img src="/files/BLuUlW56PcxhgkJOvSgw" alt=""><figcaption></figcaption></figure>

* A new icon for variables makes it more visually clear that a variable can be modified by clicking on it.

<figure><img src="/files/fc6otYBylOPh87J1QpFA" alt=""><figcaption></figcaption></figure>

* Render brackets \[] at the end of all array type of variables (for variables with JSON schema defined in the component manifest file):

<figure><img src="/files/41pYHIH3zAI2AtnLv9MJ" alt=""><figcaption></figcaption></figure>

* Silent sign-in when passing the access token in the URL.
* The active tab is highlighted in the `appmixer.ui.Integrations widget`.

<figure><img src="/files/DFI3bgqXfX9lfKEIBhSE" alt=""><figcaption></figcaption></figure>

#### Miscellaneous

* Support Native Web Components in Custom Inspector Fields.
* Font size increased in the Studio for better readability.

### SDK

* Introduce the email argument as the third optional argument in `api.signupUser(username, password, email)`.
* New options for the `appmixer.ui.InsightsLogs` widget (customFilter, showHistogram, filterLayout, logFilter).
* New appmixer.api.sendAppEvent(). This allows you to trigger automations and integrations from your apps using a “named” event as opposed to using a generic webhook. See <https://docs.appmixer.com/getting-started/use-app-events> for more information.
* *API Version Mismatch* error is displayed only if the major or minor version of the API and SDK differs. Previously, it was shown even if the patch version was different.

### Core

#### Garbage collectors

* Timeouts (created by `context.setTimeout())` are automatically deleted after they are processed. In the previous version, timeouts might not have been correctly garbage collected in some cases (their consumption by components failed 30 times in which case they moved into the *unprocessedMessages* collection). In Appmixer 6.0 timeouts are correctly deleted in this scenario.
* Garbage collector for continuity scopes (Mongo collection *continuityScopes*). Newly, continuity scopes are deleted after 100 days. This can be changed by GARBAGE\_COLLECTOR\_CONTINUITY\_SCOPES\_TTL (default value 100) and GARBAGE\_COLLECTOR\_CONTINUITY\_SCOPES\_TTL\_UNIT (default value <mark style="color:green;">**"days"**</mark>). A component can increase the TTL of the continuity scope with `context.setMaxWait()` <https://docs.appmixer.com/building-connectors/behaviour#context.setmaxwait-timestamp>
* Garbage collector for message scopes (Mongo collection *messageScopes*). A message scope is deleted by a job if it is not used in a *timeout or continuity scope* and if it is older than 7 days. This can be changed by GARBAGE\_COLLECTOR\_MESSAGE\_SCOPES\_TTL (default value 168) and GARBAGE\_COLLECTOR\_MESSAGE\_SCOPES\_TTL\_UNIT (default value <mark style="color:green;">**"hours"**</mark>).

#### API

* POST|GET /logs API supports a new *searchAfter* query parameter, an example in <https://docs.appmixer.com/api/insights#query-parameters-1>
* A running flow cannot be updated via the API without ?forceUpdate=true in the query parameter. <https://docs.appmixer.com/api/flows#query-parameters-1>
* You can now inject a PWD-type account via API. <https://docs.appmixer.com/v/6.0/api/accounts>

#### System configuration

* New options to control the webhooks sent to the WEBHOOK\_FLOW\_COMPONENT\_ERROR URL.
  * WEBHOOK\_FLOW\_COMPONENT\_ERROR\_INCLUDE\_RETRY (false by default). If a message fails and is scheduled for a retry, a webhook is not sent by default to the WEBHOOK\_FLOW\_COMPONENT\_ERROR URL.
  * WEBHOOK\_FLOW\_COMPONENT\_ERROR\_INCLUDE\_QUOTA (false by default). If a message cannot be processed due to insufficient quota, a webhook is not sent by default to the WEBHOOK\_FLOW\_COMPONENT\_ERROR URL. <https://docs.appmixer.com/appmixer-backoffice/system-configuration#configuration-options>
* STRICT\_COOKIES default value is set to false.
* API\_USER\_CREATE\_SCOPE is editable through the Backoffice without the need to restart the engine. <https://docs.appmixer.com/appmixer-backoffice/system-configuration#configuration-options>

#### Miscellaneous

* Incoming webhooks are not counted in the telemetry.
* Added *type* property to flows. There are now 5 types of flows:
  * automation … Automation.
  * integration-template … Final published integration template.
  * integration-draft … Integration template that’s being edited.
  * integration-test … Temporary integration instance created by the Test functionality.
  * integration-instance … Instance of an integration template that runs in the context of an actual end-user.

The `appmixer.ui.FlowManager` shows only the flows with type:automation, for example. The *Integrations* page displays flows with `type:integration-draft`. Once a draft is published, an `integration-template` flow is created, and then every instance of the `integration-template` has `type:integration-instance`.

* Context Quotas and a Slow Queue are described in <https://docs.appmixer.com/appmixer-self-managed/configuration#context-quotas>
* AuthHub. Appmixer now features a central Authentication Hub, functioning as an authentication proxy, which simplifies the setup process by eliminating the need to register your own OAuth credentials with third-party services. The Authentication Hub is enabled for all hosted Appmixer tenants. In self-managed installations, the Authentication Hub has to be explicitly set. See <https://docs.appmixer.com/appmixer-self-managed/authentication-hub> for more details.

### Backoffice

* Older (but compatible) versions of a connector can now be installed.
* A custom *scope* can now be assigned to users in the Backoffice.

<figure><img src="/files/8HbYSqtKlwKWHRplyOSW" alt=""><figcaption></figcaption></figure>

* A connector that has been side-loaded from a filesystem can now be downloaded, same as connectors installed via the Appmixer marketplace.

<figure><img src="/files/yNlZOG7xCxNX2XmgwOld" alt=""><figcaption></figcaption></figure>

* Showing the installed version of a connector.

<figure><img src="/files/lrUWMdcW8SJcShKnnLlu" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.appmixer.com/changelog/version-6/6.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
