# What is Flexi Kanban?

Discover the Power of Customization

{% embed url="<https://youtu.be/WwoeiUyw3lU>" %}

FlexiKanban transforms your Salesforce platform UI with tailor-made Kanban boards, designed to adapt seamlessly to your unique workflow needs. Experience the true power of customization:

* **Tailor-Made Boards**: Dive into a world where every Kanban board is an opportunity for innovation. Craft your boards to fit your specific project requirements, ensuring efficiency and clarity in your workflow.
* **Unlimited Columns, Infinite Possibilities**: No matter the complexity of your process, our independently configurable columns cater to every detail. Whether it's a simple task list or a complex project flow, FlexiKanban bends to your will.
* **Customizable Cards**: Each card is a blank canvas for your Salesforce objects. Design them with the information that matters most to you, presented in a way that speaks to your team's unique needs.
* **Dynamic Data and Design**: With advanced formulas and functions, watch your data come to life. FlexiKanban's dynamic design capabilities ensure that the most relevant information is always at your fingertips.
* **Interactive Data Display**: Click on any card to uncover a deeper layer of information. Configure what data is shown to make the most out of every interaction.
* **Seamless Card Interactions**: Our robust actions engine facilitates not just card movements but also empowers you with button clicks and menu selections, enhancing your control and efficiency.
* **Versatile Forms for Every Need**: From simple data entry to complex information gathering, our mighty forms module is designed to meet and exceed your expectations.
* **Composite Kanbans for Comprehensive Overview**: Imagine a multi-board view where multiple Kanban boards coexist. Each board can have its own layout. Use drill-down to keep the big picture clear.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FlRNErY8L150dqm0Huiud%2Ffile.excalidraw.svg?alt=media&amp;token=f008eff9-7a3a-444b-aee3-0808120127a0" alt="" class="gitbook-drawing">


# Install Flexi Kanban

This guide will walk you through the process of installing the Flexi Kanban managed package from the Salesforce AppExchange into your Sandbox and Production environments. Flexi Kanban is a 100% native Salesforce application, which means it integrates seamlessly with your Salesforce data without the need for external service integrations.

### Step 1: Installing from AppExchange

To begin, you will need to get the Flexi Kanban package from the Salesforce AppExchange. You have two easy ways to find our listing:

* **Direct Link**: The simplest way is to use our [direct listing link](https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000FMhR1UAL).&#x20;
* **Search on AppExchange**: Alternatively, you can:
  * Navigate to the[ Salesforce AppExchange](https://appexchange.salesforce.com/).
  * In the search bar, type "Flexi Kanban" and press Enter.
  * Select the "Flexi Kanban" listing from the search results.

Once on the listing page, click the **Get It Now** button. You may be prompted to log in to your Trailblazer.me account if you are not already. Choose the Salesforce org where you want to install the package (either a Sandbox or Production org) and follow the on-screen prompts.

### Step 2: Select "Install for Admins Only"

During the installation process, you will be asked to choose the installation type. It is crucial to select Install for Admins Only. This ensures that initially, only users with the System Administrator profile will have access to the package. This allows you to configure the necessary permissions before granting access to other users.

### Step 3: Assigning Permission Sets

Once the installation is complete, you will need to assign permission sets to your users based on their roles. This step is essential for granting the appropriate level of access to Flexi Kanban's features.

* **Flexi Kanban Admin**: Assign this permission set to users who will be responsible for creating, configuring, and managing Flexi Kanban boards.
* **Flexi Kanban Viewer**: Assign this permission set to end-users who only need to view and interact with the Kanban boards.

For detailed instructions on how to assign these permission sets, please refer to our article: \
[Assign Permission Sets](broken://pages/DoaBAxFMcxxiJLKI8Kk9)

### Step 4: Managing Licenses in Sandbox and Production

The process for managing user licenses for Flexi Kanban differs between Sandbox and Production environments.

#### Sandbox Environment

In a Sandbox environment, Flexi Kanban comes with an org-wide unlimited license. This means you do not need to assign individual licenses to users in your Sandbox. As long as users have the appropriate permission sets, they will be able to use Flexi Kanban.

#### Production Environment

In your Production environment, you will need to assign a Flexi Kanban license to each user who will be using the application. After you have assigned the appropriate permission sets, you must also assign a paid seat license for those users to access Flexi Kanban.

For a step-by-step guide on how to assign licenses in your Production org, please see our article: [Manage Licenses](broken://pages/Z9KQN1ebO8No5kU5WeBj)

### Next Steps: Configure Application Settings

After successfully installing Flexi Kanban and assigning the necessary permissions and licenses, the final step is to configure the application's settings. This will allow you to define which Salesforce objects are available for creating Kanban boards.

To learn how to configure these settings, please see our guide:[ Flexi Kanban Application Settings](https://docs.flexikanban.ai/references/application-settings#object-settings).

By following these steps, you can successfully install and configure the Flexi Kanban managed package in both your Sandbox and Production Salesforce environments. Should you have any questions or encounter any issues during the installation process, please do not hesitate to contact our support team.

<br>


# Assign Licenses and Permissions

Use this flow after installing Flexi Kanban.

The order depends on your Salesforce org type:

* **Production and Developer orgs**: assign the managed package license first, then assign a permission set.
* **Sandbox orgs**: skip license assignment and assign the permission set directly.

{% hint style="info" %}
In Sandbox orgs, Salesforce creates an unlimited org-wide package license automatically.

You do not need to assign package licenses manually.
{% endhint %}

### Choose the right permission set

Assign only one permission set per user:

* **Flexi Kanban Admin** — full access to create and manage boards
* **Flexi Kanban User** — access to owned and shared boards
* **Flexi Kanban Viewer** — read-only access to shared boards

### Production and Developer orgs

In Production and Developer orgs, complete these steps in order.

{% stepper %}
{% step %}

### Step 1: Assign the managed package license

1. Open **Setup**.
2. Enter **Installed Packages** in Quick Find.
3. Select **Installed Packages**.
4. Find **Flexi Kanban**.
5. Click **Manage Licenses**.
6. Click **Add Users**.
7. Select the users who need access.
8. Save your changes.\
   \
   ![](https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fw1Md9qTe7XmUTEjX2UEU%2Fimage.png?alt=media\&token=9f3f3189-0f5f-44c0-83ca-e8eb6cc4eba8)

If all licenses are already assigned, remove unused licenses or contact <sales@flexikanban.com> for more seats.
{% endstep %}

{% step %}

### Step 2: Assign a permission set

1. Open **Setup**.
2. Enter **Users** in Quick Find.
3. Select **Users**.
4. Open the user record.
5. In **Permission Set Assignments**, click **Edit Assignments**.
6. Add one of these permission sets:
   * **Flexi Kanban Admin**
   * **Flexi Kanban User**
   * **Flexi Kanban Viewer**
7. Save your changes.\
   \
   ![](https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FhYIqMfJxq2K5UE54Ymx9%2Fimage.png?alt=media\&token=cd400695-945a-4d35-8b2e-2bd2adfdb71f)

Do this only after the package license is assigned.
{% endstep %}
{% endstepper %}

### Sandbox orgs

In Sandbox orgs, assign only the permission set.

1. Open **Setup**.
2. Enter **Users** in Quick Find.
3. Select **Users**.
4. Open the user record.
5. In **Permission Set Assignments**, click **Edit Assignments**.
6. Add one of these permission sets:
   * **Flexi Kanban Admin**
   * **Flexi Kanban User**
   * **Flexi Kanban Viewer**
7. Save your changes.\
   \
   ![](https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FnswfuPUxDRHlX0c1ahns%2Fimage.png?alt=media\&token=09c31287-c314-43ac-b75b-10153572e50c)

No manual package license assignment is required in Sandbox.

### Quick summary

* **Sandbox**: assign the permission set only.
* **Production**: assign the managed package license first, then the permission set.
* **Developer org**: assign the managed package license first, then the permission set.


# Flexi Kanban App Overview

Learn how to open the Flexi Kanban Salesforce app, understand its main tabs, and know where to start as a new admin.

Flexi Kanban is a Salesforce app that includes a set of tabs for working with Kanban boards, forms, reusable automations, and application settings.

This page helps you get oriented in the app and understand which tab to use first. It does not explain every feature in detail. More advanced topics, such as **Kanban Studio** and **Form Studio**, are covered in separate articles.

### Before you begin

Before opening the Flexi Kanban app, make sure:

* Flexi Kanban is installed in your Salesforce org
* Your user has a Flexi Kanban license
* Your user has the required Flexi Kanban permission set assigned

### Open the Flexi Kanban app

In Salesforce:

1. Open the App Launcher.
2. Search for **Flexi Kanban**.
3. Select the **Flexi Kanban** app.

Once the app opens, you will see several tabs. Each tab serves a different purpose.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F6x4mby7eV93mmC0sv1zU%2Fimage.png?alt=media&amp;token=231ec219-97a3-41e6-ab4f-dbc5f597c159" alt=""><figcaption></figcaption></figure>

### Where should a new admin start?

If you are creating your first board, start from the **Kanbans** tab.

To create a new Kanban:

1. Open the **Kanbans** tab.
2. Click **New**.
3. This opens the **Kanban Creation Wizard**.

{% hint style="info" %}
The **Kanban Creation Wizard** helps you generate a board that is immediately usable. After that, you can open the board in **Kanban Builder/Studio** and enhance it with more advanced layouts, styling, interactions, filters, forms, and automations.
{% endhint %}

### Flexi Kanban Application Tabs

***

### Kanbans

The **Kanbans** tab shows the list of existing Kanbans that you have access to in your Salesforce org.

From this tab, you can create a new Kanban, open a Kanban in Viewer mode, or manage existing Kanbans you have access to.

{% hint style="info" %}
When you click **Edit**, the Kanban opens in **Kanban Studio**, where you can configure advanced board settings such as layout, columns, cards, filters, interactions, and automation.
{% endhint %}

### Forms

The **Forms** tab lists the Forms available in your org.

Forms in Flexi Kanban enable interactive, custom experiences linked to your boards, such as displaying card details or popping up a form when a card is moved to a different column.

Use this tab to create a new form or manage existing forms.&#x20;

### Actions

The **Actions** tab shows the list of reusable **Actions** available in your org.&#x20;

{% hint style="info" %}
An Action is a reusable automation element that performs one backend operation.
{% endhint %}

Examples of actions include validating data, defining variables, creating, updating, or deleting a record, sending an email, making a callout, and executing Apex logic.

&#x20;Use this tab to create a new action or manage existing actions.&#x20;

### Action Groups

The **Action Groups** tab shows the list of reusable **Action Groups** available in your org.

{% hint style="info" %}
An **Action Group** is a sequence of individual Actions executed one after another. All Actions inside the group share the same runtime context and variables. Think of an **Action Group** as a reusable multi-step automation flow.
{% endhint %}

Use this tab to create a new Action Group or manage existing ones you have access to.&#x20;

### Settings

The **Settings** tab is used to manage application-level Flexi Kanban configuration for your Salesforce org.

Use this tab when you need to review or update global settings that affect how Flexi Kanban works across your organization, including general application behavior, supported objects, and integration-related configuration.

A detailed overview of the available settings is covered in a separate article.


# Build Your First Board in 5 Minutes

In this tutorial, you will create your first working **Opportunity** Kanban board using the **Kanban Creation Wizard**.

You will start from the **Kanbans** tab, create a new board, choose **Opportunity** as the source object, and group records by **Stage**. By the end, you will have a fully functional board that is ready to use right away.

{% hint style="info" %}
This tutorial focuses on the fastest way to create a working board. You can enhance it later in **Kanban Studio** with advanced layouts, color-codings, filters, interactions, forms, and automations.
{% endhint %}

### Before you begin

Before starting, make sure:

* Flexi Kanban is installed in your Salesforce org
* your user has a [Flexi Kanban license and a permission](/get-started/assign-licenses-and-permissions) set assigned
* your Salesforce org utilizes the Opportunity object, and you have some opportunity records.

### What you will build

In this tutorial, you will create:

* a Kanban board based on **Opportunity** records
* columns grouped by **Stage**
* optional stage summaries based on **Amount**
* cards displaying key Opportunity fields
* optional AI-assisted card color coding

This is the fastest way to create a practical first board and understand the basic Flexi Kanban setup flow.

### Open the Flexi Kanban app

In Salesforce:

1. Open the **App Launcher**.
2. Search for **Flexi Kanban**.
3. Select the **Flexi Kanban** app.
4. Open the **Kanbans** tab.
5. Click **New**.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FOH6MTPpfILxlGBF2nyyD%2Fimage.png?alt=media&amp;token=7eccc894-bf8c-481e-8848-2e34ef2a254d" alt=""><figcaption></figcaption></figure>

This opens the **Kanban Creation Wizard**.

### Step 1: Select the Kanban Type

In the first step of the **Kanban Creation Wizard**, select the **Standard Kanban** type. This is the best option for creating a basic board from a single Salesforce object such as **Opportunity**.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FHfJpbCEpbYUQe0NxeeXd%2Fimage.png?alt=media&amp;token=96692eaa-e0aa-4020-89b3-3e160ed4127a" alt=""><figcaption></figcaption></figure>

After selecting **Standard Kanban**, click **Next**.

### Step 2: Personalize the Board

In this step, define the basic identity and visual style of your board.

You can:

* choose one of the predefined color themes
* enter a name for the board
* optionally add a description

For example, you can name the board:

* **Opportunities by Stage**
* **Sales Pipeline**
* **Opportunity Workflow Board**

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F4oBSDIYYHFGXmlhFABbo%2Fimage.png?alt=media&amp;token=17696fd8-f1e9-4984-bb9e-87c2a09d58ff" alt=""><figcaption></figcaption></figure>

After entering the required information, click **Next**.

### Step 3: Configure Data and Grouping

In this step, define what records the board should display and how they should be organized.

Select:

* **Opportunity** as the data source
* **Stage** as the field used to group records into columns

You can also enable stage-level summarization by selecting the fields used for totals, such as **Amount**.

This allows Flexi Kanban to show Opportunity records grouped by Stage and optionally summarized by value in each column.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FeEllw88MHvRcp6l8NWgn%2Fimage.png?alt=media&amp;token=09c1e011-2d7d-443b-b4b6-a7d27b406a42" alt=""><figcaption></figcaption></figure>

After entering the required information, click **Next**.

### Step 4: Add Columns

Add columns for the stages you want to include in the board.

Typically, this means adding columns for all stages in your sales process.

One important advantage of Flexi Kanban is that it allows you to include a column for **lost opportunities**. This helps your team track lost deals and identify patterns over time.

This solves an important limitation of the standard Salesforce Kanban view, where lost opportunities are not displayed.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FWEbpUXj5bJjfLaT0hBcb%2Fimage.png?alt=media&amp;token=7fd46aef-6bfd-4bad-b14b-8462b3df18e2" alt=""><figcaption></figcaption></figure>

After selecting the columns you want to include, click **Next**.

### Step 5: Select Card Fields

Choose which Opportunity fields should appear on the Kanban cards.

Add the key fields your users need to see directly on the board, such as:

* Opportunity Name
* Account Name
* Amount
* Close Date
* Opportunity Type
* Owner's Full Name

Flexi Kanban supports **unlimited field options** on cards, which provides much greater flexibility than the standard Salesforce Kanban view, which is limited to four fields.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FGpuG7AUcvWKbJSXOOitR%2Fimage.png?alt=media&amp;token=42d49f78-8714-4580-8d07-b8c57c953af5" alt=""><figcaption></figcaption></figure>

After selecting the fields you want to display, click **Next**.

### Step 6: Apply AI-Assisted Color Coding (Optional)

To help users quickly identify important records, you can apply color coding based on Opportunity data.

In this step:

1. Click **Generate Color Coding Ideas** to let the integrated AI-powered assistant suggest initial color-coding rules that you can adjust later in the Kanban Studio if needed.
2. Review the generated summary and suggested mapping by clicking **View Color Legend**.
3. Select the ideas that best match your business needs.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FRcgfUFfON1tBgRDEDDt8%2Fimage.png?alt=media&amp;token=33c0caae-2fd8-4f65-88de-64063fbd907a" alt=""><figcaption></figcaption></figure>

For example, you might choose to color-code cards based on:

* Opportunity Type
* Amount
* Close Date

This helps users visually spot high-value, urgent, or strategically important opportunities.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FwNFxfqkjVkaTxuX4bB3n%2Fimage.png?alt=media&amp;token=904e6078-202f-4ab9-8685-602d4de5a81a" alt=""><figcaption></figcaption></figure>

After selecting the color-coding ideas you want to use, click **Next**.

### Step 7: Finalize the Board

To generate the board, review configuration settings and click **Finish**.

Before finishing, make sure to uncheck **Launch Advanced Kanban Builder.**&#x20;

This keeps the tutorial focused on the simplest onboarding flow. Instead of opening the board in **Kanban Builder/Studio**, Flexi Kanban will create the board and let you open it first in **Viewer mode**.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FSjEIrNazBbZyYDbxZTSy%2Fimage.png?alt=media&amp;token=7d4b18f3-1f3e-48a8-968a-7208b093c888" alt=""><figcaption></figcaption></figure>

Flexi Kanban creates the initial board based on the configuration you selected in the Wizard.

As a result, your Opportunity records are:

* arranged into columns based on their current Stage
* optionally summarized by stage totals
* displayed with the card fields you selected
* visually categorized using the color-coding rules you applied

Your board is now ready to use.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FpA33LHnhadghOrZ1tInX%2Fimage.png?alt=media&amp;token=912f4aac-159f-4226-8064-cd79f94e3a34" alt=""><figcaption></figcaption></figure>


# What to Learn Next


# How to Build a Simple Kanban Using Creation Wizard Abilities

In this tutorial we will create a simple, but actual working Kanban that will allow to manage Cases.

Case is a standard Salesforce object that offers a set of necessary properties.

{% hint style="info" %}
Note: links in this article are going to other parts of this documentation, that are very useful. Read them to know more about mentioned things.
{% endhint %}

### Some Terminology

Standard kanban consists of the following parts:

* [**Header**](/standard-kanban/configure-kanban/how-to-configure-kanban-basic-properties) (where filter selector, buttons and kanban name are shown)
* [**Body**](/standard-kanban/configure-kanban/working-with-kanban-layout) (where columns and sidebars)
* [**Columns**](/standard-kanban/configure-column) (that represent some conditions which cards should match)
* [**Cards**](/standard-kanban/configure-card) (each card represents one record)

Kanban header can contain:

* [**Buttons**](/standard-kanban/configure-kanban/how-to-add-kanban-buttons-and-menus) (and menus that are buttons that show dropdown list with menu items)
* [**Statistics**](/standard-kanban/configure-kanban/how-to-add-kanban-statistics) (set of cells with some information)

Columns consist of:

* [**Header**](/standard-kanban/configure-column/how-to-configure-column-header) (where column name and cards counter are shown)
* [**Body**](/standard-kanban/configure-column/how-to-configure-column-body) (where cards are displayed)
* [**Footer**](/standard-kanban/configure-column/how-to-configure-column-footer) (optional, by default it is absent)

Column header and footer can contain **cells** with some information. Column footer allows to display cells in several rows.

Card has the following parts:

* [**Compact layout**](/standard-kanban/configure-card/how-to-configure-card-compact-layout) (actually elements that are on the card)
* [**Layout**](/standard-kanban/configure-card/how-to-configure-card-layout) (information, form or something else that will be shown in the sidebar or modal popup when card is clicked)

Card compact layout consists of[ **cells**](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons) with some information.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FWGoPPkwLIvaGBPFg5N4u%2Ffile.excalidraw.svg?alt=media&amp;token=1e6e580a-6b3a-4b47-83e9-509dcb844b88" alt="" class="gitbook-drawing">

### Start Kanban Creation

Let's Start with Kanban Creation Wizard and give your Kanban a name and look.

* First, open a Flexi Kanban Application and go to "Kanbans" tab. Click "**New**" button to start New Kanban wizard:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FFujCeIFJ6HCKhs8GHhLR%2Ffile.excalidraw.svg?alt=media&amp;token=82a6f5ea-80cc-4e55-81b2-2b07711b0a71" alt="" class="gitbook-drawing">

Select "Standard Kanban" first. Then click "Next" button:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FKuHAFceHSAu5gYy6QLX8%2Ffile.excalidraw.svg?alt=media&amp;token=00214c47-538e-4aeb-9ac5-aeaae2f07343" alt="" class="gitbook-drawing">

* Let's call your new Kanban "**Cases Management Dashboard**". Type this in the "**Name**" field.
* Select a **Color** **Theme** (pre-defined design). Default is "**White**" and typical look of the kanban will be shown in preview. Let's leave it as is.
* **Description** is not mandatory and affects nothing - it is used just to show something useful in the list of kanbans at the "**Kanbans**" tab.
* Click "**Next**" button.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fpd8gKdh5EM7AJFCi2om3%2Ffile.excalidraw.svg?alt=media&amp;token=19158e87-4803-4345-a80d-bff1d87a9aa0" alt="" class="gitbook-drawing">

### Set What your Kanban will Work With

* At the next step select **"Case"** in Source Object picklist.&#x20;
* The "Group By" picklist will be populated with fields of Case object.
* Leave "Summarize By" empty (by default cases do not have any countable fiels suitable for adding totals):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FG8rdDTnhClY0cnYpDsbt%2Ffile.excalidraw.svg?alt=media&amp;token=91b0b5bc-e0cf-4c5d-86a5-6abb4ad31c45" alt="" class="gitbook-drawing">

### Specify what Columns do You Need in your Kanban

{% hint style="info" %}

* Fields you see in "Group By" picklist are properties (standard and custom) of Case object.
* Only fields that are restricted with a set of values (picklists and multi-selects) are only shown here.
  {% endhint %}

Now the main idea of your kanban should be specified: what should be done when you drag a card from one column to another. This can be made by selecting a field, which values will be represented by future columns. Card in columns will be shown matching this value, and when card is dragged to another column, the value will be automatically updated.

* Let's select "**Status**" in the "Group By" picklist and click "Next" button. The next step of wizard will be shown.&#x20;
* An "Available Values" section (left side) contains a list of values (that are available for the field selected above). Select necessary and then click "►" button to add selected. Let's select all values.
* An "Add Columns For" (right side) section will contain list of values that will be represented by future columns:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FEEcAT58Ic9q88zkHzgkG%2Ffile.excalidraw.svg?alt=media&amp;token=6c3dc0ee-0cb8-4b7f-ae7d-b87aeb19dd6d" alt="" class="gitbook-drawing">

* Then re-arrange future columns in desired order <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FkJQMDvjPvFdOvYjzCKM2%2Fimage.png?alt=media&amp;token=c4c5ab89-dfaf-4d31-bff9-17537e97f3e1" alt="" data-size="line">(first value in the list will be leftmost column, last value - rightmost one). Set order to "New, Working, Escalated, Closed":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FAJVna6Tu3bpyVY8IgJIJ%2Ffile.excalidraw.svg?alt=media&amp;token=0acff8a6-edaf-4274-b8f2-a86b5ba0f54d" alt="" class="gitbook-drawing">

Congratulations! Columns are now configured. Your kanban will have 4 columns with column names equal to selected values. These columns will have equal widths.

### Add Dragging

By default an "Allow users to move cards between columns" toggelr is turned on. This means system will automatically configure the following things:

* Allow dragging cards between columns
* Create an action that will triggered on drag and will update "Status" field of record represented by dragged card
* "Status" field of that record will be updated to value that is represented by target column

So, just leave this toggler on:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FuxlWaHJQKTfLdr0MQ5JY%2Ffile.excalidraw.svg?alt=media&amp;token=772a7c31-41bb-4b00-a969-6b5b34a7e3ee" alt="" class="gitbook-drawing">

### Specify what Fields do You want to See in a Card

Now click "Next" button to go to step of wizard where you can specify what should be displayed on the card.

* The fields selector is shown there.
* Left side of this selector contains a list of source object fields  named "**Available Fields**".
* Right side will contain list of fields (named "**Card Fields**") that will be shown on the card.
* Select the following fields from "**Available Fields**" and add them to the "**Card Fields**" list in this order:

1. Case Number
2. Subject
3. Account ID -> Account Name
4. Created Date
5. Case type

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FINXtmtBmjVGYy6wJoTvw%2Ffile.excalidraw.svg?alt=media&amp;token=16daef79-f449-4e56-b4c0-8b80b4eb9f4b" alt="" class="gitbook-drawing">

{% hint style="info" %}
You must add at least one field, but no more than 12. If you want more fields to be shown at the card, you can add them in card builder later.
{% endhint %}

* If you want to see card with labels (in "Field name | Field value" format, e.g. "**`Case Type`**` ``Mechanical`"), leave "Display field labels on Kanban cards" toggler on. Turn it off to show only record properties (field values) on the card.
* Click "Next" button.

At the following wizard step you have the ability to ask AI for some card coloring. Of course, this is not mandatory.

* If you interested, click "Generate Color Coding Ideas" button:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FGP7cneU2bM5P7jAeIg3Y%2Ffile.excalidraw.svg?alt=media&amp;token=c7f3d70d-bba1-44dd-ae90-3d85c7c678cf" alt="" class="gitbook-drawing">

* After a small time AI will suggest several (usually 3) options:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FNN3rxqVuOwD9KFi6Q5JT%2Ffile.excalidraw.svg?alt=media&amp;token=1137a01c-b953-4836-a054-321bf3e710f4" alt="" class="gitbook-drawing">

* Offered ideas can touch card background, left border or some field text color:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FAmfK0fcUCZCgdglKRbtO%2Ffile.excalidraw.svg?alt=media&amp;token=9ae1c400-2022-4e62-9701-35ebd1be6f75" alt="" class="gitbook-drawing">

* You can select none, one, several or even all coloring ideas and Card/Card element(s) will take proper formulas in proper CSS rules.
* You can not select more than one idea for the same card/card element. E.g., if AI suggests 2 ideas for a card background, system will allow you to select only one of them.
* If you are not satisfied with suggested ideas, you can click "Generate Color Coding Ideas Again" button to give AI one more chance.

{% hint style="warning" %}
Please note that AI is not ideal and can generate (very rarely) incorrect formulas, so, if newly created kanban shows something incorrect, just temporary remove generated formulas from card CSS.&#x20;

We're working on prompts improvement, but sometimes AI makes us surprised.
{% endhint %}

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FRZFxDkf7n0zwwG9ZQs9A%2Ffile.excalidraw.svg?alt=media&amp;token=6d530a47-0af6-4349-9dc7-d9b10ba9eddc" alt="" class="gitbook-drawing">

* Select ideas (if you want) and click "Next" button.

Congratulations! Card compact layout is now configured.

### Save Your New Kanban

* At the last step of Creation Wizard you can review kanban main properties and still go back to change something:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FY5PyPH9BVsJiTRmZAyY2%2Ffile.excalidraw.svg?alt=media&amp;token=56d8cd80-379e-414e-a848-eb410460e1d5" alt="" class="gitbook-drawing">

* If everything is correct, click "**Finish**" button. If you want just to see results, turn "Launch Advanced Kanban Builder After Wizard Completion" toggler off. If you leave it on (default), you will go to Kanban Builder where your new kanban will be opened:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FAzKtb8QcT9GRzfeDYQCw%2Ffile.excalidraw.svg?alt=media&amp;token=108171ae-0a54-4d50-92ae-05a97610bedb" alt="" class="gitbook-drawing">

{% hint style="success" %}
If you open Kanbans page now and click on a newly created kanban, you will see what you have created. This kanban will show cards in columns they corresponding to.
{% endhint %}

### Look at Your New Kanban

* If you have made any changes (e.g., edited a kanban description), do not forget to click "**Save**" button on the Kanban Builder:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FnkzCSjWfqbKt3PipxPPm%2Ffile.excalidraw.svg?alt=media&amp;token=3a15539c-6dc7-4eeb-a8e8-b3304762c3eb" alt="" class="gitbook-drawing">

* Click "**Close**" button to go out from kanban Builder.

Now go to **Kanbans** tab, find your kanban and click it's name to open it. Try to drag a card:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FxlCxCFb6hsauilAAa4Fa%2Fkanban.gif?alt=media&amp;token=2705f19b-5940-4e34-b74c-b8a3e87ad7d5" alt=""><figcaption></figcaption></figure>

Congratulations! You have created your first working Kanban, that really can be used to manage Cases.

Of course, this Kanban is quite simple, and some of things can be done better (but in some more complex way). We recommend you to study this documentation, especially ["howtos" and "best practices".](/standard-kanban/howtos-and-best-practices)

Thank you!


# Why Kanban in Salesforce?

### What Is a Kanban?

A **Kanban** is a visual project management tool that organizes work into columns representing stages of a process. Each piece of work — whether a deal, a task, a support ticket, or any other record — appears as a card on the board. As work progresses, cards move from one column to the next, giving everyone on the team an immediate, at-a-glance understanding of where things stand.

The concept originates from lean manufacturing and has since become a cornerstone of modern workflows across sales, service, operations, and beyond. At its core, Kanban answers three simple questions:

* **What needs to be done?**
* **What is currently in progress?**
* **What has been completed?**

Rather than digging through lists, reports, or spreadsheets, teams can see the full picture in a single view — and act on it directly.

### Salesforce Is More Than a CRM

While it began with CRM use cases, today it is widely used as an application platform for building and customizing business-critical solutions. Organizations extend standard objects with custom fields, create entirely new custom objects, and assemble company-specific apps that support core operational processes.

As a result, the data stored in Salesforce often goes far beyond contacts and opportunities. Depending on the business, it may include manufacturing orders, loan applications, inspection reports, project milestones, onboarding tasks, service workflows, or other domain-specific records.

That data still often appears in structured, record-based interfaces such as list views and record pages. Those interfaces are effective for data entry and lookup, but as processes become more operational and multi-step, teams can lose visibility into status, bottlenecks, and next actions.

This is where **Kanban becomes especially valuable**. By turning Salesforce records from either standard or custom objects into a visual board, **teams get a clearer, more actionable view of work in progress**.

### What Kanban Solves in Salesforce

#### Visualize Any Business Process, Not Just Sales

Whether your team manages deals, service requests, loan approvals, job orders, or any other custom workflow, a Kanban board can represent it visually. Any object with a stage or status field is a candidate — standard or custom.

#### Prioritize and Triage Work at a Glance

Instead of reading rows in a list view, teams see cards in columns. Bottlenecks are obvious. What needs attention today is immediately visible. No report needed.

#### Take Action Directly on the Board

Moving a card from one column to the next updates the underlying Salesforce record in real time. Teams act on the board rather than just reading it — which means fewer clicks, less context switching, and faster execution.

#### Improve Team Coordination

When everyone works off the same board, miscommunication drops. Team leads can reassign work by dragging and dropping cards. Everyone knows what is blocked, what is moving, and what needs a decision.

#### Bring Clarity to Custom and Industry-Specific Apps

Custom Salesforce apps built for specific industries or company workflows often have data models that don't map neatly to standard list views. Kanban cuts through that complexity, giving users a clear visual interface that reflects how their actual work flows — not just how the data is structured.

### Where Kanban Adds the Most Value in Salesforce

Any object with a picklist field representing progression — standard or custom — is a candidate for a Kanban board. The table below shows just a sample of the scenarios where Kanban provides immediate value.

| Use Case                          | Object        | Kanban Columns     |
| --------------------------------- | ------------- | ------------------ |
| Pipeline management               | Opportunity   | Sales Stage        |
| Case management                   | Case          | Status             |
| Lead qualification                | Lead          | Lead Status        |
| Project tracking                  | Custom Object | Phase / Milestone  |
| Onboarding workflows              | Custom Object | Step / Stage       |
| Loan or application processing    | Custom Object | Application Status |
| Field service work orders         | Work Order    | Work Order Status  |
| Manufacturing or production steps | Custom Object | Production Stage   |
| Inspection or audit tracking      | Custom Object | Review Status      |

***

### What About Salesforce Kanban View?

Salesforce does include a built-in **Salesforce Kanban View** — a basic card-based interface available on standard list views. While it offers a simple visual overview, it comes with significant limitations that make it impractical for teams with more demanding or complex workflows:

* Cards can display a maximum of 4 fields
* Only up to 200 records can be shown at a time
* Columns are locked to a one-to-one mapping with individual picklist values, with no support for merging values, using other field types, or defining columns using conditional logic — see [Rigid Column Logic](https://claude.ai/chat/a15cae4f-0f4c-437a-8ab4-dd153a21f1ca#rigid-column-logic) below
* Filtering options are basic, with no support for complex or dynamic criteria
* Automation triggered by card movements is limited to backend operations only — invisible to the user and disconnected from their interaction with the board — see [Workflow Automation and Interactivity](https://claude.ai/chat/a15cae4f-0f4c-437a-8ab4-dd153a21f1ca#workflow-automation-and-interactivity) below
* Customization of card appearance and layout is not possible

For teams running straightforward processes on standard objects, Salesforce Kanban View may be sufficient. But for organizations that have extended Salesforce into a full business platform — with custom objects, complex workflows, and higher data volumes — these constraints quickly become a bottleneck.

That is the gap **Flexi Kanban** is built to fill. To learn more about how Flexi Kanban addresses these limitations, continue to [What is Flexi Kanban?](https://claude.ai/chat/02-what-is-flexi-kanban.md).

***

### Rigid Column Logic

The column constraint in Salesforce Kanban View deserves a closer look, because its impact goes beyond what a brief bullet point can convey.

Salesforce Kanban View columns are locked to a one-to-one mapping with individual picklist values — one value, one column, no exceptions. In practice, this creates three distinct problems.

**You cannot consolidate multiple picklist values into a single column.** If you want a unified "Closed" column on an Opportunity board, you cannot have one. Closed Won and Closed Lost will always appear as separate columns, whether or not that distinction is useful for how your team works.

**Columns can only be driven by a single picklist field.** No other field type can serve as the basis for grouping. If the field that best represents your workflow's progression is a formula field, a checkbox, a date, or any field other than a picklist, it cannot be used.

**There is no way to define a column using conditional logic.** Consider an "Attention Needed" column — one that surfaces any opportunity missing key fields, past a certain close date, or flagged by any combination of business criteria. That kind of column, which reflects how teams actually think about prioritization, is simply not possible in Salesforce Kanban View.

Flexi Kanban removes all three constraints. Columns can group any combination of picklist values, draw on different field types, and be defined using formula-based conditions — giving teams the flexibility to build boards that reflect their actual workflows rather than the shape of their data.

***

### Workflow Automation and Interactivity

Salesforce Kanban View does support a narrow form of automation: when a user moves a card to a new column, the underlying picklist field updates, and admins can build record-triggered flows on top of that — creating records, sending emails, or performing other backend actions. However, everything that follows happens invisibly. The user who moved the card sees nothing. There is no visual response, no confirmation, no connection between what they did on the board and what the automation did behind the scenes.

Flexi Kanban expands this in two directions.

**Handlers** make individual cards and card elements interactive. Admins can configure what happens when a user clicks on a card or on any specific element within it — such as a field, a button, or a label. Actions can include opening a modal, navigating to another page, or applying an on-the-fly filter to the board. That last capability — where clicking an element like an account name instantly filters the entire board to show only cards sharing that value — is what makes drill-down workflows possible directly within a session, without leaving the board or running a separate query.

**Kanban Workflow** gives admins control over how cards are allowed to move between columns. This includes defining which column transitions are permitted, requiring a user action or confirmation before a move is completed, triggering backend automation on move, and restricting which users are allowed to make which transitions.

Both capabilities are covered in detail in the [Features](https://claude.ai/features/) section.


# What is Flexi Kanban?

### The Problem with Salesforce Kanban View

As covered in [Why Kanban in Salesforce?](/why-kanban-in-salesforce), Salesforce's built-in **Salesforce Kanban View** works for simple scenarios but breaks down quickly when teams need more — more fields on cards, more records visible at once, more flexibility in how columns and workflows are configured.

{% hint style="info" %}
Organizations that have extended Salesforce into a full business platform, with custom objects and industry-specific apps, need a Kanban solution that keeps pace with that complexity.
{% endhint %}

### Introducing Flexi Kanban

{% hint style="success" %}
**Flexi Kanban** is a Salesforce-native Kanban solution built to go far beyond what Salesforce Kanban View offers — without ever leaving your Salesforce org.
{% endhint %}

There are no external tools to connect, no data leaving Salesforce, and no complex integrations to maintain. Flexi Kanban works directly with your existing Salesforce data: your objects, your fields, your relationships, and all the logic your org already has in place.

### How Flexi Kanban Is Different

Where Salesforce Kanban View is rigid and limited, Flexi Kanban is designed to be flexible and powerful. Here is how it addresses each of the native view's key limitations:

| Salesforce Kanban View                          | Flexi Kanban                                                                      |
| ----------------------------------------------- | --------------------------------------------------------------------------------- |
| Maximum 4 fields per card                       | Display as many fields as needed, with full control over card layout              |
| Maximum 200 records visible                     | Handles large data volumes with pagination and infinite scrolling                 |
| Static columns tied to standard picklist fields | Fully configurable columns, including headers, footers, and data loading settings |
| Basic filtering only                            | Advanced filtering with complex, multi-criteria conditions                        |
| No workflow automation                          | Automation triggered by card movements — actions, notifications, record updates   |
| No card styling or color coding                 | Dynamic color coding based on configurable formula conditions                     |
| Single object per board                         | Mix records from different Salesforce objects on the same board                   |

### Key Capabilities

#### Rich, Configurable Kanban Cards

Every card on a Flexi Kanban board is fully configurable. You choose which fields appear, how they are laid out, and how the card looks for each column. Cards can be dynamically color-coded based on conditions you define — making it easy to spot at a glance which records need attention.

#### Advanced Filtering and Sorting

Flexi Kanban supports complex, multi-criteria filters so teams can focus on exactly the subset of data they need. Filters can be set at the board level, the column level, or dynamically by the user. Card elements can also be configured as interactive — clicking an element applies a filter to the board's columns using the value that element displays as a parameter, enabling drill-down navigation directly from the card without any additional UI.

#### Column-Level Configuration

Each column on a Flexi Kanban board is independently configurable. You can control how data loads into it, what is displayed in its header and footer, and how totals or statistics are shown — per column, not just per board.

#### Workflow Automation on Card Movement and Card Element Clicks

Flexi Kanban can trigger automated actions from two sources: moving a card from one column to another, and clicking a configured element on a card. Both support the same range of actions — updating related records, sending notifications, firing Salesforce flows, or opening forms. Card elements can each be configured independently, so different elements on the same card can trigger different actions. This turns the board from a passive visualization into an active part of your workflow.

#### Multiple Salesforce Objects on One Board

A single Flexi Kanban board can display records from different Salesforce objects simultaneously. This makes it possible to represent mixed or cross-functional workflows without needing separate boards for each object.

#### Salesforce-Native and Secure

Because Flexi Kanban runs entirely within your Salesforce org, it respects all existing security settings, sharing rules, and field-level permissions. No data ever leaves Salesforce.

***

### Three Board Types for Every Need

Flexi Kanban supports three board types — **Standard**, **Child**, and **Composite** — each designed for a different deployment scenario. Together they cover the full spectrum of how teams need to visualize and act on their work in Salesforce.

To understand which board type is right for your use case, continue to [Understanding Flexi Kanban Board Types](https://claude.ai/chat/03-understanding-board-types.md).


# Understanding Flexi Kanban Types

Flexi Kanban supports three board types: **Standard**, **Child**, and **Composite**. Choosing the right one depends on where the board will live and how it relates to your data — not on how complex your workflow is. All three types are equally powerful and share the same underlying capabilities.

***

### Standard Board

#### What It Is

A **Standard Board** is the most common Flexi Kanban board type. It presents records as cards organized into columns, giving your team an immediate visual overview of where work stands across your entire org — or any filtered subset of it.

A Standard Board lives as a **standalone page** in your Salesforce app. It is org-wide by default, meaning it can display records from across the organization, scoped only by whatever filters you configure.

A single Standard Board can surface records from **multiple Salesforce objects simultaneously** — making it flexible enough to represent mixed or cross-functional workflows in one place.

#### How It Works

You configure a Standard Board by selecting:

* **The Salesforce object(s)** whose records should appear on the board (e.g., Opportunity, Case, Lead, or any custom object — including a mix of object types)
* **The columns** — each column is independently configurable, including its header, footer, data loading settings, and the criteria that determine which records it displays
* **The fields to display** on each card, along with card layout and optional dynamic color coding based on conditions you define
* **Filters** to control which records appear on the board, supporting complex, multi-criteria conditions

Once configured, users see a live board. Moving a card from one column to another immediately updates the underlying Salesforce record — and can trigger automated actions such as field updates, notifications, or Salesforce flows.

#### When to Use a Standard Board

A Standard Board is the right choice when:

* You want a **standalone, org-wide view** of a workflow or process
* Your team needs a fast, actionable overview they can work from directly

**Common examples:**

* Sales pipeline (Opportunities by Stage)
* Support queue (Cases by Status)
* Lead nurturing board (Leads by Lead Status)
* Project tracker (Custom Object by Phase)
* Staffing triage board (Job Openings and Candidates as separate columns on one board)
* Real estate listings board (Properties and Deals as separate columns on one board)

{% hint style="info" %}
**Note:** Boards that display records from multiple objects — like the staffing and real estate examples above — are still a single Standard Board. This is a native capability of any Flexi Kanban board, not a reason to use a Composite Board. A Composite Board is for placing multiple independent boards side by side on one screen — not for mixing object types.
{% endhint %}

***

### Child Board

#### What It Is

A **Child Board** is technically the same board type as a Standard Board — it uses the same engine, the same configuration options, and works in exactly the same way. The difference is purely in **where it is placed** and **how its filters are set up**.

A Child Board is embedded directly on a **Salesforce record page** as a Lightning component. Its filters are pre-configured to automatically show only the records related to the parent record it is placed on. When a user opens that parent record, the board loads instantly and displays only the relevant child records — no manual filtering required.

This makes it ideal for managing work within the context of a single record, without navigating away from it.

#### How It Works

A Child Board is placed on a parent record page using Salesforce's Lightning App Builder. During configuration, you set hidden filters that scope the board to records related to that specific parent — using the relationship field that connects them.

When a user opens the parent record, the board reads the current record's ID, applies the pre-configured filters automatically, and displays only the related child records grouped by their stage or status.

Everything else — card layout, column configuration, automation, color coding — works identically to a Standard Board.

#### When to Use a Child Board

A Child Board is the right choice when:

* You want to manage related records **in the context of a specific parent record**
* Your team works record-by-record and needs all related work visible without navigating away
* Different parent records have different sets of child records that need independent tracking

**Common examples:**

* **Account → Opportunities**: All open deals for a specific account, visible directly on the Account record page
* **Opportunity → Tasks**: All follow-up tasks for a deal, managed without leaving the Opportunity
* **Project → Milestones**: All milestones for a project, tracked directly on the Project record
* **Case → Child Cases**: All sub-cases linked to a parent case, visible in context
* **Contact → Activities**: All pending activities for a contact, triaged without leaving the Contact record

#### Standard Board vs. Child Board at a Glance

|                       | Standard Board                         | Child Board                                             |
| --------------------- | -------------------------------------- | ------------------------------------------------------- |
| Underlying board type | Same                                   | Same                                                    |
| Where it lives        | Standalone page in a Salesforce app    | Embedded on a parent record page                        |
| Scope                 | Org-wide, controlled by manual filters | Automatically scoped to the parent record               |
| Filter setup          | Configured by the user or admin        | Pre-configured hidden filters tied to the parent record |
| Best for              | Org-wide process and pipeline views    | Contextual, record-level work management                |
| Multi-object support  | Yes                                    | Yes                                                     |

***

### Composite Board

#### What It Is

A **Composite Board** is a workspace that **combines multiple independent Standard Boards into a single screen**. Think of it as a mashup — instead of one board with one purpose, you assemble several standalone Flexi Kanban boards and place them together side by side.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fhs9W7zCRSNvdmiirvooU%2Fimage.png?alt=media&amp;token=507af4a8-3e3f-4111-bcfb-7ea0b85907be" alt=""><figcaption></figcaption></figure>

Each board within a Composite Board remains fully independent: it has its own object configuration, its own columns, its own filters, and its own set of records. But placing them together gives teams a broader, unified view of work that spans different processes or domains at once.

What makes Composite Boards especially powerful is the ability to **set up communication between the individual boards** — so that selecting or acting on a record in one board can filter or trigger a reaction in another. This turns a simple side-by-side layout into a coordinated, multi-board workspace.

{% hint style="info" %}
**Note:** Composite Boards are an advanced capability designed for specific use cases. Most teams will find that Standard and Child Boards cover the vast majority of their needs. Composite Boards are less commonly used and typically require more deliberate planning to configure well.
{% endhint %}

#### When to Use a Composite Board

A Composite Board becomes relevant when:

* You need to **monitor multiple independent workflows simultaneously**, side by side, in one place
* Different teams or processes each have their own board, but you want a single consolidated view
* You want boards that are **aware of each other** — where an action on one board influences another
* A single Standard Board is not enough to represent the full breadth of what a role or team needs to see at once

**Example:** A sales operations manager might assemble a pipeline board (Opportunities by Stage), a support board (Cases by Priority), and a renewals board (Contracts by Renewal Status) into a single Composite Board — giving a full picture of the business without switching between separate apps or views.

***

### Choosing the Right Board Type

```
Do you need a standalone board for an org-wide process or workflow?
  └─ YES → Standard Board

Do you need a board embedded on a parent record page, 
showing only that record's related work?
  └─ YES → Child Board

Do you need to place multiple independent boards together 
in a single workspace, with optional coordination between them?
  └─ YES → Composite Board
```

For most teams getting started with Flexi Kanban, a **Standard Board** is the natural first step — fast to configure and immediately useful for any process. As needs grow, a **Child Board** brings contextual, record-level visibility directly onto parent record pages. A **Composite Board** is the right choice when multiple standalone boards need to live together and, optionally, interact with each other.


# Flexi Kanban Board Anatomy

Before diving into configuration and features, it helps to know what you are looking at. This page walks through every visual element of a Flexi Kanban board — what it is, where it lives, and what it does. All elements described here are shared across Standard, Child, and Composite board types.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FZ3TAnvOczsIUgC6i1O62%2Fimage.png?alt=media&amp;token=70ebad48-b922-4688-b012-824505ec6260" alt=""><figcaption></figcaption></figure>

***

### Kanban Header

The Kanban Header runs across the top of the board and serves as the primary control bar. It gives users access to board-level actions, navigation, and optionally displays Quick Filters and Statistics directly inline.

The header contains the following elements:

#### View Selector

A dropdown that lets users switch between saved Views — pre-configured filter combinations that scope the board to a specific subset of records. Selecting a View instantly reloads the board with that View's filters applied. Learn more in [Views](https://docs.flexikanban.ai/standard-kanban/using-kanban/how-to-work-with-filters-and-orders#manage-filters-and-orders).

#### Open / Hide Filter Side Panel Button

A toggle button that opens or closes the Filter Side Panel on the right side of the board. Use it to access advanced filtering options without leaving the board. Learn more in [Filter Side Panel](/standard-kanban/using-kanban/how-to-work-with-filters-and-orders).

#### Refresh Button

Reloads the board data from Salesforce without requiring a full page refresh. Useful for teams working in real time who need to pull in the latest record updates.

#### Standard Actions Menu

A dropdown menu that provides access to board-level administrative and utility actions:

* **Edit Kanban** — opens Kanban Studio to modify the board configuration. This option is only visible to the board creator or users who have been granted edit access permissions by an admin
* **Enable / Disable Fullscreen Mode** — expands the board to fill the entire screen, hiding Salesforce navigation chrome
* **Show Debug Console** — opens a diagnostic panel for troubleshooting board configuration and data loading issues

#### Custom Buttons

Admins can configure additional buttons in the header to perform specific actions — for example, opening a form, navigating to a different Flexi Kanban board or Lightning Page, or executing a background action. Custom Buttons are optional and will only appear if configured. Learn more in [Custom Buttons](/standard-kanban/configure-kanban/how-to-add-kanban-buttons-and-menus).

#### Swimlane Selector

Appears in the header only when at least one Swimlane has been configured for the board. Lets users switch between available Swimlane groupings to reorganize how cards are displayed horizontally across the board. Learn more in **Swimlanes**.

#### Quick Filters

An optional set of predefined filter shortcuts configured by the board admin. When enabled, Quick Filters appear inline in the Kanban Header and let users instantly narrow the board to a specific subset of records with a single click — without opening the Filter Side Panel.

Quick Filters can alternatively be positioned in the **Sub-Header** — a dedicated row that renders directly below the Kanban Header. This is configured via the **Position** property in Kanban Studio. Learn more in Quick Filters.

#### Statistics

An optional set of metrics and aggregate values configured by the board admin. When enabled, Statistics appear in the Kanban Header between the View Selector and other header elements, giving users an at-a-glance summary of board-level data.

Statistics can alternatively be positioned in the **Sub-Header** — a dedicated row that renders directly below the Kanban Header. This is configured via the **Position** property in Kanban Studio. Learn more in [Statistics](/standard-kanban/configure-kanban/how-to-add-kanban-statistics).

***

### Sub-Header

The Sub-Header is a structural zone that renders as a dedicated row directly below the Kanban Header. It serves as an alternative position for **Quick Filters** and **Statistics** — independent board components that can each be placed either inside the Kanban Header or in the Sub-Header, controlled via the **Position** property in Kanban Studio.

The Sub-Header appears automatically when at least one component is configured to use it, and is hidden when neither component is positioned there. Use it to keep the Kanban Header lean, or when Quick Filters or Statistics warrant more visual space and prominence. Learn more in Sub-Header.

***

### Kanban Column

Columns are the vertical sections of the board. Each column represents a stage or status value drawn from one or more grouping fields configured on the board. Unlike Salesforce Kanban View, which ties columns rigidly to a single standard picklist field, Flexi Kanban gives admins full control over column definition — including the ability to use multiple fields to drive column structure when a single field is not sufficient to represent the workflow. Cards sit inside columns and move between them as work progresses.

Each column is made up of the following parts:

#### Column Header Group

An optional visual element that groups two or more adjacent columns under a shared parent label. Useful for organizing related stages into logical clusters — for example, grouping `Prospecting` and `Qualification` under an `Early Stage` parent header. Learn more in [Column Header Group](/standard-kanban/configure-column/how-to-set-column-groups).

#### Column Header

Displayed at the top of each column. The content of the column header is fully configurable by the admin — it can include the column name, record count, aggregate values, custom labels, or other elements. Learn more in [Column Header](/standard-kanban/configure-column/how-to-configure-column-header).

#### Column Body

The main area of the column where Kanban Cards are displayed. Cards stack vertically within the column body and can be dragged to other columns to update the underlying Salesforce record. Learn more in [Column Body](/standard-kanban/configure-column/how-to-configure-column-body).

#### Column Footer

Displayed at the bottom of each column. Like the Column Header, its content is fully configurable and can include totals, aggregate values, or other summary information. Learn more in [Column Footer](/standard-kanban/configure-column/how-to-configure-column-footer).

***

### Kanban Card

A Kanban Card represents a single Salesforce record on the board. Each card displays a set of configured fields and elements that give users the information they need at a glance — without opening the full record.

#### Kanban Card Elements

Each card is made up of one or more **Card Elements** — individual building blocks that display specific information. A Card Element can be:

* **Text** — displays a field value or label
* **Icon** — displays a visual indicator
* **Menu** — displays a dropdown of available actions

Each Card Element is individually configurable. Admins control what it displays — a static text value, a merge field pulled from the record, or a formula expression for more dynamic output. Each element also has its own design attributes — including color, font size, and other styling properties — making it possible to turn any element into a color-coded visual indicator that changes appearance based on record data or conditions.

Any Card Element can also be made interactive by attaching a **Handler** — a configured interaction that defines what happens when the user clicks that element (e.g., opening a form, navigating to a record, or executing a background action). Learn more in **Kanban Card** and **Handlers**.

***

### Card Group

Within a column, cards can be further organized into **Card Groups** — collapsible sections that group cards sharing a common field value. For example, within a `Prospecting` column, Opportunities can be grouped by `Account Name` — so all deals for the same account are visually clustered together and can be expanded or collapsed as needed. Learn more in [Card Groups](/standard-kanban/groups-of-cards/how-to-configure-card-grouping).

***

### Swimlane

A Swimlane is a horizontal band that spans across all columns of the board, grouping cards by a configurable condition. Where columns represent progression (what stage is this record in?), Swimlanes add a second dimension of organization (which group does this record belong to?).

For example, a sales pipeline board might use Swimlanes to separate Opportunities by owner or by region — so each rep or territory has its own horizontal band, and stages remain visible as columns across all bands.

Swimlanes are optional and only appear when configured. If multiple Swimlanes are set up, users can switch between them using the [Swimlane Selector](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#swimlane-selector) in the Kanban Header. Learn more in [Swimlanes](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#).

***

### Detail Panel

The Detail Panel is a side panel that opens when a user clicks on a Kanban Card. It displays the full details of the selected record without navigating away from the board, allowing users to review and edit record information in context.

The content and layout of the Detail Panel is defined by the **Card Layout** configuration in Kanban Studio. Card Layout controls which fields and sections are displayed, how they are arranged, and whether the panel uses vertical tabs to organize content into multiple views.

Learn more in [Detail Panel](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#) and [Card Layout](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#).

***

### Filter Side Panel

The Filter Side Panel slides in from the right side of the board when the user clicks the [Open / Hide Filter Side Panel Button](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#open--hide-filter-side-panel-button) in the Kanban Header. It provides access to advanced filtering options, allowing users to build complex, multi-criteria filters to narrow the records displayed on the board.

Filters applied through the Filter Side Panel can be saved as a **View** for quick access in future sessions. Learn more in [Filter Side Panel](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#) and [Views](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#).


# Key Components

Flexi Kanban is built around a set of dedicated tools and components that work together to give admins full control over board configuration, user interactions, dynamic forms, and backend automation. Understanding what each component does and how they relate to each other is essential before diving into configuration.

{% hint style="success" %}
Together, these components make it possible to build Kanban boards that are not just visual tools, but active, automated parts of your team's Salesforce workflow.
{% endhint %}

***

### Configuration Tools

These are the tools admins use to build and configure Flexi Kanban boards and forms.

**Kanban Wizard** — A guided setup flow that creates a working Flexi Kanban board from a minimal set of inputs. The fastest way to get a board up and running, and the natural starting point before deeper configuration in Kanban Studio.

**Kanban Studio** — The dedicated configuration environment for Flexi Kanban boards. Kanban Studio gives admins full control over every aspect of a board — column structure, card layout and styling, dynamic color coding, workflow automation, user interaction behavior, and more. This is where the majority of board configuration work happens.

**Form Studio** — The dedicated tool for building dynamic interactive forms that can be surfaced directly on the Kanban board. Forms built in Form Studio can respond to user input, apply conditional logic, interact with Salesforce data, and trigger backend operations — making them a powerful extension of any board's workflow.

**Actions and Action Groups** — Reusable backend operations that execute in Salesforce in response to events on the board. A single Action performs a specific task — updating a record, sending a notification, calling a Flow. An Action Group chains multiple Actions into a sequence, sharing the same runtime context. Actions can be triggered by user interactions, card movements, form submissions, schedules, or external API calls.

***

### How These Components Work Together

The building process follows a natural progression, with each tool playing a distinct role as a board grows in sophistication.

**Step 1 — Kanban Wizard** gets you a working board in minutes. You provide a handful of inputs — the Salesforce object, the grouping field, and a basic set of fields to display — and the Wizard generates a functional board skeleton. Think of it as scaffolding: it gives you something real to look at and work from immediately, without requiring any deep configuration knowledge upfront.

**Step 2 — Kanban Studio** is where the board gains its character and logic. Once the skeleton exists, admins open Kanban Studio to build out everything that makes the board actually useful: the card layout and visual design, column structure and display settings, dynamic color coding, and the Handlers that define what happens when users interact with cards and buttons. Most boards are fully complete at this stage.

**Step 3 — Form Studio** enters the picture when interactions need to collect structured input from users. If a card movement or button click should open a form — to capture a reason for a status change, gather additional details, or present a decision checkpoint — that form is built in Form Studio and connected back to the board through a Handler in Kanban Studio.

**Step 4 — Actions and Action Groups** are added when the board or its forms need to drive backend operations: updating records, calling Salesforce Flows, sending notifications, or chaining multiple operations together in sequence. An Action is attached as the last link in the chain — triggered by a Handler on the board or by a form submission in Form Studio.

{% hint style="info" %}
Not every board needs all four components. A simple pipeline board might be complete after Kanban Studio. Form Studio and Actions become relevant only when the workflow demands them — and both can be added at any point, as requirements grow.
{% endhint %}


# Kanban Wizard

### What It Is

The **Kanban Wizard** is the fastest way to get a working Flexi Kanban board up and running. It walks admins through a short, guided setup flow that collects the essential configuration needed to create a functional board — no deep product knowledge required.

Think of it as a bootstrap tool. The Wizard handles the foundational decisions — which object to display, which field to group by, which columns to include, which fields to show on cards — and produces a ready-to-use board in minutes. From there, admins can leave the board as-is or open it in **Kanban Studio** for deeper customization.

***

### How to Open the Wizard

To launch the Kanban Creation Wizard:

1. Open the **App Launcher** in Salesforce.
2. Search for **Flexi Kanban** and select the app.
3. Open the **Kanbans** tab.
4. Click **New**.

This opens the Kanban Creation Wizard.

***

### What the Wizard Does

The Kanban Creation Wizard guides you through seven steps to create a working board:

1. **Board type** — choose the type of board to create (Standard Board is the most common starting point)
2. **Board identity** — give the board a name, optional description, and color theme
3. **Data and grouping** — select the Salesforce object whose records will appear on the board, the field used to group records into columns, and optional column-level summarization fields (such as Amount totals per stage)
4. **Columns** — choose which field values become columns on the board (for example, which Opportunity stages to include)
5. **Card fields** — select the fields to display on each Kanban Card
6. **Color coding** *(optional)* — apply AI-assisted color-coding rules to help users visually identify important records at a glance; the integrated assistant suggests an initial set of rules that can be reviewed and adjusted later in Kanban Studio
7. **Finalize** — review your configuration and generate the board

Once completed, the Wizard generates a fully functional Flexi Kanban board with sensible defaults applied. The board is immediately usable by your team.

{% hint style="info" %}
**Note:** The Finalize step includes a **Launch Advanced Kanban Builder** option. This opens the board directly in Kanban Studio after creation. If you want to view the board first before making further changes, uncheck this option before clicking Finish. The tool referred to as "Kanban Builder" in the app is **Kanban Studio** — the name is being updated in a future release.
{% endhint %}

***

### When to Use the Kanban Creation Wizard

The Kanban Creation Wizard is the right starting point when:

* You are creating a Flexi Kanban board for the first time
* You need a working board quickly, without configuring every detail upfront
* You want a solid baseline to refine further in Kanban Studio

{% hint style="warning" %}
It is not a replacement for Kanban Studio — it is the entry point before it. For boards that require custom column configuration, dynamic card styling, workflow automation, or any of Flexi Kanban's advanced capabilities, Kanban Studio is where that work happens.
{% endhint %}

***

### What Comes Next

After the Wizard creates your board, you have two paths:

* **Use it as-is** — the board is immediately functional and ready for your team
* **Open in Kanban Studio** — continue configuring the board with the full range of Flexi Kanban's capabilities

For a step-by-step walkthrough of the Wizard using a real Opportunity board as an example, see [Build Your First Board in 5 Minutes](/get-started/build-your-first-board-in-5-minutes). To learn what you can do after the Wizard, see [Kanban Studio](broken://pages/FmqDJGurbkprN6L8UoYx).


# Kanban Studio

### What It Is

**Kanban Studio** is the dedicated configuration environment for Flexi Kanban boards. It gives admins full control over every aspect of a board — from how columns are structured and what cards display, to workflow automation, dynamic styling, and user interaction behavior.

Where the Kanban Wizard gets you to a working board quickly, Kanban Studio is where you shape that board into something precisely tailored to your team's workflow and data.

***

### What You Can Configure in Kanban Studio

Kanban Studio covers configuration at every level of the board:

#### Board-Level Configuration

* Board type (Standard or Child) and source object(s)
* Grouping field(s) that define the column structure
* Global filters and data loading settings
* Views (saved filter combinations available to users)
* Quick Filters and Statistics — and whether they appear in the Kanban Header or Highlights Panel
* Custom Buttons in the Kanban Header
* Swimlanes

#### Column Configuration

Each column is independently configurable:

* Which values map to this column
* Column Header and Footer content — including record counts, aggregate totals, and custom labels
* Column-level data loading settings

#### Card Configuration

* Which fields and elements appear on each Kanban Card
* Layout and arrangement of Card Elements
* Dynamic color coding and styling based on formula conditions
* **Handlers** — the interactions that fire when a user clicks a Card Element or Custom Button

A Handler defines what happens when a user interacts with a UI element on the board. Flexi Kanban supports multiple Handler types, including opening a Form, navigating to a record or page, showing an email composer or dial pad, firing an event, or executing an Action or Action Group. Learn more in [Handlers](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#).

#### Card Layout (Detail Panel)

Card Layout controls what is displayed in the **Detail Panel** — the side panel that opens when a user clicks on a Kanban Card to view its full details. Admins configure which fields and sections appear in the Detail Panel, how they are arranged, and whether the panel uses vertical tabs to organize content into multiple views.

#### Automation

* Actions and Action Groups triggered by card movement between columns
* Conditions that control when automation fires

***

### Compact Card Layout Builder

The **Compact Card Layout Builder** is a specialized mode within Kanban Studio focused specifically on designing the visual layout of Kanban Cards. It provides a dedicated workspace for configuring Card Elements — what each element displays, how it is styled, and what interaction it triggers.

In an upcoming release, the Compact Card Layout Builder will also be accessible directly from the Kanban board via a context menu, available to users who are creators or editors of that board.

Learn more in [Compact Card Layout Builder](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#).

***

### Who Can Access Kanban Studio

Kanban Studio is accessible to the creator of a board and any users who have been granted edit access permissions by an admin. This is the same permission that controls visibility of the **Edit Kanban** option in the Standard Actions Menu on the board. Learn more in [Permissions](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#).

***

### When to Use Kanban Studio

Use Kanban Studio when:

* You want to go beyond the baseline configuration created by the Kanban Wizard
* You need to configure column headers and footers, card styling, or dynamic color coding
* You are setting up workflow automation triggered by card movements
* You want to add Custom Buttons, Quick Filters, Statistics, or Swimlanes to a board
* You are configuring Handlers to make card elements and buttons interactive

Learn more in [Configuring a Board in Kanban Studio](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#).


# Form Studio

### What It Is

**Form Studio** is the dedicated tool for building dynamic interactive forms in Flexi Kanban. Forms created in Form Studio can be surfaced directly on the Kanban board — opened by a Handler when a user clicks a card element or button — giving teams a way to capture input, update records, and trigger backend operations without ever leaving the board.

Forms in Flexi Kanban are not simple data entry screens. They are fully dynamic interfaces that can respond to user input, apply conditional logic, interact with Salesforce data, and trigger Actions — making them a powerful extension of your board's workflow.

***

### What You Can Build with Form Studio

Form Studio gives admins full control over form structure, behavior, and logic:

#### Form Layout and Fields

* Add fields from any Salesforce source object
* Arrange fields into sections and layouts
* Configure field labels, defaults, validation, and visibility conditions

#### Dynamic Behavior

* **Conditions** — show or hide fields, sections, or entire form elements based on user input or record data
* **Conditional Styles** — change the appearance of form elements dynamically based on configured rules
* **Variables** — define reusable values that can be referenced across the form
* **Additional Fields** — virtual fields that exist only within the form context, not mapped to a Salesforce field

#### Form Actions and Events

Forms in Flexi Kanban support **Handlers** — the same interaction model used on the Kanban board. A Handler on a form element can execute an Action or Action Group, fire an event back to the board, or trigger other configured behavior. This allows forms to interact with the board they are opened from — for example, refreshing a column, updating a card, or moving a record to a new stage after the form is submitted.

#### Sharing and Permissions

* Configure which users or profiles can access a given form
* Form Sharing Rules control visibility independently from board-level permissions

***

### How Forms Connect to the Board

Forms are not standalone screens — they are components that get attached to board interactions through Handlers. A typical flow looks like this:

1. An admin builds a form in Form Studio
2. The form is attached to a card element or Custom Button via a Handler in Kanban Studio
3. When a user clicks that element or button on the board, the form opens
4. The user fills in the form and submits
5. The form executes its configured Actions — updating records, triggering automation, or interacting with the board

This makes Form Studio one of the key tools for building interactive, workflow-driven Kanban boards that go beyond simple card movement.

***

### When to Use Form Studio

Use Form Studio when:

* You need users to provide input before or after a board action
* You want to guide users through a structured data entry process without leaving the board
* You need conditional logic that adapts the form based on what the user selects
* You want form submission to trigger backend operations via Actions or Action Groups

Learn more in [Building Forms in Form Studio](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#).


# Actions and Action Groups

### What They Are

**Actions** and **Action Groups** are the backend operation layer of Flexi Kanban. They define the logic that runs in response to events on the board — whether triggered by a user interaction, a card movement, a form submission, a scheduled job, or an external API call.

Where Handlers define *what should happen* when a user interacts with the board, Actions define *how it happens* — the actual operations that execute in Salesforce behind the scenes.

***

### Actions

An **Action** is a reusable backend operation that performs a specific task in Salesforce. Actions are configured independently and can be referenced from multiple places across your Flexi Kanban setup.

A single Action might:

* Update one or more fields on a Salesforce record
* Create or delete a record
* Send a notification or email
* Call a Salesforce Flow or Apex class
* Interact with other Salesforce platform capabilities

Because Actions are reusable, the same Action can be triggered from a card element Handler, a Custom Button, a card movement rule, a form submission, or a scheduled job — without duplicating configuration.

***

### Action Groups

An **Action Group** is a sequence of Actions executed in a defined order. All Actions within a group share the same runtime context and Variables, which means data and values can be passed between them as they execute in sequence.

Action Groups are useful when a single event needs to trigger a coordinated series of operations — for example, updating a record, sending a notification, and logging an activity, all as one atomic workflow triggered by a card moving to a new column.

***

### How Actions Are Triggered

Actions and Action Groups can be triggered in several ways:

* **By a Handler** — when a user clicks a card element, Custom Button, or form element configured with an Execute Action handler type
* **By card movement** — automatically when a card is dragged from one column to another
* **Manually** — invoked directly by a user from the board
* **In batch** — run across a set of records at once
* **On schedule** — executed automatically at a configured time or interval
* **Via API** — triggered externally by another system or integration

This flexibility makes Actions a central part of building automated, event-driven workflows on top of your Flexi Kanban boards.

***

### A Practical Example

A sales team uses a Flexi Kanban board to manage their opportunity pipeline. When a rep moves an Opportunity card from **Proposal Sent** to **Negotiation**, an Action Group fires automatically:

1. **Action 1** — updates the Opportunity's `Stage` and `Last Stage Change Date` fields
2. **Action 2** — creates a follow-up Task assigned to the opportunity owner
3. **Action 3** — sends an internal Slack notification to the sales manager

All three operations execute in sequence, triggered by the single card movement, with no manual steps required from the rep.

***

### When to Use Actions and Action Groups

Use Actions when:

* You need a reusable backend operation that can be triggered from multiple places
* You want card movement to automatically update records or trigger Salesforce automation
* You need to connect board interactions to broader Salesforce platform capabilities

Use Action Groups when:

* A single trigger needs to execute multiple operations in a defined sequence
* You need to pass data and context between operations as they run

Learn more in [Actions and Action Groups](https://claude.ai/chat/3ff2e1a4-8052-48a2-8c2f-8ff0fe64eda1#).


# User's Guide to the Kanban Boards

### What is a Kanban?

Kanban is a visual process management system which helps to make decisions about what and when should be done.

A Kanban Board is one of the tools that can be used to implement kanban to manage work. In generic, kanban board visually displays stages of a process (or several processes) using cards to represent work items and columns to represent each stage.

Cards can be moved between columns to indicate progress, update statuses and to help coordinate users performing the work.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FTAIbZo8P6YlVC4J8sFhh%2Fimage.png?alt=media&amp;token=1d5de652-026a-4425-9857-ddf1ca7cd0c1" alt=""><figcaption><p>Picture by Jeff.lasovski. Licensed under <a href="https://creativecommons.org/licenses/by-sa/3.0">CC BY-SA 3.0</a>.</p></figcaption></figure>

We will call Kanban Board "Kanban" for the future - this word means a board in the Flexi Kanban application context. Ah, "Dashboard" means the same as "Kanban" :)

Now, let's proceed with several steps of this guide.

### Step 1. What Kanban Consists of?

{% hint style="info" %}
Let's assume you have already [created a simple kanban board](/get-started/how-to-build-a-simple-kanban-using-creation-wizard-abilities) using Kanban Creation Wizard with default settings and got a Kanban for Cases as a result.
{% endhint %}

Kanban Board has the following main elements:

* **Kanban header** (it contains kanban main control elements)&#x20;
* **Kanban body** (it contains columns and sidebars)
* **Columns**
* **Cards**

By default columns consist of:

* **Header** (it contains column name and records counter)
* **Body**  (it contains Cards)

Card contains **Cells**, that represent some values of record which card correspond to. In our default example these cells contain values of Case object records: Number, Subject, Account Name, Created Date and Case type, but you can add there almost anything.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FuuKGbtNkEP7cEJrDaCdD%2Ffile.excalidraw.svg?alt=media&amp;token=9aa6cc12-60a4-4d61-97bc-7289573ef656" alt="" class="gitbook-drawing">

Kanban header contains the following elements by default:

* **Views selector** (allows to select and apply [saved filters](/standard-kanban/using-kanban/how-to-work-with-filters-and-orders#manage-filters-and-orders))
* "**Make View default**" button (allows to "pin" a current View to make it applied by default when Kanban is opened)
* "**Filters**" button (shows a Filters Sidebar that allows to configure and apply filters)
* "**Refresh Kanban**" button (allows to re-load kanban data)
* Kanban **system menu** button (it allows to edit and debug kanban, as far as expand it to fullscreen view)

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVrTBx2Ak99h2nyx9TFJU%2Ffile.excalidraw.svg?alt=media&amp;token=27927d40-1678-4149-960d-eb283ebc00f8" alt="" class="gitbook-drawing">

Of course, Kanban can contain more elements, but they are optional and are a subject of your needs.

### Step 2. How Kanban Works in General?

#### Drag:

The main idea of kanban board is to place cards representing some things, into columns representing some properties of these things and have an easy visual chart of the whole situation. To change this situation and indicate  these changes cards can be moved between columns.&#x20;

Just drag card with mouse and drop it into proper column:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FumVrlycSP4GPwi7sMfxB%2Fkanban.gif?alt=media&amp;token=6dcddaa9-4594-46e2-a7cd-e5c9b3b49234" alt=""><figcaption></figcaption></figure>

Card will disappear from the one column and appear in another.

{% hint style="info" %}
Technically this means that Card will stop matching conditions of source column and begin matching conditions of target one. And this means that some properties of the record (which is represented by this card) will be updated.
{% endhint %}

#### Show:

Click on Card opens a sidebar with record details. This sidebar in Flexi Kanban app is called a [Layout](/standard-kanban/configure-card/how-to-configure-card-layout):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FXOwvIhbDBRbziXlL2kU4%2Ffile.excalidraw.svg?alt=media&amp;token=25929e47-4885-489c-9762-bf1bec7d3e7e" alt="" class="gitbook-drawing">

By default card Layout just displays record data. But you can display a lot of other things instead, see below.

{% hint style="info" %}
Default card Layout data correspond to Page Layout configured for the proper Object records in your Salesforce settings.
{% endhint %}

#### Filter:

Click on Filters button shows **Filters Sidebar**, where you can add some filter criteria:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fnsp0FMDPkjDQGXENkBz5%2Ffile.excalidraw.svg?alt=media&amp;token=07eb9038-2f76-41bc-9d76-5fe4d7dc9ad8" alt="" class="gitbook-drawing">

Filters allow you to limit Kanban with cards matching your criteria. Read [this section](/standard-kanban/using-kanban/how-to-work-with-filters-and-orders) to know more.

### Step 3. How About Some More Visualization?

In some situations you may need more easy way to represent your data in the Kanban. E.g.:

* Case priority (importnant property) will be more quickly recognizable with the aid of color sygnals than by reading words
* Case type will be more visible with icons than with letters
* If case has been created earlier than a week ago, card will indicate this with light red background

There are [lot of ways](/standard-kanban/howtos-and-best-practices/how-to-design-kanban-for-your-needs/how-to-colorize-cards) to do similar things:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FBAMO91EuBD4ourczbTZD%2Ffile.excalidraw.svg?alt=media&amp;token=83d82a73-49d9-41a3-b514-a841dbc3062a" alt="" class="gitbook-drawing">

### Step 4. How to See Some More About the Record Represented by a Card?

Default card Layout displays record details, that are read-only. Sometimes this is quite enough, but you can significantly improve your kanban by modifying this. You can show there:

* SObject - read-only record details (we have already seen this, yes?)
* Form (Flexi Kanban offers powerful [Forms](/components/forms) that allows to do a lot of useful things)
* Visualforce page (admin have created some special page in your org? Integrate it into your kanban easily)
* Lightning Component. Re-use any available part of Lightning. Wanna insert Kanban into Kanban? You can (but we recommend try our mighty [Composite Dashboards](/composite-kanban/introduction))
* URL - integrate any page from yout organization (external sites are not allowed due to Salesforce security reasons)

Want to have several Layouts? No problem! Let's select "Standard" Layout - this is a container for several subtabs that can be easily switched. And even shown or hidden depending on necessary conditions. Read [this article](/standard-kanban/configure-card/how-to-configure-card-layout) to know more.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FRmir4OiQDzRAqpt7im5z%2Ffile.excalidraw.svg?alt=media&amp;token=59bc97de-26ab-403f-82ee-6b22da610a89" alt="" class="gitbook-drawing">

### Step 5. Want to Add Some More Elements?

Before this step you have seen default elements in the Kanban. Let's have a brief tour on other. You can add:

* [Kanban Statistics](/standard-kanban/configure-kanban/how-to-add-kanban-statistics) - some content in the middle of Kanban header.
* [Kanban Buttons](/standard-kanban/configure-kanban/how-to-add-kanban-buttons-and-menus) - extend default Kanban buttons with your own buttons and menus.
* Search bar - for quick highlight of necessary text in the whole kanban. [Add it just with one click](/standard-kanban/configure-kanban/how-to-configure-kanban-basic-properties)!
* [Column groups](/standard-kanban/configure-column/how-to-set-column-groups) - combine columns into groups that have own headers and settings.
* [Column footers](/standard-kanban/configure-column/how-to-configure-column-footer) - for those who need more in columns.
* Elements ([cells](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons#cells)) in column group headers, column headers and footers.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FHdDXGJf0eDCQtjgMLI7d%2Ffile.excalidraw.svg?alt=media&amp;token=f2055a69-c3b4-4b28-8807-62f68c7e0b27" alt="" class="gitbook-drawing">

### Step 6. How About Improve Interactivity and Automation?

All cells, buttons, menus and card components can be used not only for displaying something. One of most poweful abilities of Flexi Kanban is [Actions](/components/actions-action-groups). Actions allow you to do a lot of useful things:

* Show forms and lightning components (in same browser tab, new tab or modal popup)
* Display Visualforce and Web pages
* Execute form actions and trigger events
* Control Kanban behavior with a set of Kanban API methods
* Create, update and delete records
* Send emails (text, HTML and from templates)
* Validate everything with properly set rules
* Call Apex Classes methods
* Execute Web requests
* And even execute chains of actions as Action Groups

Actions can be triggered  by Card dragging. Our default-made Case kanban triggers "Record update" action that changes Case statuses, but you can configure your own necessities.

You can set Actions as on generic card dragging, as on dragging at specific directions (we call them [Junctions](/standard-kanban/configure-card/configuring-card-movement-and-column-junctions)). For example, when you drag Case card from "New" to "Working" column, a generic "Record Update" action will change proper Case status; but if somebody moves a Card from "Working" back to "New", a form that asks for the reason of such change will pop up. And when you submit this form, an email notification about this change will be sent to responsible person... Of course, if you have configured these actions.


# What are Kanbans?

As a team deeply embedded in the Salesforce ecosystem, we know the pain of trying to manage a workflow from a static List View. It requires mental gymnastics to see pipeline health or identify stalled projects. The core principle of Kanban—visualizing work as it moves through stages to reveal bottlenecks and clarify progress—is the perfect antidote.

Salesforce's native Kanban view was a great first step, proving that a visual, drag-and-drop board is far superior to a static list. However, users quickly discover its rigid limitations. You’re locked into using a single picklist for columns and have minimal control over card layouts or summary data. This one-size-fits-all approach forces complex business processes into an overly simple box, leaving significant potential untapped.

This is precisely why we built **Flexi Kanban**. We believe a Kanban board should adapt to your business, not the other way around. We designed it to elevate the experience far beyond the basics, giving you the power to customize everything. Imagine defining columns by owner, date range, or even a formula field. Picture cards with rich text, dynamic icons, and progress bars — letting your team make decisions without ever leaving the board. With Flexi Kanban, you move from a basic view to a fully configurable command center that truly reflects your unique process.

In the **Flexi Kanban** application, you can create these types of kanbans:

### Standard

Standard kanban is one that consists of several columns where some records are shown in cards. By default Standard kanban operates with one Data Source (an object which records are represented with cards), but you can change it in the Kanban Builder to make it work with different objects in very complex ways.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FNKlN4xwJ3D34LZEhhBli%2Ffile.excalidraw.svg?alt=media&amp;token=695ac975-cbd2-45e5-aea9-a00cd9172192" alt="" class="gitbook-drawing">

### Child

Child kanban is a standard one that has additional properties suitable for integrating it into your record pages as Lightning Component, and gets automatically applied filtering to show cards related to current record only.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fi0kYWALRQYlf4JeuKT6k%2Ffile.excalidraw.svg?alt=media&amp;token=391ae4f3-ef8e-420e-80df-ab825f68b44b" alt="" class="gitbook-drawing">

### Composite

Composite is a special parent kanban that has own header, filter panel and sidebar, has customizable layout with several containers in it's body, and contains several standard/child kanbans in these containers. It offers more advanced features in comparison to a standard kanban.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FllCBV90aSmKXcDlL4NSI%2Ffile.excalidraw.svg?alt=media&amp;token=812d97b7-1a8d-4576-aa3d-288f6e6ebc92" alt="" class="gitbook-drawing">


# Getting started

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><mark style="color:blue;">How to Build a Simple Kanban Using Creation Wizard Abilities</mark></td><td><a href="/get-started/how-to-build-a-simple-kanban-using-creation-wizard-abilities">How to Build a Simple Kanban Using Creation Wizard Abilities</a></td></tr><tr><td align="center"><p><mark style="color:blue;">Demo Example:</mark></p><p><mark style="color:blue;">Tasks Kanban</mark></p></td><td><a href="/standard-kanban/getting-started/demo-example-tasks-kanban">Demo Example: Tasks Kanban</a></td></tr><tr><td align="center"><p><mark style="color:blue;">Demo Example:</mark></p><p><mark style="color:blue;">Events Kanban</mark></p></td><td><a href="/standard-kanban/getting-started/demo-example-events-kanban">Demo Example: Events Kanban</a></td></tr><tr><td align="center"><mark style="color:blue;">Demo Example: Opportunities Kanban</mark></td><td><a href="/standard-kanban/getting-started/demo-example-opportunities-kanban">Demo Example: Opportunities Kanban</a></td></tr><tr><td align="center"><p><mark style="color:blue;">Demo Example:</mark></p><p><mark style="color:blue;">Gantt Kanban</mark></p></td><td><a href="/standard-kanban/getting-started/demo-example-gantt-kanban">Demo Example: Gantt Kanban</a></td></tr><tr><td align="center"><p><mark style="color:blue;">Demo Example:</mark></p><p><mark style="color:blue;">Cases Kanban</mark></p></td><td><a href="/standard-kanban/getting-started/demo-example-cases-dashboard">Demo Example: Cases Dashboard</a></td></tr></tbody></table>


# Demo Example: Tasks Kanban

This Tasks kanban board helps you manage tasks and visualize their status. Here is how this kanban can look like:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FM3zhmJYTFtRbb0MpWD6c%2Ffile.excalidraw.svg?alt=media&amp;token=43947067-59a4-46e3-acd8-b9d6c929a73b" alt="" class="gitbook-drawing">

This kanban shows tasks in 5 columns. Similar statuses share a column. Drag the task card to change its status.

To build this kanban, an admin should do the steps below:

### Create a new kanban

* Go to the [Kanban creation wizard](/standard-kanban/basics/how-to-create-a-standard-kanban) and create a new standard kanban.
* Give it a name and description.
* Select "White" theme.
* Save the kanban and go to Kanban builder.

### Create Task Form

* Create new form with these properties:

| Property              | Value                                                                           |
| --------------------- | ------------------------------------------------------------------------------- |
| Name                  | Task Form                                                                       |
| Data Source Object    | Task                                                                            |
| Multi Page Form?      | false                                                                           |
| Show navigation panel | true                                                                            |
| Buttons configuration | Check "Save" button for "Edit" mode only. Uncheck other.                        |
| Header configuration  | <p>Edit mode: Edit Task</p><p>View mode: View Task</p><p>New mode: New Task</p> |

* Add these elements to the form:

<table><thead><tr><th width="107">Type</th><th width="136">Name</th><th width="136">Title</th><th>Properties</th></tr></thead><tbody><tr><td>Button</td><td>Button</td><td>Close</td><td><ul><li>Show on Edit page: <strong>true</strong></li><li>Show on View Page: <strong>true</strong></li><li><p>Conditional Style:</p><ul><li>type = <strong>hide</strong></li><li><p>conditions:</p><ul><li>object = <strong>Task (Form Object)</strong></li><li>field = <strong>Activity ID</strong></li><li>operator = <strong>is not null</strong></li></ul></li></ul></li><li><p>Event:</p><ul><li>type = <strong>onClick</strong></li><li>conditions not set</li><li>handler "<strong>Close</strong>" action without parameters (creation of it see in next table)</li></ul></li></ul></td></tr><tr><td>Section</td><td>section</td><td></td><td><ul><li>Columns: 2</li><li>Show on Edit page: true</li><li>Show on View Page: true</li><li>Scrollable: false</li></ul></td></tr><tr><td>Section</td><td>section 1</td><td></td><td><ul><li>Columns: 2</li><li>Show on Edit page: true</li><li>Show on View Page: true</li><li>Scrollable: false</li></ul></td></tr><tr><td>Section</td><td>attachments</td><td>Attachments</td><td><ul><li>Columns: 2</li><li>Show on Edit page: true</li><li>Show on View Page: true</li><li>Scrollable: false</li></ul></td></tr></tbody></table>

**The following elements have these default properties (that can be overridden by specific properties):**

* Required: false
* Read Only: false
* Show on Edit page: true
* Show on View Page: true
* Instructions: not set
* Conditional Styles: not set
* Events: not set
* View Type (for picklists): Single list
* Hide 'None' (for picklists): false
* Options Groups (for picklists): not set

<table><thead><tr><th width="152">Section name</th><th width="115">Field</th><th width="127">Name</th><th width="123">Title</th><th>Specific properties</th></tr></thead><tbody><tr><td>Section</td><td>Subject</td><td>Subject</td><td>Subject</td><td></td></tr><tr><td></td><td>Description</td><td>Description</td><td>Description</td><td></td></tr><tr><td></td><td>Status</td><td>Status</td><td>Status</td><td><p>Read Only = <strong>true</strong><br>Condition Style:</p><ul><li>type = <strong>hide</strong></li><li><p>conditions:</p><ul><li>object = <strong>Task (Form Object)</strong></li><li>field = <strong>Activity ID</strong></li><li>operator = <strong>is null</strong></li></ul></li></ul></td></tr><tr><td>Section 1</td><td>Assigned To ID</td><td>OwnerId</td><td>Assignee</td><td></td></tr><tr><td></td><td>Priority</td><td>Priority</td><td>Priority</td><td></td></tr><tr><td></td><td>Due Date Only</td><td>ActivityDate</td><td>Due Date</td><td></td></tr><tr><td></td><td>Related To ID</td><td>WhatId</td><td>Related To ID</td><td></td></tr><tr><td>Attachments</td><td>File (Options)</td><td>file1</td><td></td><td>Source type = <strong>Conditions</strong><br>Source: Title = <strong>'file1'</strong><br>Fields: <strong>[{"label":"Title","localName":"Title","type":"Text","value":"file1","visible":false,"disabled":false}]</strong></td></tr><tr><td></td><td>File (Options)</td><td>file2</td><td></td><td>Source type = <strong>Conditions</strong><br>Source: Title = <strong>'file2'</strong><br>Fields: <strong>[{"label":"Title","localName":"Title","type":"Text","value":"file2","visible":false,"disabled":false}]</strong></td></tr><tr><td></td><td>File (Options)</td><td>file3</td><td></td><td>Source type = <strong>Conditions</strong><br>Source: Title = <strong>'file3'</strong><br>Fields: <strong>[{"label":"Title","localName":"Title","type":"Text","value":"file3","visible":false,"disabled":false}]</strong></td></tr><tr><td></td><td>File (Options)</td><td>file4</td><td></td><td>Source type = <strong>Conditions</strong><br>Source: Title = <strong>'file4'</strong><br>Fields: <strong>[{"label":"Title","localName":"Title","type":"Text","value":"file4","visible":false,"disabled":false}]</strong></td></tr></tbody></table>

* Add the following Form Action as handler on the "Close" button:

| Action Name and Title | Property              | Value           |
| --------------------- | --------------------- | --------------- |
| Close                 | Type                  | **Navigate**    |
|                       | Navigate to           | **Return back** |
|                       | Browser history steps | **1**           |
|                       | Has Conditions        | **false**       |

### Configure the kanban

Go to [Basic Configuration](/standard-kanban/basics/how-to-create-a-standard-kanban) and set [CSS Styles](/standard-kanban/tools/configuring-css-styles) to:

* Header CSS Styles = background: #f7f7f7
* Title CSS Styles = color: #333

Then open [Buttons Configuration](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons) and add 2 buttons:

Configure button "New Task":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FadodTq1wb03KygzNOgtM%2Ffile.excalidraw.svg?alt=media&amp;token=87426a54-d9ad-4a6d-8e27-4ad15a78dd54" alt="" class="gitbook-drawing">

Configure [handler](/standard-kanban/tools/configuring-handlers) of this button:

* Type = **Form**
* Value = **Task Form** (form that was created before)
* Parameters = **{"mode":"edit"}**

Configure button "Print Kanban":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FjMFzZn3RCb6M87R1eOde%2Ffile.excalidraw.svg?alt=media&amp;token=d91b00d0-f900-4a23-bdaf-4076bb2ba757" alt="" class="gitbook-drawing">

Configure handler of this button:

* Type = **KanBan API**
* Value = **Print KanBan**
* Parameters = **{"kanbanId":"{$KanBan.Id}"}**

### Configure columns

* [Add 5 columns](/standard-kanban/configure-kanban/working-with-kanban-layout) to the kanban.
* Name columns and give them descriptions respectively to task status (see table below)
* Leave columns widths default ("auto")
* Leave columns "Is Active" checkboxes default (checked)
* [Set these properties](/standard-kanban/configure-column/how-to-configure-column-data-source) to all columns:
  * Data Source Type = **SObject**
  * Data Source = **Task**
* Set the following conditions to the columns:

| Column name | Description             | Conditions                              |
| ----------- | ----------------------- | --------------------------------------- |
| New         | Not Started             | Status equals "Not Started"             |
| In Progress | In Progress             | Status equals "In Progress"             |
| QA Ready    | Waiting on someone else | Status equals "Waiting on someone else" |
| Completed   | Completed               | Status equals "Completed"               |
| On Hold     | Deferred                | Status equals "Deferred"                |

* Set the following styles for column header on Header Configuration tab:

```
 background: #e5eeff;
```

* Select amount of cards for column body on Body Configuration tab:

Cards in Row = 1

* Add a row with 2 [cells](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons#cells) of "Text" type into column footer on Footer Configuration tab:

<table><thead><tr><th>Value</th><th>CSS Styles</th></tr></thead><tbody><tr><td>Totals:</td><td><pre class="language-css"><code class="lang-css">font-weight: bold;
</code></pre></td></tr><tr><td><pre><code>FORMULA[COLUMNTOTAL()]
</code></pre></td><td><pre class="language-css"><code class="lang-css">color: #333;
text-align: right;
</code></pre></td></tr></tbody></table>

### Configure Card

* Add 1 card to the kanban
* Set Data Source Type to **Task**
* Set [card layout](/standard-kanban/configure-card/how-to-configure-card-layout):

Go to Basic configuration tab:

* Layout body type = **Form** (Task Form was created above) with parameters (see in image)
* Position = **right**
* Checked "Hide Footer" checkbox

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FuMj67TNCVFoOyVzWKyhv%2Ffile.excalidraw.svg?alt=media&amp;token=5088ff3a-fd9d-4dee-9b0f-456e2ab3aa90" alt="" class="gitbook-drawing">

Set card layout header to show name of active task:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fwn1FOyuOf84J6cxIsZBd%2Ffile.excalidraw.svg?alt=media&amp;token=6fddb7b6-500b-497d-871b-fd9b8250242f" alt="" class="gitbook-drawing">

Open [Card Compact Layout editor](/standard-kanban/configure-card/how-to-configure-card-compact-layout):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F58pLwqP9PRs1YsHHsJTX%2Ffile.excalidraw.svg?alt=media&amp;token=e5b306fe-38e0-47b8-be82-7e194f9a066f" alt="" class="gitbook-drawing">

* add CSS Styles to the card settings:

```css
border-left: 3px solid FORMULA[IF({Task.Type} = 'Bug', '#ff0000', '#3fba3f')];
background-color: FORMULA[IF({Task.Type} = 'Bug', '#ffeded', '#e5ffeb')];
```

* By default Card Compact Layout contains one component of text type; this component contains Record ID. Click on it (1) and change its Type to **link** and Value to {**Task.Subject**}
* Set its width to **100** (leave default)
* Expand "Handler" section and add a [handler](/standard-kanban/tools/configuring-handlers) with Type = **SObject** and Value = **{Task.Id}**
* Expand "Styles" section and set the following CSS style: `color: #045cea`
* Add text component (2) below the previous
* Set its Value to **{Task.Owner.Name}**
* Leave its width default (**100**)
* Set CSS styles for it: `font-weight: bold`
* Add text component (3) below
* Set its value to **{Task.ActivityDate}**
* Set its Title to **Due Dat**e
* Leave its width default (**100**)
* Expend "Styles" section and set the following:

```css
display: FORMULA[IF(ISBLANK({Task.ActivityDate}), 'none','')]
```

* Add text component (4) below
* Set its value to **{Task.Who.Name}**
* Set its width to **90**
* Add text component (5) to the right of text component #4
* Set its Title to **{Task.Priority}**
* Set it's width to **10**
* Expend "Styles" section and set the following:

```css
width: 16px;
height: 16px;
border-radius: 10px;
background-color: FORMULA[CASE({Task.Priority}, 'Low', '#65D872', 'High', 
'#BA1100', '#F2CE00')];
flex: initial;
```

### Configure column junctions

Set [column junctions](/standard-kanban/configure-card/configuring-card-movement-and-column-junctions) for card on each column:

* Drop behavior for source column: Remove card
* Drop behavior for target column: Refresh

Set allowed drag-n-drop directions:

<table data-full-width="true"><thead><tr><th width="210">Column to drag From</th><th width="82" align="center">New</th><th align="center">in Progress</th><th align="center">QA Ready</th><th align="center">Completed</th><th align="center">On Hold</th></tr></thead><tbody><tr><td>New</td><td align="center"></td><td align="center">+</td><td align="center">+</td><td align="center"></td><td align="center">+</td></tr><tr><td>In progress</td><td align="center">+</td><td align="center"></td><td align="center">+</td><td align="center">+</td><td align="center">+</td></tr><tr><td>QA Ready</td><td align="center"></td><td align="center">+</td><td align="center"></td><td align="center">+</td><td align="center">+</td></tr><tr><td>Completed</td><td align="center"></td><td align="center">+</td><td align="center"></td><td align="center"></td><td align="center"></td></tr><tr><td>On Hold</td><td align="center">+</td><td align="center">+</td><td align="center"></td><td align="center"></td><td align="center"></td></tr></tbody></table>

### Configure Card Actions

To add a sense to Cards dragging some [actions](/standard-kanban/configure-card/configuring-card-actions) are necessary.

Create a new action with these properties and add it to card in each column for each allowed target column:

* Name = **Update Task Status Action**
* Type = **Field Update**
* Execute = **Always**
* Status = **Active**
* Context Object Type = **Task**

In the Field Update Settings section configure this:

* Object Name = **Task**
* Fields:
  * Name = **Status**
  * Value = **{$TargetColumn.Description}**
* Conditions:
  * Name: **Activity ID**
  * Operator: **equals**
  * Value: **{task.id}**


# Demo Example: Events Kanban

This Events kanban board shows events on a schedule and lets users manage them. Here is how this kanban can look like:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FDf0D3Eqd4qPFRkKEqmgy%2Ffile.excalidraw.svg?alt=media&amp;token=545191dc-f9e6-4e80-9970-fc0bd65c6642" alt="" class="gitbook-drawing">

To build this kanban, an admin should do the steps below:

### Create Actions and Actions Group

Create the following [Actions](/components/actions-action-groups/basics/working-with-actions) of "Define Variable" type. Set Variable Type to Text in all actions:

1. Action name = `Get Previous Month`\
   Variable name = `currentDate`\
   Variable value = `FORMULA[FORMAT(ADDMONTHS(DATEVALUE({$Variables.currentDate}), -1), 'yyyy-MM-dd')]`
2. Action name = `Get Next Month`\
   Variable name = `currentDate`\
   Variable value = `FORMULA[FORMAT(ADDMONTHS(DATEVALUE({$Variables.currentDate}), 1), 'yyyy-MM-dd')]`
3. Action name = `Update Week 1 Start Variable`\
   Variable name = `week1Start`\
   Variable value = `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01')))]`
4. Action name = `Update Week 2 Start Variable`\
   Variable name = `week2Start`\
   Variable value = `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 7]`
5. Action name = `Update Week 3 Start Variable`\
   Variable name = `week3Start`\
   Variable value = `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 14]`
6. Action name = `Update Week 4 Start Variable`\
   Variable name = `week4Start`\
   Variable value = `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 21]`
7. Action name = `Update Week 1 Variable`\
   Variable name = `week1`\
   Variable value = `FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))), 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 6, 'dd/MM/yyyy')]`
8. Action name = `Update Week 2 Variable`\
   Variable name = `week2`\
   Variable value = `FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 7, 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 13, 'dd/MM/yyyy')]`
9. Action name = `Update Week 3 Variable`\
   Variable name = `week3`\
   Variable value = `FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 14, 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 20, 'dd/MM/yyyy')]`
10. Action name = `Update Week 4 Variable`\
    Variable name = `week4`\
    Variable value = `FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 21, 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 27, 'dd/MM/yyyy')]`

Create 2 [Action Groups](/components/actions-action-groups/basics/working-with-action-groups#switch_to_actions_subtab) and add actions from configured above to them (in the order specified below):

1. name = **Get Previous Month Action Group**

* actions:
  1. Get Previous Month
  2. Update Week 1 Start Variable
  3. Update Week 2 Start Variable
  4. Update Week 3 Start Variable
  5. Update Week 4 Start Variable
  6. Update Week 1 Variable
  7. Update Week 2 Variable
  8. Update Week 3 Variable
  9. Update Week 4 Variable

2. name = **Get Next Month Action Group**

* actions:
  1. Get Next Month
  2. Update Week 1 Start Variable
  3. Update Week 2 Start Variable
  4. Update Week 3 Start Variable
  5. Update Week 4 Start Variable
  6. Update Week 1 Variable
  7. Update Week 2 Variable
  8. Update Week 3 Variable
  9. Update Week 4 Variable

### Create a new kanban

* Go to the [Kanban creation wizard](/standard-kanban/basics/how-to-create-a-standard-kanban) and create a new standard kanban.
* Give it a name and description.
* Select default "White" theme.
* Save the kanban and go to Kanban builder.

### Configure the kanban

Go to [Basic Configuration](/standard-kanban/configure-kanban/how-to-configure-kanban-basic-properties) and set icon:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FowT99uWuULISRpW36wRD%2Ffile.excalidraw.svg?alt=media&amp;token=e23182ec-1848-4f18-8a65-f8a4d092a48a" alt="" class="gitbook-drawing">

Go to [Statistics Configuration](/standard-kanban/configure-kanban/how-to-add-kanban-statistics).

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F0tzHESbEqMSBWJYbMICs%2Ffile.excalidraw.svg?alt=media&amp;token=23d481da-ddc0-4813-a781-bb9947edf6ec" alt="" class="gitbook-drawing">

* Add the cell and set these properties to it:
  * Type = **Text**
  * Value = `FORMULA[FORMAT({$Variables.currentDate}, 'MMMM, yyyy')]`
* Set CSS Styles to this cell:

```css
font-size: 24px
```

Go to [Buttons Configuration](/standard-kanban/configure-kanban/how-to-add-kanban-buttons-and-menus) and add 3 buttons:

Button "**Previous Month**":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fe1gXEKmj68Bv39WRxTAG%2Ffile.excalidraw.svg?alt=media&amp;token=27e2b65d-6ef9-43c0-aba2-d32a80d1b759" alt="" class="gitbook-drawing">

Configure [handler](/standard-kanban/tools/configuring-handlers#old-view-configurator) of this button:

* Type = **Action Group**
* Value = **Get Previous Month Action Group** (that was created before)
* Parameters = not set
* Success handler:
  * Type = **KanBan API**
  * Value = **Refresh Kanbans**
  * Parameters = not set

Button "**Next Month**":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FOV4Gk2yXFlPSo0R4dGE4%2Ffile.excalidraw.svg?alt=media&amp;token=31b3c5fb-c94e-435b-bfa8-4a68ad596260" alt="" class="gitbook-drawing">

Configure handler of this button:

* Type = **Action Group**
* Value = **Get Next Month Action Group** (that was created before)
* Parameters = not set
* Success handler:
  * Type = **KanBan API**
  * Value = **Refresh Kanbans**
  * Parameters = not set

Button "**New Event**":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FbJAnbfQBvUuMkZh3IQEo%2Ffile.excalidraw.svg?alt=media&amp;token=1714d7e4-b1d2-44bf-bc3c-91f5f40c650a" alt="" class="gitbook-drawing">

Configure handler of this button:

* Type = **SObject**
* Value = **Event**
* Parameters = not set

Go to [Variables Configuration](/standard-kanban/configure-kanban/how-to-configure-variables) and add these variables:

1. currentDate = `{$System.Date}`
2. week1 = `FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))), 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 6, 'dd/MM/yyyy')]`
3. week1Start = `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01')))]`
4. week1End = `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 6]`
5. week2 = `FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 7, 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 13, 'dd/MM/yyyy')]`
6. week2Start = `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 7]`
7. week2End = `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 13]`
8. week3 = `FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 14, 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 20, 'dd/MM/yyyy')]`
9. week3Start = `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 14]`
10. week3End = `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 14]`
11. week4 = `FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 21, 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 27, 'dd/MM/yyyy')]`
12. week4Start = `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 21]`
13. week4End = `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 27]`

### Configure Columns

* Add [4 columns](/standard-kanban/configure-kanban/working-with-kanban-layout) to the kanban.
* Name them (see table below)
* Leave column width default ("auto")
* Leave column "Is Active" checkbox default (checked)
* Set these properties to [Data Source Configuration](/standard-kanban/configure-column/how-to-configure-column-data-source#sobject-data-source):
  * Data Source Type = **SObject**
  * Data Source = **Event**
  * Set the following **conditions** to the proper columns (select Type = "Formula" in all):

1. Column name = `{$Variables.week1}`\
   Condition 1:\
   Start Date Time > `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01')))]T00:00:00Z`\
   Condition 2:\
   Start Date Time < `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 7]T00:00:00Z`
2. Column name = `{$Variables.week2}`\
   Condition 1:\
   Start Date Time > `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 7]T00:00:00Z`\
   Condition 2:\
   Start Date Time < `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 14]T00:00:00Z`
3. Column name = `{$Variables.week3}`\
   Condition 1:\
   Start Date Time > `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 14]T00:00:00Z`\
   Condition 2:\
   Start Date Time < `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 21]T00:00:00Z`
4. Column name = `{$Variables.week4}`\
   Condition 1:\
   Start Date Time > `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 21]T00:00:00Z`\
   Condition 2:\
   Start Date Time < `FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 28]T00:00:00Z`

* Open [Body Configuration](/standard-kanban/configure-column/how-to-configure-column-body) tab:
  * Select Cards in Row = **1**
  * Configure CSS Styles:

{% code fullWidth="false" %}

```css
background-color: FORMULA[IF(STARTOFWEEK({$Variables.week1start})
 = STARTOFWEEK({$System.Date}), '#feffea', '#ffffff')]
```

{% endcode %}

### Configure Card

* [Add 1 card](/standard-kanban/configure-kanban/working-with-kanban-layout) to the kanban
* Set Data Source Type to **"Event"**
* Set [card layout](/standard-kanban/configure-card/how-to-configure-card-layout):

Basic configuration:

* Layout body type = **Standard**
* Position = **right**
* All checkboxes = **false**

Header configuration:

* Title settings:
  * Text = **{Event.Subject}**

Footer configuration:

* Add button "**Open Event**":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F9alioucKQ52gxIXQNcNM%2Ffile.excalidraw.svg?alt=media&amp;token=1c8a2a0e-75b1-4f29-9ae7-f148a618b2c7" alt="" class="gitbook-drawing">

Configure handler of this button:

* Type = **SObject**
* Value = **{Event.Id}**
* Parameters = not set

Add tab to Tabs configuration:

* Label = **Details**
* Title = **Details**
* Icon = **standard:lead\_list**
* Layout = **Standard** with 5 rows:

<table><thead><tr><th width="88" align="center">#</th><th width="213">Label</th><th>Value</th></tr></thead><tbody><tr><td align="center">1</td><td>Type</td><td>Type</td></tr><tr><td align="center">2</td><td>Assigned To</td><td>Account ID:Account Name</td></tr><tr><td align="center">3</td><td>Start Date Time</td><td>Start Date Time</td></tr><tr><td align="center">4</td><td>Duration</td><td>Duration</td></tr><tr><td align="center">5</td><td>Location</td><td>Location</td></tr></tbody></table>

Open [Card Compact Layout](/standard-kanban/configure-card/how-to-configure-card-compact-layout) editor :

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F7I1zPwhQ7eoKqHFrKMWk%2Ffile.excalidraw.svg?alt=media&amp;token=d8df8fbb-757c-4c2e-aa38-296588a7dcb2" alt="" class="gitbook-drawing">

* add CSS Styles to the card settings (1):

```css
background-color: #ffffff
border-left: 3px solid #15db00
```

* Change the Value of default existing Card Component to **{Event.Subject}** (2).
* Set its width to **100** (leave default)
* Expend "Styles" section and set the following:

```css
text-decoration: underline
color: #006dcc
display: contents
flex: initial
```

* Add text component (3) below the previous
* Set its Value and Title to **{Event.Who.Name}**
* Leave its width default (**100**)
* Add text component (4) below
* Set its value to **FORMULA\[FORMAT({Event.StartDateTime})]**
* Set its Title to **{Event.StartDateTime}**
* Leave its width default (**100**)


# Demo Example: Opportunities Kanban

This Opportunities kanban board helps you manage opportunities. It visualizes key fields and makes comparisons easy. Here is how this kanban can look like:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fbp4JDEy98e86tqmG0Lvo%2Fimage.png?alt=media&amp;token=81ac899b-f605-41e1-a4e7-061c8ec3ae98" alt=""><figcaption></figcaption></figure>

This kanban shows opportunities in 7 columns. Similar stages share a column. Drag cards to change stage. If needed, edit the record in the form.

To build this kanban, an admin should do the steps below:

### Create a new kanban

* Go to the [Kanban creation wizard](/standard-kanban/basics/how-to-create-a-standard-kanban) and create a new standard kanban.
* Give it a name and description.
* Select "Polo Blue" theme.
* Save the kanban and go to Kanban Builder.

### Configure the kanban

Go to [Statistics Configuration](/standard-kanban/configure-kanban/how-to-add-kanban-statistics). Add [the cell](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons#cells) which will overlay unnecessary views selector:

* Type = Text
* Value = Opportunities

Set [CSS Styles](/standard-kanban/tools/configuring-css-styles) to this cell:

```css
position: absolute;
background-color: #AEC0D7;
top: 0;
left: 0;
bottom: 0;
padding: 0 1.5em;
z-index: 1;
font-size: 1.5rem;
display: flex;
align-items: center;
font-weight: bold;
```

Go to [Variables Configuration](/standard-kanban/configure-kanban/how-to-configure-variables) tab. Add these variables. They store colors for opportunity stages. This lets you re-style the whole kanban from one place:

<table><thead><tr><th width="88.33333333333331">#</th><th>Variable Name</th><th>Variable Value</th></tr></thead><tbody><tr><td>1</td><td>StageColor_Default</td><td>#AAAAAA</td></tr><tr><td>2</td><td>StageColor_Prospecting</td><td>#e08f68</td></tr><tr><td>3</td><td>StageColor_Qualification</td><td>#e0bb68</td></tr><tr><td>4</td><td>StageColor_NeedsAnalysis</td><td>#8BAEBC</td></tr><tr><td>5</td><td>StageColor_PerceptionAnalysis</td><td>#6882e0</td></tr><tr><td>6</td><td>StageColor_ValueProposition</td><td>#b581ab</td></tr><tr><td>7</td><td>StageColor_ProposalPriceQuote</td><td>#8b619c</td></tr><tr><td>8</td><td>StageColor_IdDecisionMakers</td><td>#8fa96a</td></tr><tr><td>9</td><td>StageColor_NegotiationReview</td><td>#70c2aa</td></tr><tr><td>10</td><td>StageColor_ClosedWon</td><td>#2f8638</td></tr><tr><td>11</td><td>StageColor_ClosedLost</td><td>#af1e1e</td></tr></tbody></table>

### Configure columns

* [Add 7 columns](/standard-kanban/configure-column/how-to-sonfigure-column-properties) to the kanban.
* Name columns respectively to opportunity stages (see table below)
* Leave columns widths default ("auto")
* Leave columns "Is Active" checkboxes default (checked)
* [Set these properties](/standard-kanban/configure-column/how-to-configure-column-data-source) to all columns:
  * Data Source Type = **SObject**
  * Data Source = **Opportunity**
  * Order = **Expected Amount, desc** (set Order = "**Amount, desc**" for column named "Closed" )
* Set the following conditions to the columns:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fo46az22n2tYchbdcbiAf%2Fimage.png?alt=media&amp;token=2ab3b064-e3a1-4f29-88e9-741437e5dc2f" alt=""><figcaption></figcaption></figure>

* Add the [custom attribute](/standard-kanban/configure-column/how-to-set-and-use-column-custom-attributes) to all columns:

<table><thead><tr><th width="62">#</th><th width="213">Column</th><th>Custom attribute name</th><th>Custom attribute value</th></tr></thead><tbody><tr><td>1</td><td>Prospecting and other</td><td>setStageTo</td><td>Prospecting</td></tr><tr><td>2</td><td>Qualification</td><td>setStageTo</td><td>Qualification</td></tr><tr><td>3</td><td>Analysis</td><td>setStageTo</td><td>Needs Analysis</td></tr><tr><td>4</td><td>Propositions</td><td>setStageTo</td><td>Value Proposition</td></tr><tr><td>5</td><td>Id. Desision Makers</td><td>setStageTo</td><td>Id. Decision Makers</td></tr><tr><td>6</td><td>Negotiation/Review</td><td>setStageTo</td><td>Negotiation/Review</td></tr><tr><td>7</td><td>Closed</td><td>setStageTo</td><td>losed Won</td></tr></tbody></table>

* Set the following styles for column bodies on [Body Configuration](/standard-kanban/configure-column/how-to-configure-column-body) tab:

```css
padding-top: 0;
background: transparent;
border: 0px none;
```

* Set these styles to column headers on the [Header Configuration](/standard-kanban/configure-column/how-to-configure-column-header) tab:

<table><thead><tr><th width="68.33333333333331">#</th><th width="180">Column</th><th>Column Header CSS styles</th></tr></thead><tbody><tr><td>1</td><td>Prospecting and other</td><td><pre class="language-css"><code class="lang-css">text-shadow: 1px 1px 2px #000;
color: #fff;
background: {$Variables.stagecolor_prospecting};
padding: 0.35rem 0.75rem;
border: 0px none;
</code></pre></td></tr><tr><td>2</td><td>Qualification</td><td><pre class="language-css"><code class="lang-css">text-shadow: 1px 1px 2px #000;
color: #fff;
background: {$Variables.stagecolor_qualification};
padding: 0.35rem 0.75rem;
border: 0px none;
</code></pre></td></tr><tr><td>3</td><td>Analysis</td><td><pre class="language-css"><code class="lang-css">text-shadow: 1px 1px 2px #000;
color: #fff;
background: linear-gradient(120deg, {$Variables.stagecolor_needsanalysis} 30%, {$Variables.stagecolor_perceptionanalysis} 70%);
padding: 0.35rem 0.75rem;
border: 0px none;
</code></pre></td></tr><tr><td>4</td><td>Propositions</td><td><pre class="language-css"><code class="lang-css">text-shadow: 1px 1px 2px #000;
color: #fff;
background: linear-gradient(120deg, {$Variables.stagecolor_valueproposition} 30%, {$Variables.stagecolor_proposalpricequote} 70%);
padding: 0.35rem 0.75rem;
border: 0px none;
</code></pre></td></tr><tr><td>5</td><td>Id. Decision Makers<br></td><td><pre class="language-css"><code class="lang-css">text-shadow: 1px 1px 2px #000;
color: #fff;
background: {$Variables.stagecolor_iddecisionmakers};
padding: 0.35rem 0.75rem;
border: 0px none;
</code></pre></td></tr><tr><td>6</td><td>Negotiation/Review<br></td><td><pre class="language-css"><code class="lang-css">text-shadow: 1px 1px 2px #000;
color: #fff;
background: {$Variables.stagecolor_negotiationreview};
padding: 0.35rem 0.75rem;
border: 0px none;
</code></pre></td></tr><tr><td>7</td><td>Closed<br></td><td><pre class="language-css"><code class="lang-css">text-shadow: 1px 1px 2px #000;
color: #fff;
background: linear-gradient(120deg, {$Variables.stagecolor_closedwon} 30%, {$Variables.stagecolor_closedlost} 70%);
padding: 0.35rem 0.75rem;
border: 0px none;
</code></pre></td></tr></tbody></table>

### Configure card

* [Add 1 card](/standard-kanban/configure-kanban/working-with-kanban-layout) to the kanban
* Set Data Source Type to "**Opportunity**"
* Set [card layout](/standard-kanban/configure-card/how-to-configure-card-layout#basic-configuration) to necessary type. In this example it is set to **SObject** and Record ID is set to **{Opportunity.Id}**:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FiW0KxOYVhgzmIPYi6mze%2Fimage.png?alt=media&amp;token=ed75f8a2-d8e9-472d-8f83-acf9e5142334" alt=""><figcaption></figcaption></figure>

* Set [card layout header](/standard-kanban/configure-card/how-to-configure-card-layout#header-configuration) to show name of active Opportunity record:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FI8TCdXVTHdOGEW0AfKtd%2Fimage.png?alt=media&amp;token=61878de6-9914-48fd-8085-fcffad22c1da" alt=""><figcaption></figcaption></figure>

* Open [Card Compact Layout](/standard-kanban/configure-card/how-to-configure-card-compact-layout) editor and add these styles to the Card settings:

```css
border-radius: 2px;
padding: 0.5rem;
position: relative;
```

* By default Card Compact Layout contains one component of text type; this component contains Record ID. Click on it and change its Value to **{Opportunity.Name}**
* Set its Title to **Opportunity name**
* Set its width to 100 (leave default)
* Expand "Handler" section and [add a handler](/standard-kanban/tools/configuring-handlers) with Type = **SObject** and Value = **{Opportunity.Id}**
* Expand "Styles" section and set the following [CSS style](/standard-kanban/tools/configuring-css-styles):

```css
font-weight: bold;
```

* Add text component # 2 below the previous
* Set its Value to **By: {Opportunity.Account.Name}**
* Set its Title to **Account**
* Leave its width default (100)
* Set CSS styles for it:

```css
font-size: 11px;
```

* Add text component # 3 below
* Set its value to **Stage: {Opportunity.StageName}**
* Set its Title to **Stage**

Now, you need to create a bar chart from several text components by wide use of dynamic CSS styles (see the next chapter).

### Create a bar chart from the card components

* Add a text component # 4 to Card under component # 2 (above the last "Stage" one)
* Leave its Value and Title empty
* Leave its Width default (100)
* Set following CSS styles to it:

```css
height: 110px;
border-bottom: 1px solid gray;
```

{% hint style="info" %}
This component will be used as background with fixed height to place chart bars onto.
{% endhint %}

#### "Opportunity amount" chart bar

* Add a text component # 5 below the # 4
* Leave its Value empty
* Set its Title to **Opportunity amount: {Opportunity.Amount}**
* Leave its Width default
* Set the following CSS styles to it:

```css
position: absolute;
color: transparent;
overflow: hidden;
width: calc((100% - 1rem) /4);
```

* Add the **Height** rule to CSS Styles and set it to this formula:

```clike
FORMULA[{Opportunity.Amount} / (COLUMNTOTAL({$Column.Id}, null, 'MAX', 'Amount')/ 100)]px
```

{% hint style="info" %}
This formula calculates total amount of all opportunities in the column where card is shown, and sets height of the current component as a fraction of 100 pixels. This fraction is proportional to current opportunity amount. Thus, the component will work as chart bar, which height represents an opportunity amount related to total amount of all opportunities in the current column.
{% endhint %}

* Add the **Margin-top** rule to CSS Styles and set it to this formula:

```clike
FORMULA[0 - (({Opportunity.Amount} / (COLUMNTOTAL({$Column.Id}, null, 'MAX', 'Amount')/ 100)) + 1)]px
```

{% hint style="info" %}
This formula acts in the same way as previous, but calculates the negative value which will be used as top margin to shift the chart bar upward.
{% endhint %}

* Add the **Background-color** rule to CSS Styles and set it to this formula:

```clike
FORMULA[
    CASE(
        {Opportunity.StageName},    
        'Prospecting', {$Variables.stagecolor_prospecting},
        'Qualification', {$Variables.stagecolor_qualification},
        'Needs Analysis', {$Variables.stagecolor_needsanalysis},
        'Value Proposition', {$Variables.stagecolor_valueproposition},
        'Id. Decision Makers', {$Variables.stagecolor_iddecisionmakers},
        'Perception Analysis', {$Variables.stagecolor_perceptionanalysis},
        'Proposal/Price Quote', {$Variables.stagecolor_proposalpricequote},
        'Negotiation/Review', {$Variables.stagecolor_negotiationreview},
        'Closed Won', {$Variables.stagecolor_closedwon},
        'Closed Lost', {$Variables.stagecolor_closedlost},
        {$Variables.stagecolor_default}
    )
]
```

{% hint style="info" %}
This formula sets different background colors to the Card component depending on current opportunity Stage. Colors are got from the Kanban variables.
{% endhint %}

* Add the **Min-height** rule to CSS Styles and set it to this formula:

```clike
FORMULA[
    IF(
        OR(
            {Opportunity.Amount} = null,
            {Opportunity.Amount} = "",
            {Opportunity.Amount} &lt;= 0
        ),
        0,
        1
    )
]px
```

{% hint style="info" %}
This formula sets the minimal height of the chart bar to 1 pixel if opportunity amount is set and more than 0. For zero, absent or undefined amounts this value will be "0px" and no chart bar will be shown.
{% endhint %}

#### "Opportunity Expected Revenue" chart bar

* Add a text component # 6 below the # 5
* Leave its Value empty
* Set its Title to **Expected amount: {Opportunity.ExpectedRevenue}**
* Leave its Width default
* Set the following CSS styles to it:

```css
position: absolute;
color: transparent;
overflow: hidden;
width: calc((100% - 1rem) /4);
left: calc((100% - 1rem) * 3 / 8);
opacity: 0.75;
max-height: 100px;

background-color: 
FORMULA[
    CASE(
        {Opportunity.StageName},    
        'Prospecting', {$Variables.stagecolor_prospecting},
        'Qualification', {$Variables.stagecolor_qualification},
        'Needs Analysis', {$Variables.stagecolor_needsanalysis},
        'Value Proposition', {$Variables.stagecolor_valueproposition},
        'Id. Decision Makers', {$Variables.stagecolor_iddecisionmakers},
        'Perception Analysis', {$Variables.stagecolor_perceptionanalysis},
        'Proposal/Price Quote', {$Variables.stagecolor_proposalpricequote},
        'Negotiation/Review', {$Variables.stagecolor_negotiationreview},
        'Closed Won', {$Variables.stagecolor_closedwon},
        'Closed Lost', {$Variables.stagecolor_closedlost},
        {$Variables.stagecolor_default}
    )
]

height: FORMULA[{Opportunity.ExpectedRevenue} / (COLUMNTOTAL({$Column.Id}, null, 'MAX', 'Amount')/ 100)]px

margin-top: FORMULA[0 - (({Opportunity.ExpectedRevenue} / (COLUMNTOTAL({$Column.Id}, null, 'MAX', 'Amount') / 100)) + 1)]px

min-height: 
FORMULA[
    IF(
        OR(
            {Opportunity.ExpectedRevenue} = null,
            {Opportunity.ExpectedRevenue} = "",
            {Opportunity.ExpectedRevenue} &lt;= 0
        ),
        0,
        1
    )
]px

```

{% hint style="info" %}
Formulas in the code above are the same as for "Opportunity Amount" chart bar, but they are based on **{Opportunity.ExpectedRevenue}** field instead of **{Opportunity.Amount}**. Also, "opacity" property is used to make chart bar have more light shade of background color.
{% endhint %}

#### "Opportunity probability" data cell

* Add a text component # 7 below the # 6
* Set its Value to **{Opportunity.Probability}%**
* Set its Title to **Probability**
* Leave its Width default
* Set the following CSS styles to it:

```css
position: absolute;
right: 0;
margin-top: calc(0px - 2rem - 1px);
font-size: 1.25rem;
overflow: hidden;
font-weight: bold;
padding-right: 0.5rem;
text-align: right;
left: auto;
max-height: 100px;
width: 100%;
```

* Add the **Color** rule to CSS Styles and set it to this formula:

```clike
FORMULA[
IF(
    {Opportunity.Probability} &gt; 80,
    green,
    IF(
        {Opportunity.Probability} &gt; 60,
        olive,
        IF(
            {Opportunity.Probability} &gt; 40,
            gold,
            IF(
                {Opportunity.Probability} &gt; 20,
                orange,
                red
            )
        )
    )
)
]
```

{% hint style="info" %}
This formula will set different colors from red to green depending on probability percentage of the opportunity. Discreteness is 20%.
{% endhint %}

#### "Opportunity Amount" legend entry

* Add a text component # 8 below the # 7
* Set its Value to the following formula:

```clike
FORMULA[
    IF(
        OR({Opportunity.Amount} = null, {Opportunity.Amount} = ""),
        '0',
        IF(
            {Opportunity.Amount} &gt; 999999,
            TEXT(ROUND({Opportunity.Amount} / 1000000),CEILING) + 'M',
            IF(
                {Opportunity.Amount} &gt; 9999,
                 TEXT(ROUND({Opportunity.Amount} / 1000),CEILING)+'k',
                INTNUMBER({Opportunity.Amount})
            )
        )
    )
]
```

{% hint style="info" %}
This formula will show rounded amount in millions ("M") or thousands ("k") of currency units. To know the exact value hover mouse on the amount.
{% endhint %}

* Set its Title to **Opportunity amount: {Opportunity.Amount}**
* Leave its Width default
* Set the following CSS styles to it:

```css
width: calc((100% - 1rem) / 4);
font-size: 11px;
color: #000;
text-align: center;
position: absolute;
```

#### "Opportunity Expected Revenue" legend entry

* Add a text component # 9 **to the right** of the # 8
* Set its Value to the following formula (it will show the Expected revenue in millions or thousands):

```css
FORMULA[
    IF(
        OR({Opportunity.ExpectedRevenue} = null, {Opportunity.ExpectedRevenue} = ""),
        '0',
        IF(
            {Opportunity.ExpectedRevenue} &gt; 999999,
            TEXT(ROUND({Opportunity.ExpectedRevenue} / 1000000),CEILING) + 'M',
            IF(
                {Opportunity.ExpectedRevenue} &gt; 9999,
                 TEXT(ROUND({Opportunity.ExpectedRevenue} / 1000),CEILING)+'k',
                INTNUMBER({Opportunity.ExpectedRevenue})
            )
        )
    )
]
```

* Set its Title to **Expected Revenue: {Opportunity.ExpectedRevenue}**
* Leave its Width default
* Set the following CSS styles to it:

```css
width: calc((100% - 1rem) / 4);
font-size: 11px;
color: #000;
text-align: center;
position: absolute;
left: calc((100% - 1rem) * 3 / 8);
```

#### Assistive block

* Add a text component # 10 **to the right** of the # 9
* Set its Value to **Amount**
* Leave its Title empty
* Leave its Width default
* Set the following CSS styles to it:

```css
overflow: hidden;
max-width: 0px;
color: transparent;
width: calc((100% - 1rem) * 3 / 8);
```

{% hint style="info" %}
This element is used to prevent legend entries mess with lowest component.
{% endhint %}

### Configure column junctions

* Set [column junctions](/standard-kanban/configure-card/configuring-card-movement-and-column-junctions) for card on each column:
  * Drag-n-drop allowed to ALL columns
  * Drop behavior for source column: Remove card
  * Drop behavior for target column: Refresh

### Configure Card Actions

To add a sense to Cards dragging [some actions are necessary](/standard-kanban/configure-card/configuring-card-actions). In this example action will be the same for all columns, so, no need to configure them separately.

Click on card and add a new action with these properties:

* Name = **Update opportunity stage**
* Type = **Field Update**
* Execute = **Always**
* Status = **Active**
* Context Object Type = **Opportunity**

In the Field Update Settings section configure this:

* Object Name = Opportunity
* Fields:
  * Name = **Stage**
  * Value = **{$TargetColumn.a\_\_setStageTo}**
* Conditions:
  * **Opportunity ID eqials {opportunity.id}**


# Demo Example: Gantt Kanban

The Gantt Dashboard represents events as classic Gantt chart. It allows dashboard user to view a project or events schedule on the timeline, and manage them.  Here is how such dashboard can look like:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F2XoOl9VaS7Cd6RpdKmid%2Fimage.png?alt=media&amp;token=b746ccb2-06e4-4892-b55c-e45201b2991f" alt=""><figcaption></figcaption></figure>

To make this dashboard administrator should do actions listed below:

### &#x20;Create new dashboard

* Go to [dashboard creation wizard](/standard-kanban/basics/how-to-create-a-standard-kanban) and create new standard dashboard.
* Give it a name and description.
* Select default "White" theme.
* Save dashboard and go to Kanban builder.

### &#x20;Configure dashboard

Go to [Variables Configuration](/standard-kanban/configure-kanban/how-to-configure-variables) tab. Add these variables:

1. from = `FORMULA[STARTOFWEEK({$System.Date})]`
2. to = `FORMULA[ADDDAYS(STARTOFWEEK({$System.Date}),7,false)]`
3. range = `week`
4. columnName = `FORMULA[FORMAT(STARTOFWEEK({$System.Date}),'d MMM yyyy') + ' - ' + FORMAT(ADDDAYS(STARTOFWEEK({$System.Date}),6,false),'d MMM yyyy')]`
5. dayOfWeek = `FORMULA[{$System.Date} - STARTOFWEEK({$System.Date})]`

Go to Statistics Configuration.

* Add the cell which will overlay unnecessary views selector. Set these properties to it:
  * Type = **Text**
  * Value = **Gantt Dashboard**
* Set CSS Styles to this cell:

```css
font-weight: bold;
background-color: #F7F7F7;
font-size: 1.5em;
position: absolute;
top: 0;
bottom: 0;
left: 0;
z-index: 1;
padding: 0 1.5em 0 1.5em;
display: flex;
align-items: center;
```

* Add another cell with these properties:
  * Type = **Text**
* Set Value to the following formula:

```css
FORMULA[
  IF(
    {$Variables.range} = 'week',
    '',
    IF(
      {$Variables.range} = 'month',
      FORMAT({$Variables.from},'MMMM yyyy'),
      IF(
        {$Variables.range} = 'quarter',
        FORMAT(ADDDAYS({$Variables.from},1,false), 'yyyy') + ', Quarter ' + CASE(FORMAT(ADDDAYS({$Variables.to}, -1, false), 'M'),'3','I','6','II','9','III','IV'),
        FORMAT({$Variables.from}, 'yyyy')
      )
    )
  )
]
```

{% hint style="info" %}
This formula sets the text at the middle of Kanban header to represent currently selected date range.
{% endhint %}

### &#x20;Configure column

* Add 1 column to the dashboard.
* Name it **{$Variables.columnName}**
* Leave column width default ("auto")
* Leave column "Is Active" checkbox default (checked)
* Set these properties to the column:
  * Data Source Type = **SObject**
  * Data Source = **Event**
  * Order = **Start Date Time, asc**
  * Page size = **20**
* Set the following conditions to the column (set type to "Formula" to all):

1. End Date Time >= `FORMULA[FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')]`
2. Start Date Time < `FORMULA[FORMAT({$Variables.to}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')]`
3. End Date Time < `FORMULA[FORMAT({$Variables.to}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')]`
4. Start Date Time >= `FORMULA[FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')]`
5. Start Date Time < `FORMULA[FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')]`
6. End Date Time >= `FORMULA[FORMAT({$Variables.to}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')]`

* Set this logic to column conditions:

```
({1} AND {3}) OR ({2} AND {4}) OR ({5} AND {6})
```

* Set this [CSS style](/standard-kanban/tools/configuring-css-styles) to column header in [Header Configuration tab](/standard-kanban/configure-column/how-to-configure-column-header):

```css
display: none;
```

* Set these CSS styles to column body in [Body configuration tab](/standard-kanban/configure-column/how-to-configure-column-body):

```css
padding-top: 2.5rem;
background-color: #fff;
padding-right: 0;
padding-left: 0;
```

* Add a **background-image** property to column body CSS styles. Set its value to this code (don't think about formatting - the code below will lose it after being inserted into CSS Rule Value input field):

```css
repeating-linear-gradient(
  90deg,
  transparent calc(
    (100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)])
    *
    (6 - FORMULA[IF({$Variables.range} = 'week', 0, {$Variables.dayOfWeek})])
  ),
  rgba(150,150,255,0.1) calc(
    (100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)])
    *
    (6 - FORMULA[IF({$Variables.range} = 'week', 0, {$Variables.dayOfWeek})])
  ),
  rgba(150,150,255,0.1) calc(
    (100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)])
    *
    (8 - FORMULA[IF({$Variables.range} = 'week', 0, {$Variables.dayOfWeek})])
  ),
  transparent calc(
    (100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)])
    *
    (8 - FORMULA[IF({$Variables.range} = 'week', 0, {$Variables.dayOfWeek})])
  ),
  transparent calc(
    (100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)])
    *
    (13 - FORMULA[IF({$Variables.range} = 'week', 0, {$Variables.dayOfWeek})])
  )
),

repeating-linear-gradient(
  90deg,
  transparent calc(
    (100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)])
    *
    (7 - FORMULA[IF({$Variables.range} = 'week', 0, {$Variables.dayOfWeek})])
    -
    1px
  ),
  RGBA(187,187,187,0.56) calc(
    (100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)])
    *
    (7 - FORMULA[IF({$Variables.range} = 'week', 0, {$Variables.dayOfWeek})])
    -
    1px
  ),
  RGBA(187,187,187,0.56) calc(
    (100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)])
    *
    (7 - FORMULA[IF({$Variables.range} = 'week', 0, {$Variables.dayOfWeek})])
  ),
  transparent calc(
    (100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)])
    *
    (7 - FORMULA[IF({$Variables.range} = 'week', 0, {$Variables.dayOfWeek})])
  ),
  transparent calc(
    (100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)])
    *
    (14 - FORMULA[IF({$Variables.range} = 'week', 0, {$Variables.dayOfWeek})])
    -
    1px
  )
)

FORMULA[
  IF(
    {$Variables.range} = 'year',
    '',
    ', repeating-linear-gradient(
      90deg,
      #fff 0px,
      #fff calc(
        100%
        /
        ' + TEXT(DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)) + '
        -
        1px
      ),
      #eee calc(
        100%
        /
        ' + TEXT(DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)) + '
        -
        1px
      ),
      #eee calc(
        100%
        /
        ' + TEXT(DAYSBETWEEN(DATETIMEVALUE({$Variables.to}), DATETIMEVALUE({$Variables.from}), false)) + '
      )
    )'
  )
]
```

{% hint style="info" %}
This big formula is used to make column background depending on date range selected:

* First background gradient draws weekends

* Second gradient draws borders between weeks

* Third gradient draws days borders (except when date range = **year**, because only weeks are drawn due too small days widths)
  {% endhint %}

* Set these CSS styles to column footer on [Footer Configuration tab](/standard-kanban/configure-column/how-to-configure-column-footer):

```css
padding: 0.4rem 0 0.25rem 0;
top: 0px;
background: transparent;
width: 100%;
position: absolute;
border-bottom: 2px solid #ddd;
```

{% hint style="info" %}
We're moving column footer to the top in order to have a header where we can use [Rows](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons)
{% endhint %}

* Set the following Rows with Cells on them (all cells should have Type = **Text**):

### &#x20;Row 1 (for Quarter date range)

<table><thead><tr><th width="60">#</th><th>Cell Value</th><th>Cell CSS styles</th></tr></thead><tbody><tr><td>1</td><td><pre><code>FORMULA[FORMAT({$Variables.from},'MMMM')]
</code></pre></td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(150,150,255,0.25), 0 0.25rem 0 rgba(150,150,255,0.25);
background-color: rgba(150,150,255,0.25);
display: FORMULA[IF({$Variables.range} = 'quarter',block,none)];
text-align: center;
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), false)] * FORMULA[IF(         FORMAT(ADDDAYS({$Variables.from},15,false),'M') = '4',         30,         31     ) ] );
</code></pre></td></tr><tr><td>2</td><td><pre><code>FORMULA[FORMAT(ADDDAYS({$Variables.from},45,false),'MMMM')]
</code></pre></td><td><pre><code>box-shadow: 0 -0.4rem 0 rgba(150,255,150,0.25), 0 0.25rem 0 rgba(150,255,150,0.25);
background-color: rgba(150, 255, 150, 0.25);
display: FORMULA[IF({$Variables.range} = 'quarter',block,none)];
text-align: center;
width: calc(100% /  FORMULA[     DAYSBETWEEN(         DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),         DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),         false     ) ]  *  FORMULA[     CASE(         FORMAT(ADDDAYS({$Variables.from},45,false),'M'),         '5',31,         '8',31,         '11',30,         IF(             DAYSBETWEEN(                 DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),                 DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),                 false             ) = 91,             29,             28         )     ) ] );
</code></pre></td></tr><tr><td>3</td><td><pre><code>FORMULA[FORMAT(ADDDAYS({$Variables.from},75,false),'MMMM')]
</code></pre></td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(255, 150, 150, 0.25), 0 0.25rem 0 rgba(255, 150, 150, 0.25);
background-color: rgba(255, 150, 150, 0.25);
display: FORMULA[IF({$Variables.range} = 'quarter',block,none)];
text-align: center;
width: calc(100% /  FORMULA[     DAYSBETWEEN(         DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),         DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),         false     ) ]  *  FORMULA[     CASE(         FORMAT(ADDDAYS({$Variables.from},75,false),'M'),         '3',31,         '12',31,         30     ) ] );
</code></pre></td></tr></tbody></table>

### &#x20;Row 2 (for Year date range)

<table><thead><tr><th width="65">#</th><th width="108">Cell Value</th><th width="120">Cell Title</th><th>Cell CSS Styles</th></tr></thead><tbody><tr><td>1</td><td>Jan</td><td>January</td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(150,150,255,0.25), 0 0.25rem 0 rgba(150,150,255,0.25);
background-color: rgba(150,150,255,0.25);
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false)] * 31);
display: FORMULA[IF({$Variables.range} = 'year',block,none)];
text-align: center;
</code></pre></td></tr><tr><td>2</td><td>Feb</td><td>February</td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(150,255,150,0.25), 0 0.25rem 0 rgba(150,255,150,0.25);
background-color: rgba(150, 255, 150, 0.25);
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false)] * FORMULA[     IF(         DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false) = 366,         29,         28) ]);
display: FORMULA[IF({$Variables.range} = 'year',block,none)];
text-align: center;
</code></pre></td></tr><tr><td>3</td><td>Mar</td><td>March</td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(255, 150, 150, 0.25), 0 0.25rem 0 rgba(255, 150, 150, 0.25);
background-color: rgba(255, 150, 150, 0.25);
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false)] * 31);
text-align: center;
display: FORMULA[IF({$Variables.range} = 'year',block,none)];
</code></pre></td></tr><tr><td>4</td><td>Apr</td><td>April</td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(150,150,255,0.25), 0 0.25rem 0 rgba(150,150,255,0.25);
background-color: rgba(150,150,255,0.25);
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false)] * 30);
text-align: center;
display: FORMULA[IF({$Variables.range} = 'year',block,none)];
</code></pre></td></tr><tr><td>5</td><td>May</td><td>May</td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(150,255,150,0.25), 0 0.25rem 0 rgba(150,255,150,0.25);
background-color: rgba(150, 255, 150, 0.25);
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false)] * 31);
text-align: center;
display: FORMULA[IF({$Variables.range} = 'year',block,none)];
</code></pre></td></tr><tr><td>6</td><td>Jun</td><td>June</td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(255, 150, 150, 0.25), 0 0.25rem 0 rgba(255, 150, 150, 0.25);
background-color: rgba(255, 150, 150, 0.25);
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false)] * 30);
text-align: center;
display: FORMULA[IF({$Variables.range} = 'year',block,none)];
</code></pre></td></tr><tr><td>7</td><td>Jul</td><td>July</td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(150,150,255,0.25), 0 0.25rem 0 rgba(150,150,255,0.25);
background-color: rgba(150,150,255,0.25);
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false)] * 31);
text-align: center;
display: FORMULA[IF({$Variables.range} = 'year',block,none)];
</code></pre></td></tr><tr><td>8</td><td>Aug</td><td>August</td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(150,255,150,0.25), 0 0.25rem 0 rgba(150,255,150,0.25);
background-color: rgba(150, 255, 150, 0.25);
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false)] * 31);
text-align: center;
display: FORMULA[IF({$Variables.range} = 'year',block,none)];
</code></pre></td></tr><tr><td>9</td><td>Sep</td><td>September</td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(255, 150, 150, 0.25), 0 0.25rem 0 rgba(255, 150, 150, 0.25);
background-color: rgba(255, 150, 150, 0.25);
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false)] * 30);
text-align: center;
display: FORMULA[IF({$Variables.range} = 'year',block,none)];
</code></pre></td></tr><tr><td>10</td><td>Oct</td><td>October</td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(150,150,255,0.25), 0 0.25rem 0 rgba(150,150,255,0.25);
background-color: rgba(150,150,255,0.25);
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false)] * 31);
text-align: center;
display: FORMULA[IF({$Variables.range} = 'year',block,none)];
</code></pre></td></tr><tr><td>11</td><td>Nov</td><td>November</td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(150,255,150,0.25), 0 0.25rem 0 rgba(150,255,150,0.25);
background-color: rgba(150, 255, 150, 0.25);
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false)] * 30);
text-align: center;
display: FORMULA[IF({$Variables.range} = 'year',block,none)];
</code></pre></td></tr><tr><td>12</td><td>Dec</td><td>December</td><td><pre class="language-css"><code class="lang-css">box-shadow: 0 -0.4rem 0 rgba(255, 150, 150, 0.25), 0 0.25rem 0 rgba(255, 150, 150, 0.25);
background-color: rgba(255, 150, 150, 0.25);
width: calc(100% / FORMULA[DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false)] * 31);
text-align: center;
display: FORMULA[IF({$Variables.range} = 'year',block,none)];
</code></pre></td></tr></tbody></table>

### &#x20;Row 3 (for Month date range)

* Add 31 [cells.](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons)
* Set  names from **1** to **31** to them
* Set these [CSS Styles](/standard-kanban/tools/configuring-css-styles) to them:

<table><thead><tr><th width="82.66666666666666">#</th><th width="133">Cell Value</th><th>Cell CSS Styles</th></tr></thead><tbody><tr><td>1...28</td><td>From <strong>1</strong> to <strong>28</strong></td><td><pre class="language-css"><code class="lang-css">display: FORMULA[IF({$Variables.range} = 'month',block,none)];
text-align: center;
width: calc(100% / FORMULA[CASE(DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false),28,'28',29,'29',30,'30','31')]);
</code></pre></td></tr><tr><td>29</td><td><strong>29</strong></td><td><pre class="language-css"><code class="lang-css">width: calc(100% / FORMULA[CASE(DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false),28,'28',29,'29',30,'30','31')]);
text-align: center;
display: FORMULA[IF(AND({$Variables.range} = 'month',DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false) > 28),block,none)];
</code></pre></td></tr><tr><td>30</td><td><strong>30</strong></td><td><pre class="language-css"><code class="lang-css">width: calc(100% / FORMULA[CASE(DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false),28,'28',29,'29',30,'30','31')]);
text-align: center;
display: FORMULA[IF(AND({$Variables.range} = 'month',DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false) > 29),block,none)];
</code></pre></td></tr><tr><td>31</td><td><strong>31</strong></td><td><pre class="language-css"><code class="lang-css">width: calc(100% / FORMULA[CASE(DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false),28,'28',29,'29',30,'30','31')]);
text-align: center;
display: FORMULA[IF(AND({$Variables.range} = 'month',DAYSBETWEEN(DATETIMEVALUE(FORMAT({$Variables.to},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')), DATETIMEVALUE(FORMAT({$Variables.from},'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),false) > 30),block,none)];
</code></pre></td></tr></tbody></table>

{% hint style="info" %}
Days  from 1 to 28 are shown for each month. Days from 29 to 31 are shown depending on specific month length.
{% endhint %}

### &#x20;Row 4 (for Week date range)

* Add 7 cells
* Set CSS Styles to all of them to the following:

```css
text-align: center;
width: calc(100% / 7);
display: FORMULA[IF({$Variables.range} = 'week',block,none)];
```

* Set their Values to these:

<table><thead><tr><th width="64.5">#</th><th>Cell Value</th></tr></thead><tbody><tr><td>1</td><td><pre><code>Sun, FORMULA[FORMAT({$Variables.from}, 'dd MMM yyyy')]
</code></pre></td></tr><tr><td>2</td><td><pre><code>Mon, FORMULA[FORMAT(ADDDAYS({$Variables.from}, 1, false), 'dd MMM yyyy')]
</code></pre></td></tr><tr><td>3</td><td><pre><code>Tue, FORMULA[FORMAT(ADDDAYS({$Variables.from}, 2, false), 'dd MMM yyyy')]
</code></pre></td></tr><tr><td>4</td><td><pre><code>Wed, FORMULA[FORMAT(ADDDAYS({$Variables.from}, 3, false), 'dd MMM yyyy')]
</code></pre></td></tr><tr><td>5</td><td><pre><code>Thu, FORMULA[FORMAT(ADDDAYS({$Variables.from}, 4, false), 'dd MMM yyyy')]
</code></pre></td></tr><tr><td>6</td><td><pre><code>Fri, FORMULA[FORMAT(ADDDAYS({$Variables.from}, 5, false), 'dd MMM yyyy')]
</code></pre></td></tr><tr><td>7</td><td><pre><code>Sat, FORMULA[FORMAT({$Variables.to}, 'dd MMM yyyy')]
</code></pre></td></tr></tbody></table>

### &#x20;Configure card

{% hint style="success" %}
This card does not require configuring [Junction Settings](/standard-kanban/configure-card/configuring-card-movement-and-column-junctions) in the one existing column.  Just leave "Visible in this column" checkbox checked.
{% endhint %}

* [Add one card](/standard-kanban/configure-kanban/working-with-kanban-layout) to dashboard.
* Set Data Source Type to "**Event**".

### &#x20;Configure Card Layout

* [Set Card Layout](/standard-kanban/configure-card/how-to-configure-card-layout) to "Form".
* Click "+" button to add new Form. Create [new form](/components/forms/basics/form-building-overview) with these properties:

| Property              | Value                                                        |
| --------------------- | ------------------------------------------------------------ |
| Name                  | **Event form**                                               |
| Data Source Object    | **Event**                                                    |
| Multi Page Form?      | false                                                        |
| Show navigation panel | true                                                         |
| Buttons configuration | Check "Save" button for "Edit" mode only. Uncheck other.     |
| Header configuration  | <p><strong>{$Event.Subject}</strong> (for all modes)<br></p> |

* Add these elements to the form:

1. Type = `Section`\
   Name = `section`\
   Title = `''` (leave empty)\
   *Properties:*\
   Columns = `2`\
   Show on Edit page = `true`\
   Show on View page = `true`\
   Scrollable = `false`
2. Type = `Button`\
   Name = `button`\
   Title = `Close`\
   *Properties:*\
   Show on Edit page = `true`\
   Show on View page = `true`

**The following elements all should be added into section configured above.** \
**All these elements should be Data Source Fields:**

1. Data Source Field = `Subject`\
   Name = `Subject`\
   Title = `Subject`
2. Data Source Field = `Type`\
   Name = `Type`\
   Title = `Type`
3. Data Source Field = `EventSubtype`\
   Name = `EventSubtype`\
   Title = `Subtype`
4. Data Source Field = `StartDateTime`\
   Name = `StartDateTime`\
   Title = `Start Date Time`
5. Data Source Field = `EndDateTime`\
   Name = `EndDateTime`\
   Title = `End Date Time`
6. Data Source Field = `Description`\
   Name = `Description`\
   Title = `Description`

Set properties of all Data Source Fields above to:

* Required = `false`

* Read Only = `false`

* Show on Edit page = `true`

* Show on View page = `true`

* Instructions = (not set)

* Conditional Styles = (not set)

* Events = (not set)

* View Type (for picklists) = `Single list`

* Hide 'None' (for picklists) = `false`

* Option groups (for picklists) = (not set)

* Add these [Form Actions](/components/forms/tools/form-action):

1. Action name and Title = `Close Panel`\
   Type = `Form API`\
   Form Action Type = `Fire Event`\
   Name = `e.c.:ApplicationEvent`\
   Parameters = Name: `data`; Value Type: `Object`; Value: `{"componentType":"c:KanBanPanelComponent","method":"hideCard"}`\
   Has Conditions = `false`
2. Action name and Title = `Refresh Column`\
   Type = `Form API`\
   Form Action Type = `Fire Event`\
   Name = `e.c.:ApplicationEvent`\
   Parameters = **Name**: `data`; **Value Type**: `Object`; **Value**: `{"componentType":"c:KanBanColumnComponent","method":"refresh","params":{"kanbans":"{$FormParameters.kanban}"}}`\
   Has Conditions = `true`\
   Conditions = **1**: `Form.StartDateTime not equal to {$Event.StartDateTime}`; **2**: `Form.EndDateTime not equal to {$Event.EndDateTime}`\
   Conditions logic = `{1} OR {2}`

* Add the following events to the form:

<table data-full-width="false"><thead><tr><th width="65">#</th><th width="275">Element what event is added to</th><th>Event properties</th><th>Event Handler</th></tr></thead><tbody><tr><td>1</td><td>Form</td><td>Type: <strong>onAfterSave</strong><br>Enabled: true</td><td>"<strong>Refresh Column</strong>" action without parameters</td></tr><tr><td>2</td><td>"Close" button</td><td>Type: <strong>onClick</strong><br>Enabled: true</td><td>"<strong>Close Panel</strong>" action without parameters<br></td></tr></tbody></table>

* Set these parameters for the Card Layout body:
  * id = **{Event.Id}**
  * mode = **edit**
* Set other Card Layout properties:
  * Position = **Modal**
  * Hide Header = **false**
  * Hide Footer = **true**
* Go to "Header Configuration" tab and set Text in Title Settings to "**{event.Subject}**".

{% hint style="info" %}
The Layout described above will show the form with basic Event properties that can be edited.
{% endhint %}

### &#x20;Configure Card Compact Layout

* Set the following CSS Styles to the whole Card:

```css
color: #ffffff;
border: 0px none;
padding: 0;
box-shadow: 1px 1px 4px rgba(0,0,0,0.3) inset;
```

* Add a **background-color** property to Card CSS Styles and set its value to the following formula:

```css
FORMULA[
  IF(
    CONTAINS(LOWER({Event.Subject}), 'meeting'),
    #75c769,
    IF(
      OR(
        CONTAINS(LOWER({Event.Subject}), 'send'),
        CONTAINS(LOWER({Event.Subject}), 'letter'),
        CONTAINS(LOWER({Event.Subject}), 'email')
      ),
      #DE5449,
      IF(
        CONTAINS(LOWER({Event.Subject}), 'call'),
        #71afd0,
        #d6b37a
      )
    )
  )
]
```

{% hint style="info" %}
This formula sets the Card background color depending on keywords the subject of Event can contain:

* Event with "meeting" word in subject is light green

* Event with "send", "letter" or "email" word is red

* Event with "call" word is blue

* Other events are yellow brown
  {% endhint %}

* Add a **border-radius** CSS property and set its value to the following formula:

```css
FORMULA[
    IF(
        {Event.StartDateTime} &lt; DATETIMEVALUE(FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),
        '0 ',
        '5px '
    ) + 
    IF(
        {Event.EndDateTime} &gt; DATETIMEVALUE(FORMAT({$Variables.to}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),
        '0 0 ',
        '5px 5px '
    ) + 
    IF(
        {Event.StartDateTime} &lt; DATETIMEVALUE(FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),
        '0',
        '5px'
    )
]
```

{% hint style="info" %}
This formula sets the border radius of Cards (that are Gantt Chart Lines) corners to represent if the current Gantt line is started or ended in the shown date range or not. If the start (or end) date is out of range, both left (or right) corners will not be rounded, otherwise they will be rounded.
{% endhint %}

* Add a **left** CSS property and set its value to the following formula:

```css
FORMULA[
    SCALE(
        IF(
            {Event.StartDateTime} &lt; DATETIMEVALUE(FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),
            0,
            ({Event.StartDateTime} - DATETIMEVALUE(FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}'))) * 100 / (
              DAYSBETWEEN(
                  DATETIMEVALUE(FORMAT({$Variables.to}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),
                  DATETIMEVALUE(FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),
                  false
              )
            )
        ),
        8
    )
]%
```

{% hint style="info" %}
This formula calculates position of the Card left side that should represent the Start Date of Event. The SCALE(\*\*\*,8) function truncates the result to 8 digits in order to avoid long decimal fractions.
{% endhint %}

* Add a **width** CSS property and set its value to the following formula:

```css
FORMULA[
  SCALE(
    (
      (
        IF(
          {Event.EndDateTime} &gt; DATETIMEVALUE(FORMAT({$Variables.to}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}'))
          ,
          100
          ,
          (
            ({Event.EndDateTime} - DATETIMEVALUE(FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}'))) * 100 / (
              DAYSBETWEEN(
                DATETIMEVALUE(FORMAT({$Variables.to}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),
                DATETIMEVALUE(FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),
                false
              )
            )
          )
        )
      )
      -
      (
        IF(
          {Event.StartDateTime} &lt; DATETIMEVALUE(FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}'))
          ,
          0
          ,
          (
            ({Event.StartDateTime} - DATETIMEVALUE(FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}'))) * 100 / (
              DAYSBETWEEN(
                DATETIMEVALUE(FORMAT({$Variables.to}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),
                DATETIMEVALUE(FORMAT({$Variables.from}, 'yyyy-MM-dd{QUOTE}T00:00:00Z{QUOTE}')),
                false
              )
            )
          )
        )
      )
    ),
    8
  )
]%
```

{% hint style="info" %}
This formula calculates the width of the Card. Position of Card right side after applying **left** and **width** CSS properties will represent the End Date of Event. Width of the card, thus, represents its duration.
{% endhint %}

* Change the Value of default existing Card Component to **{Event.Subject}**.
* Set its Title to the same value.
* Set its CSS Styles to these:

```css
width: calc(100% - 24px);
padding: 0.25rem 0.5rem 0 0.5rem;
font-size: 1.1em;
```

* Add [one more Card Component](/standard-kanban/configure-card/how-to-configure-card-compact-layout#adding-components) of "Icon" type to the left of the previous.
* Set its Value to the following formula:

```css
utility:FORMULA[
  IF(
    CONTAINS(LOWER({Event.Subject}), 'meeting'),
    'groups',
    IF(
      OR(
        CONTAINS(LOWER({Event.Subject}), 'send'),
        CONTAINS(LOWER({Event.Subject}), 'letter'),
        CONTAINS(LOWER({Event.Subject}), 'email')
      ),
      'email',
      IF(
        CONTAINS(LOWER({Event.Subject}), 'call'),
        'call',
        'note'
      )
    )
  )
]
```

{% hint style="info" %}
This formula sets the icon depending on keywords the subject of Event can contain:

* Event with "meeting" word in subject has **utility:groups** icon

* Event with "send", "letter" or "email" word has **utility:email** icon

* Event with "call" word has **utility:call** icon

* Other events have **utility:note** icon
  {% endhint %}

* Set its Title to **{Event.Subject}**

* Set its CSS Styles to these:

```css
width: 16px;
padding: 0.25rem 0 0 0.5rem;
box-sizing: content-box;
```

* Add [one more Card Component](/standard-kanban/configure-card/how-to-configure-card-compact-layout#adding-components) of "Text" type below the two previous.
* Set its Value to this formula:

```
◄ FORMULA[FORMAT({Event.StartDateTime},'dd MMM yyyy, HH:mm')] ─  FORMULA[FORMAT({Event.EndDateTime},'dd MMM yyyy, HH:mm')] ►
```

* Set its Title to this formula:

```css
Start date: FORMULA[FORMAT({Event.StartDateTime},'dd MMM yyyy, HH:mm')]; end date: FORMULA[FORMAT({Event.EndDateTime},'dd MMM yyyy, HH:mm')]
```

* Set its Handler to this one:
  * Type = **SObject**
  * Value = **{$Object.Id}**
  * Parameters: **id** = **{Event.Id}**
* Set its CSS Styles to these:

```css
font-size: 0.9em;
padding: 0 0.5rem 0.25rem 0.5rem;
```

### &#x20;Configure dashboard actions and action groups

There are several action groups needed to be created. These groups are listed below with actions they contain. Order of actions in groups is determined by actions indexes: the action with lowest index will be executed first. Refer to proper articles to know how to work with [actions](/components/actions-action-groups/basics/working-with-actions) and [action groups](/components/actions-action-groups/basics/working-with-action-groups).

#### &#x20;"Get Previous Dates" action group

* Create Action Group named "Get Previous Dates" and add following actions to it:

<table><thead><tr><th width="99.66666666666666">Index</th><th width="210">Name</th><th>Properties</th></tr></thead><tbody><tr><td>1</td><td>Get Prev Quarter Dates</td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>With Conditions</strong><br>Conditions type = <strong>Formula</strong><br>Formula Expression =</p><pre><code>AND({$Variables.button} = 'prev', {$Variables.range} = 'quarter')
</code></pre><p>Variable Type = <strong>JSON</strong><br>Variables JSON =</p><pre><code>{
  "from":"FORMULA[ADDMONTHS({$Variables.from}, -3)]",
  "to":"FORMULA[ADDMONTHS({$Variables.to}, -3)]"
}
</code></pre></td></tr><tr><td>2</td><td>Get Prev Year Dates</td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>With Conditions</strong><br>Conditions type = <strong>Formula</strong><br>Formula Expression =</p><pre><code>AND({$Variables.button} = 'prev', {$Variables.range} = 'year')
</code></pre><p>Variable Type = <strong>JSON</strong><br>Variables JSON =</p><pre><code>{
  "from":"FORMULA[ADDYEARS({$Variables.from}, -1)]",
  "to":"FORMULA[ADDYEARS({$Variables.to}, -1)]"
}
</code></pre></td></tr><tr><td>3</td><td>Get Prev Month Dates</td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>With Conditions</strong><br>Conditions type = <strong>Formula</strong><br>Formula Expression =</p><pre><code>AND({$Variables.range} = 'month', {$Variables.button} = 'prev')
</code></pre><p>Variable Type = <strong>JSON</strong><br>Variables JSON =</p><pre><code>{
  "from":"FORMULA[ADDMONTHS({$Variables.from}, -1)]",
  "to":"FORMULA[ADDMONTHS({$Variables.to}, -1)]"
}
</code></pre></td></tr><tr><td>4</td><td>Get Prev Week Dates</td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>With Conditions</strong><br>Conditions type = <strong>Formula</strong><br>Formula Expression =</p><pre><code>AND({$Variables.range} = 'week', {$Variables.button} = 'prev')
</code></pre><p>Variable Type = <strong>JSON</strong><br>Variables JSON =</p><pre><code>{
  "from":"FORMULA[ADDDAYS({$Variables.from}, -7, false)]",
  "to":"FORMULA[ADDDAYS({$Variables.to}, -7, false)]"
}
</code></pre></td></tr><tr><td>5</td><td>Define Column Name</td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>Always</strong><br>Variable Type = <strong>Text</strong><br>Variable Name = <strong>columnName</strong><br>Variable Value =</p><pre><code>FORMULA[FORMAT({$Variables.from}, 'd MMM yyyy') + ' - ' + FORMATGMT({$Variables.to}-1, 'd MMM yyyy')]
</code></pre></td></tr><tr><td>6</td><td><p></p><p>Define Day of Week<br></p></td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>Always</strong><br>Variable Type = <strong>Text</strong><br>Variable Name = <strong>dayOfWeek</strong><br>Variable Value =</p><pre><code>FORMULA[INTNUMBER({$Variables.from} - STARTOFWEEK({$Variables.from}))]
</code></pre></td></tr></tbody></table>

#### &#x20;"Get Next Dates" action group

* Create Action Group named "Get Next Dates" and add following actions to it:

<table><thead><tr><th width="89.66666666666666">Index</th><th width="201">Name</th><th>Properties</th></tr></thead><tbody><tr><td>1</td><td><p></p><p>Get Next Week Dates<br></p></td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>With Conditions</strong><br>Conditions type = <strong>Formula</strong><br>Formula Expression =</p><pre><code>AND({$Variables.range} = 'week', {$Variables.button} = 'next')
</code></pre><p>Variable Type = <strong>JSON</strong><br>Variables JSON =</p><pre><code>{
  "from":"FORMULA[ADDDAYS({$Variables.from}, 7, false)]",
  "to":"FORMULA[ADDDAYS({$Variables.to}, 7, false)]"
}
</code></pre></td></tr><tr><td>2</td><td><p></p><p></p><p>Get Next Quarter Dates<br></p></td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>With Conditions</strong><br>Conditions type = <strong>Formula</strong><br>Formula Expression =</p><pre><code>AND({$Variables.range} = 'quarter', {$Variables.button} = 'next')
</code></pre><p>Variable Type = <strong>JSON</strong><br>Variables JSON =</p><pre><code>{
  "from":"FORMULA[ADDMONTHS({$Variables.from}, 3)]",
  "to":"FORMULA[ADDMONTHS({$Variables.to}, 3)]"
}
</code></pre></td></tr><tr><td>3</td><td><p></p><p>Get Next Year Dates<br></p></td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>With Conditions</strong><br>Conditions type = <strong>Formula</strong><br>Formula Expression =</p><pre><code>AND({$Variables.range} = 'year', {$Variables.button} = 'next')
</code></pre><p>Variable Type = <strong>JSON</strong><br>Variables JSON =</p><pre><code>{
  "from":"FORMULA[ADDYEARS({$Variables.from},1)]",
  "to":"FORMULA[ADDYEARS({$Variables.to},1)]"
}
</code></pre></td></tr><tr><td>4</td><td><p></p><p>Get Next Month Dates<br></p></td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>With Conditions</strong><br>Conditions type = <strong>Formula</strong><br>Formula Expression =</p><pre><code>AND({$Variables.range} = 'month', {$Variables.button} = 'next')
</code></pre><p>Variable Type = <strong>JSON</strong><br>Variables JSON =</p><pre><code>{
  "from":"FORMULA[ADDMONTHS({$Variables.from}, 1)]",
  "to":"FORMULA[ADDMONTHS({$Variables.to}, 1)]"
}
</code></pre></td></tr><tr><td>5</td><td>Define Column Name<br></td><td><em>(this is the same action that was already created for the "Get Previous Dates" action group)</em></td></tr><tr><td>6</td><td>Define Day of Week<br></td><td><em>(this is the same action that was already created for the "Get Previous Dates" action group)</em><br></td></tr></tbody></table>

#### &#x20;"Get Date Ranges" action group

* Create Action Group named "Get Date Ranges" and add following actions to it:

<table><thead><tr><th width="91.66666666666666">Index</th><th width="182">Name</th><th>Properties</th></tr></thead><tbody><tr><td>1</td><td><p></p><p>Get Week Dates<br></p></td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>With Conditions</strong><br>Conditions type = <strong>Formula</strong><br>Formula Expression =</p><pre><code>{$Variables.range} = 'week'
</code></pre><p>Variable Type = <strong>JSON</strong><br>Variables JSON =</p><pre><code>{
  "from":"FORMULA[STARTOFWEEK({$System.Date})]",
  "to":"FORMULA[ADDDAYS(STARTOFWEEK({$System.Date}), 7, false)]"
}
</code></pre></td></tr><tr><td>2</td><td><p></p><p>Get Year Dates<br></p></td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>With Conditions</strong><br>Conditions type = <strong>Formula</strong><br>Formula Expression =</p><pre><code>{$Variables.range} = 'year'
</code></pre><p>Variable Type = <strong>JSON</strong><br>Variables JSON =</p><pre><code>{
  "from":"FORMULA[DATE(YEAR({$System.Date}), 1, 1)]",
  "to":"FORMULA[ADDYEARS(DATE(YEAR({$System.Date}), 1, 1), 1)]"
}
</code></pre></td></tr><tr><td>3</td><td><p></p><p>Get Month Dates<br></p></td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>With Conditions</strong><br>Conditions type = <strong>Formula</strong><br>Formula Expression =</p><pre><code>{$Variables.range} = 'month'
</code></pre><p>Variable Type = <strong>JSON</strong><br>Variables JSON =</p><pre><code>{
  "from":"FORMULA[DATE(YEAR({$System.Date}), MONTH({$System.Date}), 1)]",
  "to":"FORMULA[ADDMONTHS(DATE(YEAR({$System.Date}), MONTH({$System.Date}), 1), 1)]"
}
</code></pre></td></tr><tr><td>4</td><td>Get Quarter Dates</td><td><p>Type = <strong>Define Variable</strong><br>Execute = <strong>With Conditions</strong><br>Conditions type = <strong>Formula</strong><br>Formula Expression =</p><pre><code>{$Variables.range} = 'quarter'
</code></pre><p>Variable Type = <strong>JSON</strong><br>Variables JSON =</p><pre><code>{
  "from":"FORMULA[DATE(YEAR({$System.Date}), IF(MONTH({$System.Date}) >=10, 10, IF(MONTH({$System.Date}) &#x3C;=3, 1, IF(MONTH({$System.Date}) &#x3C;=6, 4, 7))), 1)]",
  "to":"FORMULA[ADDMONTHS(DATE(YEAR({$System.Date}), IF(MONTH({$System.Date}) >=10, 10, IF(MONTH({$System.Date}) &#x3C;=3, 1, IF(MONTH({$System.Date}) &#x3C;=6, 4, 7))), 1), 3)]"
}
</code></pre></td></tr><tr><td>5</td><td><p></p><p>Define Column Name</p></td><td><em>(this is the same action that was already created for the "Get Previous Dates" action group)</em></td></tr><tr><td>6</td><td><p></p><p>Define Day of Week<br></p></td><td><em>(this is the same action that was already created for the "Get Previous Dates" action group)</em></td></tr></tbody></table>

#### &#x20;Configure dashboard buttons and menus

* [Add buttons and menu](/standard-kanban/configure-kanban/how-to-add-kanban-buttons-and-menus) to the dashboard:

1. Button\
   **Basic configuration:**\
   Type = `Icon`\
   Title = `Previous {$Variables.range}`\
   Icon = `utility:left`\
   **Handler configuration:**\
   Type = `Action Group`\
   Value = `Get Previous Dates`\
   Parameters = `variables = {"button":"prev"}`\
   Success Handler = `Kanban API -> Refresh Kanbans`
2. Menu\
   **Basic configuration:**\
   Type = `Button`\
   Label = `FORMULA[REPLACE({$Variables.range},SUBSTR(,0,1),UPPER(SUBSTR({$Variables.range},0,1)))]`\
   Title = `{$Variables.range}`\
   Position = `Right and Top`
3. Button\
   **Basic configuration:**\
   Type = `Icon`\
   Title = `Next {$Variables.range}`\
   Icon = `utility:right`\
   **Handler configuration:**\
   Type = `Action Group`\
   Value = `Get Next Dates`\
   Parameters = `variables = {"button":"next"}`\
   Success Handler = `Kanban API -> Refresh Kanbans`

* Add Menu Buttons to the Menu created above and set these properties for them:

1. **Basic Configuration:**\
   Type = `Standard`\
   Label = `Quarter`\
   Title = `Quarter`\
   Conditions = `FORMULA[{$Variables.range != 'quarter']`\
   **Handler configuration:**\
   Type = `Action Group`\
   Value = `Get Date Ranges`\
   Parameters = `variables = {"range":"quarter"}`\
   Success Handler = `Kanban API -> Refresh Kanbans`
2. **Basic Configuration:**\
   Type = `Standard`\
   Label = `Month`\
   Title = `Month`\
   Conditions = `FORMULA[{$Variables.range != 'month']`\
   **Handler configuration:**\
   Type = `Action Group`\
   Value = `Get Date Ranges`\
   Parameters = `variables = {"range":"month"}`\
   Success Handler = `Kanban API -> Refresh Kanbans`
3. **Basic Configuration:**\
   Type = `Standard`\
   Label = `Year`\
   Title = `Year`\
   Conditions = `FORMULA[{$Variables.range != 'year']`\
   **Handler configuration:**\
   Type = `Action Group`\
   Value = `Get Date Ranges`\
   Parameters = `variables = {"range":"year"}`\
   Success Handler = `Kanban API -> Refresh Kanbans`
4. **Basic Configuration:**\
   Type = `Standard`\
   Label = `Week`\
   Title = `Week`\
   Conditions = `FORMULA[{$Variables.range != 'week']`\
   **Handler configuration:**\
   Type = `Action Group`\
   Value = `Get Date Ranges`\
   Parameters = `variables = {"range":"week"}`\
   Success Handler = `Kanban API -> Refresh Kanbans`

####


# Demo Example: Cases Dashboard

The given Cases Dashboard represents a way to show cases by their reasons, manage them and change their statuses. Here is how this dashboard can look like:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FdvxpdIYLad44tqQHMs1z%2Fimage.png?alt=media&amp;token=928efe16-2c9c-47ed-b2c5-6a63b6e09e24" alt=""><figcaption></figcaption></figure>

This dashboard shows cases in 5 columns; each column corresponds to one of case statuses. By dragging the case card from one column to another user can easily change its status.\
Left tab bar allows user to display cases corresponding to different reasons. Click on them to apply selected reason to all columns - this acts like tabs or filter.

To make a such dashboard administrator should do actions listed below:

### Create new dashboard

* Go to [dashboard creation wizard](/standard-kanban/basics/how-to-create-a-standard-kanban) and create new standard dashboard.
* Give it a name and description.
* Select "White" theme.
* Save dashboard and go to Kanban Builder.

### Configure dashboard

Set these CSS Styles to Dashboard on Basics Configuration Tab:

```css
background-position: bottom center;
background-repeat: no-repeat;
background-size: 100% auto;
background-color: #E6EBE5;
```

Add the **background-image** CSS property and set it to: `url('data:image/jpeg;base64,...')`, where URL is a proper image encoded in base64 format (to embed image into dashboard and to avoid loading it from another source). In this example this image is used:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FdNuJzD6biZNGorA9bPcF%2Fimage.png?alt=media&amp;token=528f5f9e-3647-480a-ba97-236234bd59de" alt=""><figcaption><p><em>This image is taken by author of this example and can be used by any person for any purpose, commercial or not, without any restrictions.</em></p></figcaption></figure>

Go to [Statistics Configuration](/standard-kanban/configure-kanban/how-to-add-kanban-statistics). Add [the cell](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons#cells) which will overlay unnecessary views selector:

* Type = Text
* Value =

```clike
FORMULA[
  IF(
    OR(
      ISBLANK({$Variables.SelectedCaseReason}),
      {$Variables.SelectedCaseReason} = ''
    ),
    'Cases without reason',
    {$Variables.SelectedCaseReason} cases
  )
]
```

Set CSS Styles to this cell:

```css
z-index: 1;
align-items: center;
justify-content: center;
display: flex;
background-color: #F7F7F7;
position: absolute;
font-size: 1.5rem;
top: 0;
left: 0;
height: 100%;
padding: 0 1.25em;
```

Go to [Variables Configuration](/standard-kanban/using-kanban/how-to-work-with-variables) tab. Add these variables:

| # | Variable Name      | Variable Value |
| - | ------------------ | -------------- |
| 1 | SelectedCaseReason | Installation   |
| 2 | CurrentKanbanId    | {$KanBan.Id}   |

### Configure columns

* Add 5 [columns](/standard-kanban/configure-kanban/working-with-kanban-layout) to the dashboard
* Name columns accordingly to the table below
* Leave columns widths default ("**auto**") except the column with "**New**" name (set it width to **24%**)
* Leave columns "Is Active" checkboxes default (checked)
* [Set these properties](/standard-kanban/configure-column/how-to-configure-column-data-source) to all columns:
  * Data Source Type = **SObject**
  * Data Source = **Case**
  * Order = **Case ID, asc**
* Set conditions to the columns accordingly to the table below (leave conditions logic empty in all columns):

<table><thead><tr><th width="107">Column</th><th width="135">Field Name</th><th width="121">Operator</th><th width="94">Type</th><th>Value</th></tr></thead><tbody><tr><td>New</td><td>Case Reason<br>Status<br>Status<br>Status<br>Status</td><td>equals<br>not equal to<br>not equal to<br>not equal to<br>not equal to</td><td>Formula<br>Value<br>Value<br>Value<br>Formula</td><td>{$Variables.SelectedCaseReason}<br>Working<br>Escalated<br>Closed<br>Active</td></tr><tr><td>Active</td><td>Case Reason<br>Status</td><td>equals<br>equals</td><td>Formula<br>Formula</td><td>{$Variables.SelectedCaseReason}<br>Active</td></tr><tr><td>Escalated</td><td>Case Reason<br>Status</td><td>equals<br>equals</td><td>Formula<br>Value</td><td>{$Variables.SelectedCaseReason}<br>Escalated</td></tr><tr><td>Working</td><td>Case Reason<br>Status</td><td>equals<br>equals</td><td>Formula<br>Value</td><td>{$Variables.SelectedCaseReason}<br>Working</td></tr><tr><td>Closed</td><td>Case Reason<br>Status</td><td>equals<br>equals</td><td>Formula<br>Value</td><td>{$Variables.SelectedCaseReason}<br>Closed</td></tr></tbody></table>

* Add [custom attribute](/standard-kanban/configure-column/how-to-set-and-use-column-custom-attributes) to each column with name = **Status** and value equal to column name
* Set the following styles for column bodies on Body Configuration tab:

<table><thead><tr><th width="66.33333333333331">#</th><th width="109">Column</th><th>Column Body CSS styles</th></tr></thead><tbody><tr><td>1</td><td>New</td><td><pre class="language-css"><code class="lang-css">height: calc(100% - (28px + 39px + 20px));
left: 64px;
width: calc(100% - 94px);
top: calc(28px + 39px);
position: absolute;
margin: 0 10px 20px 20px;
border-right: 0px none;
background: rgba(255,255,255,0.3);
border-radius: 0 0 4px 4px;
</code></pre></td></tr><tr><td>2</td><td>Active</td><td><pre class="language-css"><code class="lang-css">border-radius: 0 0 4px 4px;
background: rgba(255,255,255,0.3);
border-right: 0px none;
margin: 0 10px 20px 10px;
</code></pre></td></tr><tr><td>3</td><td>Escalated</td><td></td></tr><tr><td>4</td><td>Working</td><td></td></tr><tr><td>5</td><td>Closed</td><td><pre class="language-css"><code class="lang-css">border-radius: 0 0 4px 4px;
background: rgba(255,255,255,0.3);
border-right: 0px none;
margin: 0 20px 20px 10px;
</code></pre></td></tr></tbody></table>

* Set these styles to column headers on the Header Configuration tab:

<table><thead><tr><th width="59.333333333333314">#</th><th width="108">Column</th><th>Column Header CSS styles</th></tr></thead><tbody><tr><td>1</td><td>New</td><td><pre class="language-css"><code class="lang-css">height: 100%;
max-width: 64px;
width: 64px;
padding: 0;
border-bottom: 0;
cursor: pointer;
</code></pre></td></tr><tr><td>2</td><td>Active</td><td><pre class="language-css"><code class="lang-css">border-radius: 4px 4px 0 0;
border-right: 0px none;
background-color: rgba(255,255,255,0.3);
border-bottom: 0px none;
margin: 20px 10px 0 10px;
border-top: 8px solid #7799DD;
padding: 0.5rem 0.75rem 0.5rem;
</code></pre></td></tr><tr><td>3</td><td>Escalated</td><td><pre class="language-css"><code class="lang-css">border-radius: 4px 4px 0 0;
border-right: 0px none;
background-color: rgba(255,255,255,0.3);
border-bottom: 0px none;
margin: 20px 10px 0 10px;
border-top: 8px solid #F73B00;
padding: 0.5rem 0.75rem 0.5rem;
</code></pre></td></tr><tr><td>4</td><td>Working</td><td><pre class="language-css"><code class="lang-css">border-radius: 4px 4px 0 0;
border-right: 0px none;
background-color: rgba(255,255,255,0.3);
border-bottom: 0px none;
margin: 20px 10px 0 10px;
border-top: 8px solid #F88D00;
padding: 0.5rem 0.75rem 0.5rem;
</code></pre></td></tr><tr><td>5</td><td>Closed</td><td><pre class="language-css"><code class="lang-css">border-radius: 4px 4px 0 0;
border-right: 0px none;
background-color: rgba(255,255,255,0.3);
border-bottom: 0px none;
margin: 20px 20px 0 10px;
border-top: 8px solid #04A300;
padding: 0.5rem 0.75rem 0.5rem;
</code></pre></td></tr></tbody></table>

* Set these styles to the footer of "New" column on the Footer Configuration tab:

```css
position: absolute;
top: 20px;
left: 84px;
width: calc(100% - 94px);
height: 47px;
border-radius: 4px 4px 0 0;
border-right: 0px none;
background-color: rgba(255,255,255,0.3);
border-bottom: 0px none;
border-top: 8px solid #CCCCCC;
padding: 0.5rem 0.75rem 0.5rem;
```

* Add [one row with one cell](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons#rows) to the footer of "New" column. Set these properties to the cell:
  * Type = **Text**
  * CSS Styles = **Font-size: 1rem;**
* Set the cell Value to the following formula:

```clike
New FORMULA[
  IF(
    OR(
      ISBLANK({$Variables.SelectedCaseReason}),
      {$Variables.SelectedCaseReason} = ''
    ),
    'Cases without reason',
    {$Variables.SelectedCaseReason} cases
  )
]
```

* Add the following cells with Type = **Icon** to the header of "New" column. Set these properties to them:

<table data-full-width="true"><thead><tr><th width="60">#</th><th width="130">Value</th><th width="129">Title</th><th width="291">CSS Styles</th><th>Handlers</th></tr></thead><tbody><tr><td>1</td><td>utility:setup</td><td>Cases with "Installation" reason.</td><td><pre class="language-css"><code class="lang-css">top: 0;
color: FORMULA[IF({$Variables.SelectedCaseReason} = 'Installation',#FFFFFF,#7799DD)];
border-bottom: 0.125px solid #DDDBDA;
transform-origin: top left;
transform: scale(2);
align-items: center;
justify-content: center;
display: flex;
height: 32px;
width: 32px;
position: absolute;
background: FORMULA[IF({$Variables.SelectedCaseReason} = 'Installation',#7799DD,#FFFFFF)];
margin-left: -1px;
</code></pre></td><td><p>Cell handler:</p><ul><li>Type = <strong>Kanban API</strong></li><li>Value = <strong>Update Variables</strong></li><li><p>Parameters:</p><ul><li>kanbans = <strong>{$Variables.CurrentKanbanId}</strong></li><li>variables = <strong>{"SelectedCaseReason":"Installation"}</strong></li></ul></li></ul><p>Success handler:<br></p><ul><li>Type = <strong>Kanban API</strong></li><li>Value = <strong>Refresh Kanbans</strong></li><li><p>Parameters:</p><ul><li>kanbans = <strong>{$Variables.CurrentKanbanId}</strong></li></ul></li></ul></td></tr><tr><td>2</td><td>utility:custom_apps</td><td>Cases with "Equipment Complexity" reason.</td><td><pre class="language-css"><code class="lang-css">margin-left: -1px;
background: FORMULA[IF({$Variables.SelectedCaseReason} = 'Equipment Complexity',#7799DD,#FFFFFF)];
position: absolute;
width: 32px;
height: 32px;
display: flex;
justify-content: center;
align-items: center;
transform: scale(2);
transform-origin: top left;
border-bottom: 0.125px solid #DDDBDA;
color: FORMULA[IF({$Variables.SelectedCaseReason} = 'Equipment Complexity',#FFFFFF,#7799DD)];
top: 63px;
</code></pre></td><td><p>Cell handler:</p><ul><li>Type = Kanban API</li><li>Value = Update Variables</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li><li>variables = <strong>{"SelectedCaseReason":"Equipment Complexity"}</strong></li></ul></li></ul><p>Success handler:<br></p><ul><li>Type = Kanban API</li><li>Value = Refresh Kanbans</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li></ul></li></ul></td></tr><tr><td>3</td><td>utility:graph</td><td>Cases with "Performance" reason.</td><td><pre class="language-css"><code class="lang-css">position: absolute;
width: 32px;
height: 32px;
display: flex;
justify-content: center;
align-items: center;
transform: scale(2);
transform-origin: top left;
border-bottom: 0.125px solid #DDDBDA;
color: FORMULA[IF({$Variables.SelectedCaseReason} = 'Performance',#FFFFFF,#7799DD)];
top: 126px;
background: FORMULA[IF({$Variables.SelectedCaseReason} = 'Performance',#7799DD,#FFFFFF)];
margin-left: -1px;
</code></pre></td><td><p>Cell handler:</p><ul><li>Type = Kanban API</li><li>Value = Update Variables</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li><li>variables = <strong>{"SelectedCaseReason":"Performance"}</strong></li></ul></li></ul><p>Success handler:<br></p><ul><li>Type = Kanban API</li><li>Value = Refresh Kanbans</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li></ul></li></ul></td></tr><tr><td>4</td><td>utility:warning</td><td>Cases with "Breakdown" reason.</td><td><pre class="language-css"><code class="lang-css">margin-left: -1px;
background: FORMULA[IF({$Variables.SelectedCaseReason} = 'Breakdown',#7799DD,#FFFFFF)];
top: 189px;
color: FORMULA[IF({$Variables.SelectedCaseReason} = 'Breakdown',#FFFFFF,#7799DD)];
border-bottom: 0.125px solid #DDDBDA;
transform-origin: top left;
transform: scale(2);
align-items: center;
justify-content: center;
display: flex;
height: 32px;
width: 32px;
position: absolute;
</code></pre></td><td><p>Cell handler:</p><ul><li>Type = Kanban API</li><li>Value = Update Variables</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li><li>variables = <strong>{"SelectedCaseReason":"Breakdown"}</strong></li></ul></li></ul><p>Success handler:<br></p><ul><li>Type = Kanban API</li><li>Value = Refresh Kanbans</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li></ul></li></ul></td></tr><tr><td>5</td><td>utility:palette</td><td>Cases with "Equipment Design" reason.</td><td><pre class="language-css"><code class="lang-css">margin-left: -1px;
background: FORMULA[IF({$Variables.SelectedCaseReason} = 'Equipment Design',#7799DD,#FFFFFF)];
top: 252px;
color: FORMULA[IF({$Variables.SelectedCaseReason} = 'Equipment Design',#FFFFFF,#7799DD)];
border-bottom: 0.125px solid #DDDBDA;
transform-origin: top left;
transform: scale(2);
align-items: center;
justify-content: center;
display: flex;
height: 32px;
width: 32px;
position: absolute;
</code></pre></td><td><p>Cell handler:</p><ul><li>Type = Kanban API</li><li>Value = Update Variables</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li><li>variables = <strong>{"SelectedCaseReason":"Equipment Design"}</strong></li></ul></li></ul><p>Success handler:<br></p><ul><li>Type = Kanban API</li><li>Value = Refresh Kanbans</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li></ul></li></ul></td></tr><tr><td>6</td><td>utility:comments</td><td>Cases with "Feedback" reason.</td><td><pre class="language-css"><code class="lang-css">margin-left: -1px;
background: FORMULA[IF({$Variables.SelectedCaseReason} = 'Feedback',#7799DD,#FFFFFF)];
top: 315px;
color: FORMULA[IF({$Variables.SelectedCaseReason} = 'Feedback',#FFFFFF,#7799DD)];
border-bottom: 0.125px solid #DDDBDA;
transform-origin: top left;
transform: scale(2);
align-items: center;
justify-content: center;
display: flex;
height: 32px;
width: 32px;
position: absolute;
</code></pre></td><td><p>Cell handler:</p><ul><li>Type = Kanban API</li><li>Value = Update Variables</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li><li>variables = <strong>{"SelectedCaseReason":"Feedback"}</strong></li></ul></li></ul><p>Success handler:<br></p><ul><li>Type = Kanban API</li><li>Value = Refresh Kanbans</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li></ul></li></ul></td></tr><tr><td>7</td><td>utility:world</td><td>Cases with "Other" reason.</td><td><pre class="language-css"><code class="lang-css">margin-left: -1px;
background: FORMULA[IF({$Variables.SelectedCaseReason} = 'Other',#7799DD,#FFFFFF)];
top: 378px;
color: FORMULA[IF({$Variables.SelectedCaseReason} = 'Other',#FFFFFF,#7799DD)];
border-bottom: 0.125px solid #DDDBDA;
transform-origin: top left;
transform: scale(2);
align-items: center;
justify-content: center;
display: flex;
height: 32px;
width: 32px;
position: absolute;
</code></pre></td><td><p>Cell handler:</p><ul><li>Type = Kanban API</li><li>Value = Update Variables</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li><li>variables = <strong>{"SelectedCaseReason":"Other"}</strong></li></ul></li></ul><p>Success handler:<br></p><ul><li>Type = Kanban API</li><li>Value = Refresh Kanbans</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li></ul></li></ul></td></tr><tr><td>8</td><td>utility:error</td><td>Cases without reason set.</td><td><pre class="language-css"><code class="lang-css">margin-left: -1px;
background: FORMULA[IF(OR(ISBLANK({$Variables.SelectedCaseReason}), {$Variables.SelectedCaseReason} = ''),#7799DD,#FFFFFF)];
top: 441px;
position: absolute;
width: 32px;
height: 32px;
display: flex;
justify-content: center;
align-items: center;
transform: scale(2);
transform-origin: top left;
border-bottom: 0.125px solid #DDDBDA;
color: FORMULA[IF(OR(ISBLANK({$Variables.SelectedCaseReason}), {$Variables.SelectedCaseReason} = ''),#FFFFFF,#7799DD)];
</code></pre></td><td><p>Cell handler:</p><ul><li>Type = Kanban API</li><li>Value = Update Variables</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li><li>variables = <strong>{"SelectedCaseReason":null}</strong></li></ul></li></ul><p>Success handler:<br></p><ul><li>Type = Kanban API</li><li>Value = Refresh Kanbans</li><li><p>Parameters:</p><ul><li>kanbans = {$Variables.CurrentKanbanId}</li></ul></li></ul></td></tr></tbody></table>

### Configure Card

* [Add 1 card](/standard-kanban/configure-kanban/working-with-kanban-layout) to dashboard
* Set Data Source Type to "**Case**"
* Set [card layout](/standard-kanban/configure-card/how-to-configure-card-layout) to necessary type. In this example it is set to **SObject** and Record ID is set to **{**&#x43;ase.Id}:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FXwh6rkfErUwSuVZFNtLa%2Fimage.png?alt=media&amp;token=e539b5f1-5643-431d-a8f5-2cda8b2185cd" alt=""><figcaption></figcaption></figure>

* Set card layout header to show the number of active Case record:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FqzZp7noStvFenjPDgXEl%2Fimage.png?alt=media&amp;token=45b8e915-06ed-4a05-b6d0-566cbe0d7b20" alt=""><figcaption></figcaption></figure>

* Open [Card Compact Layout editor](/standard-kanban/configure-card/how-to-configure-card-compact-layout) and add these styles to the Card settings:

```css
padding-left: 44px;
```

* By default Card Compact Layout contains one component of text type; this component contains Record ID.  Click on it and change its Value to **{Case.CaseNumber} - {Case.SuppliedName}**
* Leave its Title empty
* Set its width to **100** (leave default)
* Leave Handler and Styles empty
* Add Icon component #2 at the left of the previous
* Set its Value to the following formula (it will dynamically set icon depending on case priority):

```clike
FORMULA[
  CASE(
    {Case.Priority},
    low, 'utility:like',
    medium, 'utility:touch_action',
    high, 'utility:dislike',
    'utility:waits'
  )
]
```

* Set its Title to the following formula (it will dynamically change the icon tooltip depending on case priority):

```clike
Priority FORMULA[CASE({Case.Priority}, low, ': low', medium, ': medium', high, ': high', 'not set')]
```

* Do not set handlers
* Set CSS Styles to these:

```css
width:24px;
background-color:FORMULA[CASE({Case.Priority}, low, #04A300, medium, #F88D00, high, #F73B00, #7799DD)];
color:#FFFFFF;
border-radius:24px;
height:24px;
display:flex;
justify-content:center;
align-items:center;
top:50%;
position:absolute;
margin-top:-12px;
left:10px;
```

* Add text component #3 below
* Set its value to **Reason: {Case.Reason}**
* Do not set its Title, handlers and styles<br>
* Add text component #4 below
* Set its value to **Type: {Case.Type}**
* Do not set its Title, handlers and styles\
  &#x20;
* Add text component #5 below
* Set its value to **Origin: {Case.Origin}**
* Do not set its Title, handlers and styles\
  &#x20;
* Add text component #6 below
* Set its value to <mark style="color:red;">`FORMULA[IF(ISBLANK({Case.ClosedDate}), '',Closed: {Case.ClosedDate})]`</mark>
* Do not set its Title, handlers and styles&#x20;

### Configure Column Junctions

* Set [column junctions](/standard-kanban/configure-card/configuring-card-movement-and-column-junctions) for card on each column:
  * Drag-n-drop allowed to ALL columns
  * Drop behavior for source column: Remove card
  * Drop behavior for target column: Refresh

### Configure Card Actions

To add a sense to Cards dragging [some actions](/standard-kanban/configure-card/configuring-card-actions) are necessary. In this example action will be the same for all columns, so, no need to configure them separately.

Click on card and add a new action with these properties:

* Name = **Update Case Status**
* Type = **Field Update**
* Execute = **Always**
* Status = **Active**
* Context Object Type = **Case**

In the Field Update Settings section configure this:

* Object Name = **Case**
* Fields:
  * Name = **Status**
  * Value = **{$TargetColumn.a\_\_Status}**
* Conditions:
  * **Case ID eqials {case.id}**


# Basics

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th data-hidden></th><th data-hidden></th><th data-hidden data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><a href="/standard-kanban/basics/how-to-create-a-standard-kanban"><mark style="color:blue;"><strong>How to create a standard Kanban</strong></mark></a></td><td></td><td></td><td></td><td><a href="/standard-kanban/basics/how-to-create-a-standard-kanban">How to Create a Standard Kanban</a></td></tr><tr><td align="center"><a href="/standard-kanban/basics/how-to-open-a-kanban-in-builder-edit"><mark style="color:blue;"><strong>How to open (edit) a Kanban in Builder</strong></mark></a></td><td></td><td></td><td></td><td><a href="/standard-kanban/basics/how-to-open-a-kanban-in-builder-edit">How to Open a Kanban in Builder (Edit)</a></td></tr><tr><td align="center"><a href="/standard-kanban/basics/how-to-share-a-kanban"><mark style="color:blue;"><strong>How to share a Kanban</strong></mark></a></td><td></td><td></td><td></td><td><a href="/standard-kanban/basics/how-to-share-a-kanban">How to Share a Kanban</a></td></tr><tr><td align="center"><a href="/standard-kanban/basics/how-to-clone-a-kanban"><mark style="color:blue;"><strong>How to clone a Kanban</strong></mark></a></td><td></td><td></td><td></td><td><a href="/standard-kanban/basics/how-to-clone-a-kanban">How to Clone a Kanban</a></td></tr></tbody></table>


# How to Create a Standard Kanban

Open "Kanbans" tab and click “New” button in the upper right corner of the page to open Kanban creation wizard:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FIXpX4UHJBvY5UhWI7KWR%2Ffile.excalidraw.svg?alt=media&amp;token=8c93ec37-ee10-4922-b1e4-841b299f908d" alt="" class="gitbook-drawing">

At the first step select Standard kanban type.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FOIia27LNrMujKdyL8c5V%2Ffile.excalidraw.svg?alt=media&amp;token=13381c57-f847-4e78-99da-1f1874b3a19b" alt="" class="gitbook-drawing">

* Click "Next" button to go to second step of wizard
* Select Kanban Color Theme
* Enter Kanban name
* Populate description (if it is necessary):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F1RvyzlyX4NdGsMYO1aRP%2Ffile.excalidraw.svg?alt=media&amp;token=84f7e747-fcfc-4c27-a103-f7a886384315" alt="" class="gitbook-drawing">

* Click "Next" button and go to step 3.

At the next step you can set up initial Kanban configuration.

**For Standard Kanban:**

* Select a Source Object
* Then select a field which values will be represented by columns and updated by card dragging (if you use default actions) in "Group By" picklist
* Optionally select a field in "Summarize by" if you want kanban to show totals calculated for proper values in the footer of each column:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FQuj4e5OHbj77nBAg37Be%2Ffile.excalidraw.svg?alt=media&amp;token=5fe9beb4-7a0f-4fdc-99a1-c59d7ef339bc" alt="" class="gitbook-drawing">

* Click "Next" button.
* At the next step select necessary values of "Group By" field in the "Available Values" section and click "►" button to add them to the "Add columns for" section. Select all of them, or those which should be represented in columns:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FlSYRWE11lXNPRldhljOx%2Ffile.excalidraw.svg?alt=media&amp;token=ebef37e5-0b1f-4df2-a474-e26d6c381c90" alt="" class="gitbook-drawing">

* Rearrange them as you wish with "▲" and "▼" buttons. Note: topmost selected value will correspond to leftmost column:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FUB79lKx74XWdpPVX3GTu%2Ffile.excalidraw.svg?alt=media&amp;token=8ef887cc-dffa-4b95-b00f-2dd88cb46cfa" alt="" class="gitbook-drawing">

* Leave "Allow users to move cards between columns" toggler on if you want to turn on card dragging and pre-configure kanban with standard action that will allow cards to be updated correspondingly to columns.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F0vcbTyQ1rDfd7BnkdN6P%2Ffile.excalidraw.svg?alt=media&amp;token=f557cd63-9497-475c-a8d2-0fe5613c71cc" alt="" class="gitbook-drawing">

* Click "Next" button
* Select fields to be shown on card compact layout and rearrange them, if necessary.

{% hint style="info" %}
Note: topmost field will be used as card header, that will be always visible on card layout (actual for collapsible cards)
{% endhint %}

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FlMSkM9PUR6K6oqWvHqQI%2Ffile.excalidraw.svg?alt=media&amp;token=84ffd328-adda-47b7-b441-af5a5940caa1" alt="" class="gitbook-drawing">

{% hint style="warning" %}
Note: you should select at least one field, and not more than 12. But you can add more when [configure card](/standard-kanban/configure-card) manually later.
{% endhint %}

* If you want to show field names as labels in the card, leave "Display field labels on Kanban cards" toggler on, otherwise turn it off to show only field values.
* Click "Next" button
* At the following step you can ask AI to generate color ideas. See [example page](/get-started/how-to-build-a-simple-kanban-using-creation-wizard-abilities) to know more.
* At the last step you can review your Kanban brief summary information
* Click "Save" or "Back" button (if you want to correct options):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F6v3E0XrgQS3VBoPcu6Xx%2Ffile.excalidraw.svg?alt=media&amp;token=6b618532-54d9-469b-962b-81e14311a954" alt="" class="gitbook-drawing">

* If you do not want to open new kanban in the advanced editor, you can turn "Launch Advanced Kanban Builder After Wizard Completion" toggler off - in this case you will go to kanbans tab after saving.
* If you leave toggler on, after clicking "Save" you will go to standard Kanban editor:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FC68mAa3v0oV6u2o4DO3e%2Ffile.excalidraw.svg?alt=media&amp;token=78a42fd7-f964-49a3-bfd5-4e0bb89da5d6" alt="" class="gitbook-drawing">

Columns with conditions will be set correspondingly to the creation wizard:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FNn5GrNU7PWCyJWY3Wc9I%2Ffile.excalidraw.svg?alt=media&amp;token=05397ebd-93e5-4ffa-ad8a-e741a21e1818" alt="" class="gitbook-drawing">

Card will have elements added correspondingly to the creation wizard.

First (topmost) of them will be used as card header and has no label by default. Other fields will be added (with or without labels) corresponding to field name:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FUpLKjG0w6Y8fFJLeZ8OM%2Ffile.excalidraw.svg?alt=media&amp;token=2af3db10-2878-45bc-ac59-3a764b23e233" alt="" class="gitbook-drawing">

&#x20;

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FT0P7xFE19U3CFV2siEKQ%2Ffile.excalidraw.svg?alt=media&amp;token=b0ab9c97-f722-440b-86dc-adc7a50a4561" alt="" class="gitbook-drawing">

Card also will have main layout set with **body**, header **title**, and **footer button** with standard "View record" handler:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FbyFV6QhbB4Xr7VjAktVE%2Ffile.excalidraw.svg?alt=media&amp;token=97d4746a-05ff-4e16-9457-02198c4a14cb" alt="" class="gitbook-drawing">

&#x20;

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FcUsdvfU7ZFrE6evyWNid%2Ffile.excalidraw.svg?alt=media&amp;token=d874f714-1480-4bfd-b6df-e4827cbaf691" alt="" class="gitbook-drawing">

&#x20;

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVSRRYqjNfZUmyUUCnJ01%2Ffile.excalidraw.svg?alt=media&amp;token=1e3db89e-4aca-4196-bffd-c564ac270340" alt="" class="gitbook-drawing">

&#x20;

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F1FZbo663Er0T8yBvP0vQ%2Ffile.excalidraw.svg?alt=media&amp;token=e5437c3a-cb2b-4044-8cfe-70071648b81c" alt="" class="gitbook-drawing">

{% hint style="warning" %}
Note: [card dragging](/standard-kanban/configure-card/configuring-card-movement-and-column-junctions) will not be automatically set, if you turn off "Allow users to move cards between columns" toggler.
{% endhint %}


# How to Create a Child Kanban

Open "Kanbans" tab and click “New” button in the upper right corner of the page to open Kanban creation wizard:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FIXpX4UHJBvY5UhWI7KWR%2Ffile.excalidraw.svg?alt=media&amp;token=8c93ec37-ee10-4922-b1e4-841b299f908d" alt="" class="gitbook-drawing">

At the first step select kanban type. If you want to insert a kanban into some record page and filter cards by this record (e.g., show only cases related for an Account you look at), select a Child Kanban.

{% hint style="info" %}
The difference between Standard and Child kanban is that Child kanban offers to add some code in column conditions that allow this kanban to automatically display records related to some other record only - this is good for integrating Kanban into some object's Record page.
{% endhint %}

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FOIia27LNrMujKdyL8c5V%2Ffile.excalidraw.svg?alt=media&amp;token=13381c57-f847-4e78-99da-1f1874b3a19b" alt="" class="gitbook-drawing">

* Click "Next" button to go to second step of wizard
* Select Kanban Color Theme
* Enter Kanban name
* Populate description (if it is necessary):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F1RvyzlyX4NdGsMYO1aRP%2Ffile.excalidraw.svg?alt=media&amp;token=84f7e747-fcfc-4c27-a103-f7a886384315" alt="" class="gitbook-drawing">

* Click "Next" button and go to step 3.

At the next step you can set up initial Kanban configuration.

* Select a Parent Object (which record page kanban will be added into)
* Then select a Child Object (which records will be represented by kanban cards)
* Then select a field which values will be represented by columns and updated by card dragging (if you use default actions) in "Group By" picklist
* Optionally select a field in "Summarize by" if you want kanban to show totals calculated for proper values in the footer of each column:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fk8N13o5D4ey46JxQGkG5%2Ffile.excalidraw.svg?alt=media&amp;token=88571ec0-ea72-4db6-a4b9-35fd185c5d77" alt="" class="gitbook-drawing">

* Click "Next" button.
* At the next step select necessary values of "Group By" field in the "Available Values" section and click "►" button to add them to the "Add columns for" section. Select all of them, or those which should be represented in columns:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FlSYRWE11lXNPRldhljOx%2Ffile.excalidraw.svg?alt=media&amp;token=ebef37e5-0b1f-4df2-a474-e26d6c381c90" alt="" class="gitbook-drawing">

* Rearrange them as you wish with "▲" and "▼" buttons. Note: topmost selected value will correspond to leftmost column:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FUB79lKx74XWdpPVX3GTu%2Ffile.excalidraw.svg?alt=media&amp;token=8ef887cc-dffa-4b95-b00f-2dd88cb46cfa" alt="" class="gitbook-drawing">

* Leave "Allow users to move cards between columns" toggler on if you want to turn on card dragging and pre-configure kanban with standard action that will allow cards to be updated correspondingly to columns.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F0vcbTyQ1rDfd7BnkdN6P%2Ffile.excalidraw.svg?alt=media&amp;token=f557cd63-9497-475c-a8d2-0fe5613c71cc" alt="" class="gitbook-drawing">

* Click "Next" button
* Select fields to be shown on card compact layout and rearrange them, if necessary.

{% hint style="info" %}
Note: topmost field will be used as card header, that will be always visible on card layout (actual for collapsible cards)
{% endhint %}

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FlMSkM9PUR6K6oqWvHqQI%2Ffile.excalidraw.svg?alt=media&amp;token=84ffd328-adda-47b7-b441-af5a5940caa1" alt="" class="gitbook-drawing">

{% hint style="warning" %}
Note: you should select at least one field, and not more than 12. But you can add more when [configure card](/standard-kanban/configure-card) manually later.
{% endhint %}

* If you want to show field names as labels in the card, leave "Display field labels on Kanban cards" toggler on, otherwise turn it off to show only field values.
* Click "Next" button
* At the following step you can ask AI to generate color ideas. See [example page](/get-started/how-to-build-a-simple-kanban-using-creation-wizard-abilities) to know more.
* At the last step you can review your Kanban brief summary information
* Click "Save" or "Back" button (if you want to correct options):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F6v3E0XrgQS3VBoPcu6Xx%2Ffile.excalidraw.svg?alt=media&amp;token=6b618532-54d9-469b-962b-81e14311a954" alt="" class="gitbook-drawing">

{% hint style="info" %}
To make child kanban working as needed, you need to incorporate it into the Lightning Page of Parent Object record. See [proper article](/standard-kanban/basics/how-to-incorporate-a-child-kanban-into-a-lightning-page) to know how to do this.
{% endhint %}

* If you do not want to open new kanban in the advanced editor, you can turn "Launch Advanced Kanban Builder After Wizard Completion" toggler off - in this case you will go to kanbans tab after saving.
* If you leave toggler on, after clicking "Save" you will go to standard Kanban editor:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FC68mAa3v0oV6u2o4DO3e%2Ffile.excalidraw.svg?alt=media&amp;token=78a42fd7-f964-49a3-bfd5-4e0bb89da5d6" alt="" class="gitbook-drawing">

Columns with conditions will be set correspondingly to the creation wizard:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FNn5GrNU7PWCyJWY3Wc9I%2Ffile.excalidraw.svg?alt=media&amp;token=05397ebd-93e5-4ffa-ad8a-e741a21e1818" alt="" class="gitbook-drawing">

Card will have elements added correspondingly to the creation wizard.

First (topmost) of them will be used as card header and has no label by default. Other fields will be added (with or without labels) corresponding to field name:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FUpLKjG0w6Y8fFJLeZ8OM%2Ffile.excalidraw.svg?alt=media&amp;token=2af3db10-2878-45bc-ac59-3a764b23e233" alt="" class="gitbook-drawing">

&#x20;

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FT0P7xFE19U3CFV2siEKQ%2Ffile.excalidraw.svg?alt=media&amp;token=b0ab9c97-f722-440b-86dc-adc7a50a4561" alt="" class="gitbook-drawing">

Card also will have main layout set with **body**, header **title**, and **footer button** with standard "View record" handler:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FbyFV6QhbB4Xr7VjAktVE%2Ffile.excalidraw.svg?alt=media&amp;token=97d4746a-05ff-4e16-9457-02198c4a14cb" alt="" class="gitbook-drawing">

&#x20;

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FcUsdvfU7ZFrE6evyWNid%2Ffile.excalidraw.svg?alt=media&amp;token=d874f714-1480-4bfd-b6df-e4827cbaf691" alt="" class="gitbook-drawing">

&#x20;

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVSRRYqjNfZUmyUUCnJ01%2Ffile.excalidraw.svg?alt=media&amp;token=1e3db89e-4aca-4196-bffd-c564ac270340" alt="" class="gitbook-drawing">

&#x20;

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F1FZbo663Er0T8yBvP0vQ%2Ffile.excalidraw.svg?alt=media&amp;token=e5437c3a-cb2b-4044-8cfe-70071648b81c" alt="" class="gitbook-drawing">

{% hint style="warning" %}
Note: [card dragging](/standard-kanban/configure-card/configuring-card-movement-and-column-junctions) will not be automatically set, if you turn off "Allow users to move cards between columns" toggler.
{% endhint %}


# How to Incorporate a Child Kanban into a Lightning Page

* Go to proper Lightning Page (e.g., some object Record page) and open Builder (in order to create or edit page layout):
  1. Open any Account record in Salesforce.
  2. Click the Setup icon (![](https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FusH0Iipf0pkyDT2AI0dZ%2Fimage.png?alt=media\&token=d7fc1246-f7e0-436b-add1-501a80c5d931)) and select "Edit Page" to open the Lightning App Builder.
* Find "FlexiKanban" component in the Components list at the left sidebar and drag it to desired available placeholder:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FKMzvI6pIlLllxcM1wG79%2Ffile.excalidraw.svg?alt=media&amp;token=c0c6cbe4-9101-4cb8-b435-96fa8502ec87" alt="" class="gitbook-drawing">

* After dragging select the added component (it may become selected automatically)
* Select necessary **Kanban** in the respective field
* Enter variables in **JSON** format, if necessary
* Set **CSS Styles**, if needed
* Set **filters** to manage component visibility, if needed
* Click "**Save**" button


# How to Open a Kanban in Builder (Edit)

There are two ways to edit created kanban:

* At the kanbans list page: click button <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FNOzwz6p7AtlDstJcqV23%2Fimage.png?alt=media&amp;token=a262a050-d3a6-48eb-b4ba-3a601bda45cf" alt="" data-size="line"> to open submenu, and select "Edit" option:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FYJSWAA4P5WonELD1acza%2Ffile.excalidraw.svg?alt=media&amp;token=33f482fa-a223-4623-b01b-353e3b3e6b76" alt="" class="gitbook-drawing">

* At the top of the opened kanban: click button <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FcqMugyjLGxITvKqCEOo6%2Fimage.png?alt=media&amp;token=78a0e4fe-2701-4ff4-9888-c899c2e08d3a" alt="" data-size="line"> to open submenu, and select "Edit" option:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FRRrJEWf7mJmtrfBI4JAK%2Ffile.excalidraw.svg?alt=media&amp;token=d62e3d05-ae84-4b57-be24-8cb5794f66da" alt="" class="gitbook-drawing">


# How to Share a Kanban

Open Kanban builder of the required kanban:

* Open "Actions" menu at the top of builder.
* Click on "Open Sharing Rules" item.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FGhDQsVAAmyovgiWXnB2o%2Ffile.excalidraw.svg?alt=media&amp;token=dfb6c7ad-222f-435f-a21b-7615f2094757" alt="" class="gitbook-drawing">

* New page "Sharing Detail" for current kanban will be opened.
* Click "Add" button.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F3Qulr2Y9tfZgebwIMZh3%2Ffile.excalidraw.svg?alt=media&amp;token=90b73a94-c8d8-4d65-886b-9a66033db5d7" alt="" class="gitbook-drawing">

* "New Sharing" page will be opened where user (administrator) can specify **new sharing** and **access level:**

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FL6TQfGUhhKlep2W0b0it%2Ffile.excalidraw.svg?alt=media&amp;token=ba9922b8-3854-4909-a3f2-e3d8b2132942" alt="" class="gitbook-drawing">

{% hint style="success" %}
Administrator can add different types of users, groups, roles, etc. at the same time to "Share With" list.
{% endhint %}

* Save new sharing rules then save current kanban.


# How to Clone a Kanban

Go to Kanban editor, open "Actions" menu and click "Clone" item.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F9yOaj5O9wQVf08ncYq8E%2Ffile.excalidraw.svg?alt=media&amp;token=1cbdd108-665a-4496-a68e-c2b9fc47fc8b" alt="" class="gitbook-drawing">

Dialog popup will be opened. You can change the name of the cloned kanban. Click "Clone" button.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FAh6xbdhX9V8VETQKY4jl%2Ffile.excalidraw.svg?alt=media&amp;token=ed78f705-88d3-45f2-8349-1da30efb0bd4" alt="" class="gitbook-drawing">

New dialog popup will be opened:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FlEc8ye2C4VwGt2Rg8j1E%2Fimage.png?alt=media&amp;token=544ac011-27f6-466a-9432-9ade3b365fc5" alt=""><figcaption></figcaption></figure>

* Click on "Cancel" button and continue to work with current kanban.
* Click on "Open Cloned KanBan" button and start to work with cloned kanban:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FllBne64SUftXdcOpfBwK%2Ffile.excalidraw.svg?alt=media&amp;token=e195f82c-abe0-4b96-b90d-4623396a3414" alt="" class="gitbook-drawing">


# Configure Kanban

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><mark style="color:blue;">Working with Kanban layout</mark></td><td><a href="/standard-kanban/configure-kanban/working-with-kanban-layout">Working with Kanban Layout</a></td></tr><tr><td align="center"><mark style="color:blue;">How to configure Kanban basic properties</mark></td><td><a href="/standard-kanban/configure-kanban/how-to-configure-kanban-basic-properties">How to Configure Kanban Basic Properties</a></td></tr><tr><td align="center"><mark style="color:blue;">How to configure Kanban custom filters</mark></td><td><a href="/standard-kanban/configure-kanban/how-to-configure-kanban-custom-filters">How to Configure Kanban Custom Filters</a></td></tr><tr><td align="center"><mark style="color:blue;">How to configure Kanban quick filters</mark></td><td><a href="/standard-kanban/configure-kanban/how-to-configure-kanban-quick-filters">How to Configure Kanban Quick Filters</a></td></tr><tr><td align="center"><mark style="color:blue;">How to add Kanban statistics</mark></td><td><a href="/standard-kanban/configure-kanban/how-to-add-kanban-statistics">How to Add Kanban Statistics</a></td></tr><tr><td align="center"><mark style="color:blue;">How to configure variables</mark></td><td><a href="/standard-kanban/configure-kanban/how-to-configure-variables">How to Configure Variables</a></td></tr><tr><td align="center"><mark style="color:blue;">How to add Kanban buttons and menus</mark></td><td><a href="/standard-kanban/configure-kanban/how-to-add-kanban-buttons-and-menus">How to add Kanban Buttons and Menus</a></td></tr></tbody></table>


# Working with Kanban Layout

Open Kanban editor, drag "Column" element to "KanBan Columns" area and drag "Card" element to "KanBan Cards" area.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FOglXpc4h3I2eRTkyzz4v%2Ffile.excalidraw.svg?alt=media&amp;token=162c2a30-2cbf-4b3b-b536-11a39dcd350c" alt="" class="gitbook-drawing">

Click on Card to open "Card properties" in the right sidebar. There are several obligatory properties for card: Name (1), Data source type (2), Compact Layout (3). See these articles to know how to configure cards.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FZXS5glQTPOyr8Ws6FZyl%2Ffile.excalidraw.svg?alt=media&amp;token=4255bf31-72f9-4e98-8cee-b26dc05ff9af" alt="" class="gitbook-drawing">

Click on Column to open "Column properties" and complete obligatory ones: Name (4), Data Source Type (5), Config (6). Location of column can be changed by clicking arrows (7) on the top column.

See these articles to know how to configure other column properties.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FMvFZDy6RpwLgvoze0xlE%2Ffile.excalidraw.svg?alt=media&amp;token=fa09835d-ddbc-4420-8f1a-9efdecb6ada6" alt="" class="gitbook-drawing">

Configure necessary [Column Junctions](/standard-kanban/configure-card/configuring-card-movement-and-column-junctions) (8) and [Actions](/standard-kanban/configure-card/configuring-card-actions) (9).

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FvYkP7AaH1K1tFtnaqxNQ%2Ffile.excalidraw.svg?alt=media&amp;token=3a57baf7-5288-4bd4-b8d1-f1d6c7b155aa" alt="" class="gitbook-drawing">

#### On a kanban, cards and columns can be cloned or deleted in different ways:

1. Select proper card (column) and click button <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F6w1BGbk2bDJB6HjLDOyw%2Fimage.png?alt=media&amp;token=66031aad-665d-4f27-8448-e1e9f47ad4c0" alt="" data-size="line"> at the top of kanban builder.
2. Click on icon <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F2QSmAaMFrEVtLZF3DMoF%2Fimage.png?alt=media&amp;token=5937d00d-4777-4ed1-b426-4da99a8d31cd" alt="" data-size="line"> at right corner of column header.
3. Click the right mouse button to open the context menu of the selected column or card. Select proper option:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FJ5Uikk5Okb7RFV29G6MX%2Ffile.excalidraw.svg?alt=media&amp;token=70f2515d-0716-4937-8828-5b74f4f96e59" alt="" class="gitbook-drawing">


# How to Configure Kanban Basic Properties

Go to "**KanBan Properties**" by clicking anywhere out of column header, group header or cards.

Click "**Edit**" link next to "**Config**" label at the right sidebar.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F4nQFspBooNPXQauYiNf5%2Ffile.excalidraw.svg?alt=media&amp;token=2cbf0ec5-e819-49e8-bfd7-3c689d51bcbe" alt="" class="gitbook-drawing">

Kanban config dialog popup will open. Go to "Basic Configuration" tab here.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F1Z4hGjdFONSzZuxR60ie%2Ffile.excalidraw.svg?alt=media&amp;token=f7b5bc58-4a1f-4872-bf28-29ec78b2b135" alt="" class="gitbook-drawing">

* Populate "**Title**" field (1, optional) and "**Icon"** (2, optional). After saving, icon and title will be shown in top left corner of kanban (see image below).
* Configure **Kanban**, **Header** and **Title CSS styles** (5).
* Specify **"Inline CSS Styles"** (6) - there you can add any custom CSS if necessary. Moreover, merge fields and formulas are supported there!
* Check **"Track History"** (3) if you want to see history of changes on the kanban view (in [debug console](/standard-kanban/using-kanban/how-to-debug-a-kanban)).
* Turn on "**Synchronous Scrolling"** (4) if you want to have columns be scrolled together. Useful, e.g., if you try to make something table-like.
* Turn on "**Show** **Search Input"** (7). If shown, it allows user to search a part of text through all displayed kanban elements.

{% hint style="success" %}

* "**Icons Library**" link can help you find an appropriate icon.
* Icon name should be typed with icon category and a colon (e.g. <mark style="color:green;">action:edit</mark>).
* If you don't populate title, kanban name will be shown instead.
  {% endhint %}

Apply (8) changes in the Kanban config. Popup will be closed.

Then save whole Kanban to get all changes applied:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FjSWOP8Es0Eui3sKQ2gBf%2Ffile.excalidraw.svg?alt=media&amp;token=83e68318-563f-404f-99d5-bed4f19a785b" alt="" class="gitbook-drawing">

Close kanban builder to see applied title and icon:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FFcjZM6mhjQ5d0Q3DDQU6%2Ffile.excalidraw.svg?alt=media&amp;token=26fd5dff-246a-4c7d-a9c6-9d035db813dc" alt="" class="gitbook-drawing">


# How to Configure Kanban Custom Filters

Custom filters are suitable for situations when data source object contains a lot of fields and they obstruct users to work with necessary ones. Kanban admin can add some custom filters which will contain only fields that are necessary for users. This is only one difference from main filters.

Open **Kanban** **Config** and go to "**Filters Panel Configuration**" tab. Here you can see some useful options:

* "**Hide Filters Panel**" will allow you to prevent "Filters" button and panel (see picture at the end of this article) from being shown on kanban at all. Useful sometimes if you do not want to allow users do something with filters.
* "**Hide Templates Men**u" will allow you to hide "Filter Templates" button and proper feature if you do not want users to work with it.
*

```
<figure><img src="/files/bGN2vuKHOHf8XQGJhiRt" alt=""><figcaption></figcaption></figure>
```

Expand "Custom Filters Configurations (Optional)" section. Click "+ Add filter" button to display a filter form. Set the filter properties:

* **Label** - required, will be shown to user in Custom Filters.
* **Source Object** - Contains list of Data Source objects used in the current kanban. If there is only one Source Object, it will be pre-selected.
* **Custom Filter Fields** - will be displayed after Source Object is selected. By default it contains no fields.

Click Search button ("Lens" icon) to select and add field(s):

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FHcakGDFCTYeZDlFeBAVf%2Ff3.jpg?alt=media&amp;token=e50fc0b5-a0ce-4b34-8094-011fa8c097b5" alt=""><figcaption></figcaption></figure>

Leave "Apply to all columns" checkbox checked to let filter be applicable to all columns that have the same Source Object. Uncheck it to select which columns will be filtered by this filter (other will be shown without filtration):

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FZAuRuBg5fnE1hKyV7JRu%2Ff4.jpg?alt=media&amp;token=0d277c8e-867e-4d7e-a6f5-66fdd5321880" alt=""><figcaption></figcaption></figure>

* Click "**Apply**" button in the "Add filter" form to keep selection. Filter will be displayed as a small card:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FtVjm2dpLZkwQSbzZcRSC%2Ff5.jpg?alt=media&amp;token=a178d476-7db7-4449-936b-32c928211d70" alt=""><figcaption></figcaption></figure>

* This card will show a filter label, selected fields and columns. This filter can be edited (a pencil icon) or deleted (recycle bin icon).
* Click "Apply" button in the configuration popup bottom to save filters and other changes in kanban config. Do not forget also click "Save" button for the whole kanban builder.

Custom filters will be selectable in the ["Filters" panel](/standard-kanban/using-kanban/how-to-work-with-filters-and-orders) when adding conditions:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FFhkJ8a6iwoN6IDC2y8NX%2Ff6.jpg?alt=media&amp;token=cf086c76-1a77-4195-a2c1-7db2f5f6b55b" alt=""><figcaption></figcaption></figure>

And only fields that were configured will be available to select:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FxUiISNYYlZKUTxF3e9cN%2Ff7.jpg?alt=media&amp;token=726f914d-9e3d-472d-888f-fae3222684c7" alt=""><figcaption></figcaption></figure>


# How to Configure Kanban Quick Filters

Quick Filters are pre-set filters that are displayed to user directly in the kanban and are available without interacting with Filters sidebar.

Quick Filters have the following features:

* they always work together with each other, joined by logical "AND". This means when user applies two or more Quick Filters, all of them will be applied and cards matching all of them will be shown.
* they work together with main and custom Filters (which are shown in the Filters Panel), joined with them by logical "AND".
* they have no "is null / is not null" operators available to configure. They have "include empty" checkbox instead. This checkbox allows to filter by empty values at the same time as by set ones, and empty values will be searched together with specified joined by logical "OR".

{% hint style="info" %}
E.g., filtering by "Amount < 1000" with "include empty" checked will find cards for records where field "Amount" is less than 1000 or is blank at all

Note: Quick Filters for checkboxes (boolean type fields) have no "include empty" checkbox.
{% endhint %}

Open **Kanban** **Config** and go to "**Quick Filters Configuration**" tab. Here you can see some options:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FlDY6ckkVFBzYpAfhDPej%2Ffilter1.png?alt=media&amp;token=d48bebf7-b593-4e78-bf88-cf86cdc3eabf" alt=""><figcaption></figcaption></figure>

**Position**\
There are two control layout options available:\
\&#xNAN;*Heade*r: Filters are displayed in the top panel of the kanban (in the same panel where the control buttons and search bar are displayed).\
\&#xNAN;*Highlights panel*: The panel is located below the header, directly above the working columns. This option is selected by default.

**Use Apply Button** checkbox\
The system supports two filter activation types:\
\&#xNAN;*Instant*: data is updated automatically whenever filter values are changed.\
\&#xNAN;*Manual*: filtering is activated only after user confirms it by clicking "Apply" button. This mode is recommended when there is a lot of cards shown to reduce the system load and avoid unnecessary reloads.

**Quick Filters Fields.**\
Select field which kanban should be filtered by when use quick filters:

* Click Add Filter button and fill in the appropriate fields in the proposed form:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fn8rjwPhlQKb1QgsBf0bx%2Ff2.png?alt=media&amp;token=b2df1f7f-5acc-4904-a577-2cfa1ddd7700" alt=""><figcaption></figcaption></figure>

* Select a source object which the filter applies to. If the Kanban columns are based on the one object, it will be pre-selected.
* Select **Source Field** which filtering will be performed by.
* **Custom Label** - specify the text to be displayed in the filter interface.
* Select proper **operator.**
* Checkbox "**Apply to all columns**" is checked by default . If you need to customize individual columns (exclude some from the filter), uncheck it before saving and select necessary columns:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fj6J5Orgl31BHJX4i8hL6%2Ffilter3.png?alt=media&amp;token=8f4f29c4-1679-4bfe-bea6-fdc8d89108dd" alt=""><figcaption></figcaption></figure>

Click "**Apply**" to add the filter to the list of active filters. Finally click "**Apply**" button of the whole popup to save all changes in kanban configuration:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FHHXwh373PqE7R1uoz1Z3%2Ffilter4.png?alt=media&amp;token=c81d7b3d-08fa-4800-8337-6cd1c00838c7" alt=""><figcaption></figcaption></figure>

Quick Filters on the kanban:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FHUmvXfsE2XpYQ1CFEy7j%2Ffilter6.png?alt=media&amp;token=cbcf6493-851d-4749-a57a-d7c37893fe6f" alt=""><figcaption></figcaption></figure>


# How to Add Kanban Statistics

Kanban statistics is the content shown in the middle of the Kanban top bar:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FCB2Hw4mB4g3u8B2PNn6e%2Ffile.excalidraw.svg?alt=media&amp;token=ede201ef-fb5b-4bb3-842a-a2aeda89e00d" alt="" class="gitbook-drawing">

It consists of elements (called "cells") that can have "icon", "text", "link" or "menu" type. By default statistics cells look like simple parts of text or icons.

* To configure the statistics go to Kanban Properties and click "Edit" link next to "Statistics" label.
* To add a cell click on "+" button. To know how to work with cells, see [Configuring cells](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons#cells) article.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fx35ZGhSd8STJai0ko1fI%2Ffile.excalidraw.svg?alt=media&amp;token=a0b1a886-1609-4cd2-b473-b681e2cbeb7c" alt="" class="gitbook-drawing">

Populate necessary properties of the cells and click "Apply" button to save changes. Then save the whole kanban:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FCMof2G8C710G5ofr2FKR%2Ffile.excalidraw.svg?alt=media&amp;token=6d006a24-cd4a-4825-8de1-8463888e67d7" alt="" class="gitbook-drawing">


# How to Configure Variables

Variables are the user defined fields that:

* can have any desirable name
* can have value of String type
* can be inserted anywhere as Merge field
* can be updated by Actions
* are initialized with initial values when Kanban page is loaded or reloaded
* are stored in memory and do not changed when Kanban is refreshed by Kanban API or "Refresh Kanban" button (and this is a perfect tool to dynamically change a lot of Kanban properties)

Variables are configured in the proper section of Kanban Properties sidebar. Click "edit" link to show a proper popup. Click "<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FXQJ5tKD8yjOOpSPGESZK%2Fimage.png?alt=media&amp;token=c5d63dbd-294a-43f2-be78-0574057bcb48" alt="" data-size="line">" button to add variables:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FOcKcI9uY9s15kOWvv5yu%2Ffile.excalidraw.svg?alt=media&amp;token=9657e824-a027-461d-972b-e11bd922e773" alt="" class="gitbook-drawing">

Enter variable Name and Value. Value can be any text, Merge Field or Formula.&#x20;

{% hint style="warning" %}

Notes:

* Variable Name can not contain special symbols.
* Variable Name in some cases will be transformed to lowercase by system. No problem, variable names are not case sensitive.
  {% endhint %}

Save variables. After being variables will be listed in "Variables" section:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FOWU9oilF8CcTWW7QfJJ2%2Ffile.excalidraw.svg?alt=media&amp;token=445e22f1-20b0-4539-8d6c-f2a96b3e69df" alt="" class="gitbook-drawing">

Save dashboard to store changes. After dashboard has been saved variables will be available in Formula Builder to select:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FF0VJvPsu8j6en6LGZB7O%2Ffile.excalidraw.svg?alt=media&amp;token=2e43d37f-b613-414c-a297-dca8c528a52d" alt="" class="gitbook-drawing">

To see what values are stored in the variables, and manipulate with them, user can open a [Debug Console](/standard-kanban/using-kanban/how-to-debug-a-kanban) on Kanban. To know how to work with variables [see proper article](/standard-kanban/using-kanban/how-to-work-with-variables).


# How to Configure Events

Events provide additional abilities for Kanban. Events are configured in the proper section of [Kanban Properties](/standard-kanban/configure-kanban/how-to-configure-kanban-basic-properties) sidebar. Click "edit" link to show a proper popup:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F0CwxsPt0l5SIK4cbocXU%2Ffile.excalidraw.svg?alt=media&amp;token=94fda9da-c2fb-4bba-ac79-5830ec8760b9" alt="" class="gitbook-drawing">

Click icon <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fv87N2tTZsKYKLB2UHJbK%2Fimage.png?alt=media&amp;token=01a22e71-ff86-4e6d-a732-4cdc884f785a" alt="" data-size="line"> to add event, select type of event and configure proper [handler](/standard-kanban/tools/configuring-handlers):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FklUkjvpPD9vAyLJfvy3U%2Ffile.excalidraw.svg?alt=media&amp;token=38a31bdf-c166-47cb-af1e-b74d88b7fb57" alt="" class="gitbook-drawing">

### Event types:

* **Before Load** - occurs before Kanban has been loaded
* **After Load** - occurs after Kanban has been loaded
* **View Changed** - occurs when user selects new [view](/standard-kanban/using-kanban/how-to-work-with-filters-and-orders#manage-filters-and-orders)


# How to add Kanban Buttons and Menus

Custom buttons (and drop-down menus) can be shown at the top of your Kanban board. They add interactivity. To configure them, open Kanban Properties sidebar and click "Edit" in the "Buttons" section:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FhebSDogP4YBCJhuX1gQa%2Ffile.excalidraw.svg?alt=media&amp;token=1d19c3ed-c0ce-43e4-a304-9c43ae308b56" alt="" class="gitbook-drawing">

To add a button click on "Add Button". See [proper article ](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons)about buttons configuration.

To add a menu click on "Add Menu". Menu is a way to aggregate buttons into dropdown blocks of submenu items. See how to configure menu in the same article.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FI9HspmsaAS2mp8fp7xFI%2Ffile.excalidraw.svg?alt=media&amp;token=faef5de9-15c5-4d59-a9e3-df8fdf33fc0f" alt="" class="gitbook-drawing">

After being added, buttons and menus will be listed in "Buttons" section:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FMmhHTurqh9eao9DvlfpZ%2Ffile.excalidraw.svg?alt=media&amp;token=50311a54-6d12-4d15-bdfd-fc7abb032007" alt="" class="gitbook-drawing">


# Configure Column

<table data-view="cards"><thead><tr><th></th><th align="center"></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td></td><td align="center"><a href="/standard-kanban/configure-column/how-to-sonfigure-column-properties">How to configure Column Properties</a></td><td></td><td><a href="/standard-kanban/configure-column/how-to-sonfigure-column-properties">How to Сonfigure Column Properties</a></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/configure-column/how-to-set-column-groups">How to set Column Groups</a></td><td></td><td></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/configure-column/how-to-set-and-use-column-custom-attributes">How to set and use Column Custom Attributes</a></td><td></td><td></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/configure-column/how-to-configure-column-data-source">How to configure Column Data Source</a></td><td></td><td></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/configure-column/how-to-work-with-related-objects">How to work with Related Objects</a></td><td></td><td></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/configure-column/how-to-configure-column-header">How to configure Column Header</a></td><td></td><td></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/configure-column/how-to-configure-column-body">How to configure Column Body</a></td><td></td><td></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/configure-column/how-to-configure-column-footer">How to configure Column Footer</a></td><td></td><td></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/configure-column/how-to-configure-column-container-and-filters">How to configure Column Container and Filters</a></td><td></td><td></td></tr></tbody></table>


# How to Сonfigure Column Properties

Click on column header to open column properties in right sidebar.

Enter column name into proper field:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FriEdy8rIVaH9eMFwkbS3%2Ffile.excalidraw.svg?alt=media&amp;token=06b76fd3-b4d3-4e0d-b691-4826e50571c4" alt="" class="gitbook-drawing">

{% hint style="success" %}
Name can contain:

* static text
* merge fields
* formulas
  {% endhint %}

On the next step you can [add this column to group](/standard-kanban/configure-column/how-to-set-column-groups).

Set width of column, if necessary.

When checkbox "is Active" is unchecked a column is invisible in dashboard. This option is useful if you want temporary hide a column or you need a [helping column for some purposes](/standard-kanban/howtos-and-best-practices/what-inactive-column-can-be-used-for).&#x20;

You can add any description to a column.

{% hint style="success" %}
Description can be used in dashboard via merge fields.
{% endhint %}


# How to Set Column Groups

Columns in Kanban Dashboard can be put into groups.

{% hint style="info" %}
This is not required. Groups are commonly used for visual and informational purposes.
{% endhint %}

To manage groups on your dashboard you need to select one of columns (click on column header). Group form will be shown in sidebar.

Select a group which current column will belong to or click "new" link to create a new group:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FUMUSaZZupKbtyZ6mS5wS%2Ffile.excalidraw.svg?alt=media&amp;token=ceada951-6086-4e00-90b9-31e4a9387c98" alt="" class="gitbook-drawing">

### Adding new group

After clicking "new" link a "Create new group" dialog popup will appear. You required to give group a name and you may change group columns set and order:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FgSJI4imoiBFu7W3mXmJu%2Ffile.excalidraw.svg?alt=media&amp;token=6253f35d-a547-4c2c-9693-28a14d78f6ba" alt="" class="gitbook-drawing">

Click "Create" button to apply changes. New group will be created and selected:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F4AFVgqfJdTvFUMchIGbo%2Ffile.excalidraw.svg?alt=media&amp;token=b9936b73-669a-425b-b117-8d191a610144" alt="" class="gitbook-drawing">

{% hint style="warning" %}
Note: if you select non-neighbor columns to be in the group, but they will be placed together.
{% endhint %}

### Adding or moving column to existing group

There are two ways to do this:

1. Select a column (belonging to any group or not). Then select a group in the "Group" picklist in the sidebar:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FmECTJg94Hu6MFjqPAgHu%2Ffile.excalidraw.svg?alt=media&amp;token=485024a6-701e-45ea-8d45-3bea08aafb67" alt="" class="gitbook-drawing">

The column will be added to selected group and moved to the last position in it:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FynT8zZbHqXkHNLOGnJN0%2Ffile.excalidraw.svg?alt=media&amp;token=c281a377-0c2b-45de-b329-395ad3cd21b8" alt="" class="gitbook-drawing">

2. Click a proper group header to see Group Properties sidebar. Move columns in the column picker to "Columns in Group" section:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F3Cw7pnXSALPwiGi4st8D%2Ffile.excalidraw.svg?alt=media&amp;token=d521495e-cd96-4ecf-896b-2f9543a8ee0a" alt="" class="gitbook-drawing">

### Removing column from the group

There are three ways to do this:

1. Select a column. Select "--None--" in the "Group" picklist:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FpzMCDfeK3ZUmxAxEykQD%2Ffile.excalidraw.svg?alt=media&amp;token=91e013c2-4058-4711-b953-d3a410f139d9" alt="" class="gitbook-drawing">

Column will be moved out of group to the first position after it:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVd3G3jqHoA83adEABpxc%2Ffile.excalidraw.svg?alt=media&amp;token=596c3825-b6c4-4729-b335-c13483f17212" alt="" class="gitbook-drawing">

2. Click a proper group header to see Group Properties sidebar.  Remove columns in the column picker from "Columns in Group" section:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F93IGffVItT11qMEnghni%2Ffile.excalidraw.svg?alt=media&amp;token=9cd743eb-8fb4-4fe1-81f3-c79802799c1e" alt="" class="gitbook-drawing">

3. Delete a group without deleting columns (see below).

### Deleting groups

To delete a group select it by clicking a group header and click "Delete" button on the toolbar:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FnIWAtXLUmxioaqzJWJVk%2Ffile.excalidraw.svg?alt=media&amp;token=6483c20b-c2dd-430c-b699-ef80bdf9ba95" alt="" class="gitbook-drawing">

Or click "Delete Group" button at the group header:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fy61kl55GwKfQQigKZMXQ%2Ffile.excalidraw.svg?alt=media&amp;token=cbac569b-76d7-4003-886b-d10d59f9c4e6" alt="" class="gitbook-drawing">

A dialog popup will appear. Select an appropriate option and click "OK" button:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FkGac2fYJppuyrozWUnfD%2Ffile.excalidraw.svg?alt=media&amp;token=b8f4df19-e4d1-4c5a-8f15-597e19181ebb" alt="" class="gitbook-drawing">

If you select "Delete group and all it's nested columns", a whole group and columns that belong to it will be deleted.

If you delete only group, it's columns will remain on the same positions on dashboard.

### Configuring groups

Select a group and click "edit" link near the "Config" label:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FBphQ2hiiqh1oJoc5WifC%2Ffile.excalidraw.svg?alt=media&amp;token=0690d424-811a-4de2-a29b-c676ddbc172f" alt="" class="gitbook-drawing">

An "Edit Group Config" dialog popup will be shown. Select "Header Group Configuration" tab:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FIocFE3B12wLkuiiz5pxg%2Ffile.excalidraw.svg?alt=media&amp;token=b04bed1d-347b-4d91-9ee1-a0d60254bd55" alt="" class="gitbook-drawing">

* Set CSS styles of group header and container.
* Check "Collapsible?" to give a group proper ability.
* "Collapsed" checkbox will be shown only if "Collapsible?" is checked and allows to set default column state (collapsed or not)

Add Cells:

* Select Type  (text/link/icon/menu).
* Set ID, Value, CSS styles.
* Configure Handler, if necessary.
* Click "Apply" to save changes in group configuration and save dashboard.

Select "Filters Configuration" tab:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FiL82pt661Ng6VLWUkBGM%2Ffile.excalidraw.svg?alt=media&amp;token=0193a927-dd2d-4fab-a068-8d2561497459" alt="" class="gitbook-drawing">

* Select filtering:
  * Allowed - column can be filtered by both default (system) data sources and custom filters
  * Allowed only Default Sources - column can be filtered only by default (system) data sources
  * Allowed only Custom Sources - column can be filtered only by custom filters
* Click "Apply" button to save changes in group configuration and save dashboard.


# How to Set and Use Column Custom Attributes

Custom attributes can be used as additional custom fields of column. You can use them in merge fields in any place where column is available as context object ($Column, $SourceColumn, $TargetColumn).

Go to "Custom Attributes" section of column properties at the right sidebar. Click "add" link, fill in fields "Name" and "Value":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FYxLvtjCdLswVrwvNP3xw%2Ffile.excalidraw.svg?alt=media&amp;token=c56711de-718d-47a0-ba7d-fbab82194145" alt="" class="gitbook-drawing">

You can add any number of custom attributes with unique names:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fshb6ts4G04vBbo6rfSoO%2Ffile.excalidraw.svg?alt=media&amp;token=0a17206b-5f1c-4ac2-a8e2-1318cd8b5aa0" alt="" class="gitbook-drawing">

{% hint style="danger" %}

* Merge fields are not allowed to be used in custom attributes - they will not be calculated and may cause errors.
* Custom Attribute name must not contain spaces, non-latin letters and special symbols
* Custom Attributes names must be unique at the same column
  {% endhint %}

Save current dashboard. After saving custom attributes will be available for current column context object:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F8bMXPkX8IehD1yqX54Uk%2Ffile.excalidraw.svg?alt=media&amp;token=4dd75ed5-67d4-463e-bce8-528fa92fb03e" alt="" class="gitbook-drawing">

Custom attributes should have "a\_\_" prefix to be used in merge fields:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FZzTxwLD6bsTWvtfYOOKR%2Ffile.excalidraw.svg?alt=media&amp;token=34c79027-33e4-4f78-8a84-ee2bd470ef6d" alt="" class="gitbook-drawing">

{% hint style="info" %}
By default, when you create a kanban in the wizard and turn on "Allow users to move cards between columns", an application adds a Custom Attribute with "setValueTo" name.

This attribute is used in the Action that is triggered by card movement

Values of this Attribute correspond to field values selected to add columns.
{% endhint %}


# How to configure Column Data Source

Select a column (click on its header). Go to "Data" section of column properties at the right sidebar and click on link "edit".

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F8ua1V0DYqyIFJMxa7kcE%2Ffile.excalidraw.svg?alt=media&amp;token=64a9241b-16be-40a2-baef-6d54c25f25bf" alt="" class="gitbook-drawing">

Column Data Source config dialog popup will open. Select "Data Source Type":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F6DuevvinGhyqZ0zyf75l%2Ffile.excalidraw.svg?alt=media&amp;token=2767d636-e86e-4995-a6b9-e76723febf29" alt="" class="gitbook-drawing">

### SObject Data Source

"SObject" Data Source is preselected:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F8Rhz5j9ewkq2HPt27W2K%2Ffile.excalidraw.svg?alt=media&amp;token=59670aab-8d0a-4417-853f-94a989ea60dd" alt="" class="gitbook-drawing">

Select Data Source. When you select data source additional fields will be displayed:

* **"Order"** picklist contains fields of chosen data source object. This option helps you to sort cards in column.
* Check **"Ignore Permissions"** checkbox to show all cards in column (in spite of user's account permissions).
* **"Page Size"** is number of cards shown in a column by default and additionally loaded per each scroll (one page).
* **"Preload Pages"** is number of pages that are loaded by system automatically one by one. Loading progress will be indicated with a spinner around the badge showing number of cards:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FMiKCdeSpun7CKVIHsGRv%2Ffile.excalidraw.svg?alt=media&amp;token=16558ced-2a34-4a28-a037-703ef819c7fe" alt="" class="gitbook-drawing">

{% hint style="success" %}
reload several pages with small number of cards per each can save server resources (Salesforce limits) and can be useful when internet connection is slow.
{% endhint %}

When you select data source additional tabs will be displayed:

* Conditions&#x20;
* Related Objects
* Push Topics

### Conditions

To configure condition for current column click "Add Condition". Row with new condition form will be shown. Click <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FRmGufsmtovDsn10do4jt%2Fimage.png?alt=media&amp;token=8ba72f99-f124-40ee-95ab-415dfbeba45a" alt="" data-size="line"> button:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FWwr8UAR5IX3vsjSKVrYP%2Ffile.excalidraw.svg?alt=media&amp;token=3f54c08f-e7c6-4a22-b52a-c6fcc713f0cc" alt="" class="gitbook-drawing">

Click <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FMx8GEAKyKvzOTvsdlYBR%2Fimage.png?alt=media&amp;token=96ba8c9f-8930-485c-a6bf-5c692f70e42c" alt="" data-size="line"> icon to open "Select Field" dialog popup. Choose field and click "Apply":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FdYmYhDX6ZrYuaPFFiIOz%2Ffile.excalidraw.svg?alt=media&amp;token=c6688602-e70a-4069-9b6b-eaf9f30057b3" alt="" class="gitbook-drawing">

After it you can select "Operator", "Type" and "Value" for condition. To copy, paste and apply conditions JSON click the proper button (for one condition, for all conditions).

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F1YCFUPZUQjVKVdPil2K5%2Ffile.excalidraw.svg?alt=media&amp;token=e745f0ca-e11e-4e02-ba16-12504ff98168" alt="" class="gitbook-drawing">

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FbZcLQcty2drtpCPvEhDD%2Ffile.excalidraw.svg?alt=media&amp;token=d7967df4-b920-4fde-9654-a406181992a5" alt="" class="gitbook-drawing">

Configure "Logic" if needed:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FfmmIPEpePMCMP4QpO6Hm%2Ffile.excalidraw.svg?alt=media&amp;token=536d0e62-1165-404d-b7ae-e506d1160c7a" alt="" class="gitbook-drawing">

{% hint style="success" %}
Logic "All conditions combined with AND operators" will be applied by default if not configured.
{% endhint %}

### Related Objects

Configure [Related Objects](/standard-kanban/configure-column/how-to-work-with-related-objects) if necessary:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FDjE5heQuZuat3gGSGhcE%2Ffile.excalidraw.svg?alt=media&amp;token=202e13dc-1cbd-4f00-943b-d5a190228d38" alt="" class="gitbook-drawing">

### Apex Class Data Source

In some cases Apex Class should be required - e.g., when records from several objects need to be shown.

* Select "Apex Class" as Data source type
* Find necessary Apex Class in the proper lookup. Note, that your organization should have necessary Apex Classes deployed
* Set parameters for this class in JSON format

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F3536lD2KtNvdm5bC3Q43%2Ffile.excalidraw.svg?alt=media&amp;token=894f248c-2de0-476b-9996-ff64ada35a6b" alt="" class="gitbook-drawing">

### Push Topics

{% hint style="info" %}
Push Topics allow system generate special push notifications when some fields in some object records are created and/or updated.

Push Topics are created globally, so, they can be subscribed by any other columns in any dashboard.

Push technology, also called the publish/subscribe model, transfers information that is initiated from a server to the client. It will help you to follow the changes in this column.
{% endhint %}

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FPBD7pFmHVdJwH7nATL0p%2Ffile.excalidraw.svg?alt=media&amp;token=5d4181dc-a43a-4990-b859-92e54d7fd709" alt="" class="gitbook-drawing">

**To create a Push topic** click "Create Push Topic" button and set Name, Query and necessary notifications:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F5Z5GkbaHL6BTdX27QGIB%2Ffile.excalidraw.svg?alt=media&amp;token=759111d0-c591-4c38-ae49-a8c49e9093ce" alt="" class="gitbook-drawing">

* Query should be written in SOQL syntax. List fields which changes you want to subscribe to.
* Check proper checkboxes to push notifications on records creation and/or update.

**To subscribe to existing Push topic** click "Subscribe on Push Topic" button.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FFeoe94pOvanwEBSaw1cL%2Ffile.excalidraw.svg?alt=media&amp;token=1555697e-4f8c-4ea7-a0e5-f460bcc71401" alt="" class="gitbook-drawing">

* Select Push Topic in lookup.
* Select "Source ID Field" from the  Push Topic source object, that represents the column source object record ID,
* choose  period "How to handle events",
* select behavior of "Card compact layout" and "Card Layout".

{% hint style="info" %}
Behavior of **Card Layout** can be:

* Hide - if any card layout has been opened, it will be closed
* Refresh - if any card layout has been opened, it will be refreshed
* Not selected - nothing will happen.
  {% endhint %}

{% hint style="warning" %}
Currently behavior of **Card Compact Layout** can be "Refresh" only.
{% endhint %}

As soon as a Push Topic is configured, the system starts evaluating record creates, updates, deletes, and undeletes for matches. Whenever there’s a match, a new notification is generated.


# How to work with Related Objects

Related objects are objects referred to the current one via their lookup fields (or another similar way). Because of many records belong to related objects can be linked to the same record of current object, we should use only one of them. We need to specify:

* related object itself
* conditions that should restrict related object records
* sorting order

The top first record from the related object that match condition will be used as a Data Source.

### Configure Related Object as column Data Source

Go to  ["Data Source Configuration"](/standard-kanban/configure-column/how-to-configure-column-data-source#sobject-data-source). Select "Related Objects" tab:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FOiPHWCizWgvnJadB1V7E%2Ffile.excalidraw.svg?alt=media&amp;token=9f7b0819-554a-4b77-9bcf-7494871f55f1" alt="" class="gitbook-drawing">

Select related object, to configure condition for current related object click "Add Condition". Row with new condition form will be shown. Click button to choose field. Select "Operator", "Type" and "Value" for condition.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fpsbx5CQgjGZY6LgJ9Oqw%2Ffile.excalidraw.svg?alt=media&amp;token=fddef8a6-6a47-4839-858f-63acddcc60bf" alt="" class="gitbook-drawing">

To configure sorting order for current related object click "Add Order". Row with new order form will be shown. Click button to select Field for sorting. Select order type and specify nulls logic (how fields without data will be sorted - shown last or first).

### Configure card elements to use related object

Fields from related object can be set in kanban cards using merge fields.

Go to Compact Layout editor, add necessary element and use related object fields on it:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FN4UBQkgl1qURav9WznGm%2Ffile.excalidraw.svg?alt=media&amp;token=0824add8-3af4-41ae-af75-62b18a74c553" alt="" class="gitbook-drawing">

Related object fields are available in the formula builder. Proper notification will remind user configure related object on columns:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FTO0ZyNBg0WGxJuw9YYxX%2Ffile.excalidraw.svg?alt=media&amp;token=666ff2ff-a1a7-4b3b-afb4-29007af5883d" alt="" class="gitbook-drawing">


# How to configure Column Header

Select a column (click on its header).  Go to "Data" section of column properties at the right sidebar. Click on link "create" ("edit") of "Config":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FThvANAdIwqaqeCmbkEnA%2Ffile.excalidraw.svg?alt=media&amp;token=f5b07950-60d7-4987-868b-59f7bf8eee0a" alt="" class="gitbook-drawing">

Column config dialog popup will open:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F1gRGORbU99fRJmZ4v8aI%2Ffile.excalidraw.svg?alt=media&amp;token=df8d7ebc-3302-4a02-8f9c-ad1b44214323" alt="" class="gitbook-drawing">

* Check "Hide Record Counter" checkbox if you don't need see number of cards in this column
* Configure  CSS styles of the column header.
* Add cells (text/link/icon/menu) into "Cells Configuration" .
* Set ID, value, CSS styles and configure Handler if necessary. Toggle Merge Field Picker for assistance.
* Click "Save" button to apply changes in column configuration and save dashboard.


# How to configure Column Body

Select a column (click on its header).  Go to Data section of Column Properties at the right sidebar. Click on link "create" ("edit") of "Config":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FBKN5nfCP1e15N1sh20mK%2Ffile.excalidraw.svg?alt=media&amp;token=5f52ca41-9082-46d9-a3ad-062391f74171" alt="" class="gitbook-drawing">

Column config dialog popup will open. Open "Body Configuration" tab:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVcOJuXnZDRJpjIwYq2PA%2Ffile.excalidraw.svg?alt=media&amp;token=a619bd95-c28d-4f48-94a2-adc4f06f30be" alt="" class="gitbook-drawing">

* Select number of Cards in Row.
* Configure [CSS Styles](/standard-kanban/tools/configuring-css-styles) for column body.
* Click "Save" button to apply changes in column configuration and save dashboard.


# How to configure Column Footer

Select a column (click on its header).  Go to Data section of **Column Properties** at the right sidebar. Click on link "**create**" ("**edit**") of "**Config**":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FEEtNqkyxmPQyfZ5QXpIr%2Ffile.excalidraw.svg?alt=media&amp;token=c11a9f0b-d369-4cbf-b3cd-b776106eba45" alt="" class="gitbook-drawing">

Column Config dialog popup will open. Select "**Footer Configuration**" tab:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F9yWsts9kbvW2Flxs7MYh%2Ffile.excalidraw.svg?alt=media&amp;token=e7091c9e-7daf-4526-91da-403aa9d734d8" alt="" class="gitbook-drawing">

* Configure [CSS Styles](/standard-kanban/tools/configuring-css-styles). &#x20;
* Add [Row](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons)(s).
* Add [Cells](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons) in the row.
* Select **Type** (text/link/icon/menu).
* Set **ID**, **Value**, **CSS styles**.
* Configure [Handler](/standard-kanban/tools/configuring-handlers)  if necessary.
* Click "**Save**" to apply changes in column configuration and save dashboard.


# How to configure Column Container and Filters

Select a column (click on its header).  Go to **Data** section of **Column Properties** at the right sidebar. Click on link "**create**" ("**edit**") of "**Config**":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FfcaixuwQL3Iu20mF2p8E%2Ffile.excalidraw.svg?alt=media&amp;token=78897ed5-259d-4bdc-9559-cc6bf0dc82de" alt="" class="gitbook-drawing">

## Container Configuration

Column Config dialog popup will open. Select "**Container Configuration**" tab:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fw7CKHU07ar3HwsXaLg9W%2Ffile.excalidraw.svg?alt=media&amp;token=6325e451-2ee7-481b-aa43-9ddebdb65eee" alt="" class="gitbook-drawing">

* Check "**Hide Empty Column**" if you don't need see Empty Column
* Configure[ CSS Styles](/standard-kanban/tools/configuring-css-styles)
* Check "**Collapsible**" to give a column proper ability
* "**Collapsed**" will be shown only if "**Collapsible**" is checked and allows to set default column state (collapsed or not)
* Click "**Save**" button to apply changes in column configuration and save dashboard.

### Filters Configuration

Select "**Filters Configuration**" tab:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FXXO1bnhCneVziQE0mwrt%2Ffile.excalidraw.svg?alt=media&amp;token=c4e3f92c-af2a-4995-b973-24f51df2c70c" alt="" class="gitbook-drawing">

* Select filtering:
  * **Allowed** - column can be filtered by both default (system) data sources and custom filters
  * **Allowed only Default Sources** - column can be filtered only by default (system) data sources
  * **Allowed only Custom Sources** - column can be filtered only by custom filters
* Click "**Save**" button to apply changes in column configuration and save dashboard.


# Configure Card

<table data-view="cards"><thead><tr><th></th><th align="center"></th><th></th></tr></thead><tbody><tr><td></td><td align="center"><p><a href="/standard-kanban/configure-card/how-to-configure-card-properties">How to configure </a></p><p><a href="/standard-kanban/configure-card/how-to-configure-card-properties">Card properties</a></p></td><td></td></tr><tr><td></td><td align="center"><p><a href="/standard-kanban/configure-card/how-to-configure-card-data-source-and-conditions">How to configure </a></p><p><a href="/standard-kanban/configure-card/how-to-configure-card-data-source-and-conditions">Card Data Source and Conditions</a></p></td><td></td></tr><tr><td></td><td align="center"><p><a href="/standard-kanban/configure-card/how-to-configure-card-compact-layout">How to configure </a></p><p><a href="/standard-kanban/configure-card/how-to-configure-card-compact-layout"> Card Compact Layout</a></p></td><td></td></tr><tr><td></td><td align="center"><p><a href="/standard-kanban/configure-card/how-to-configure-card-layout">How to configure </a></p><p><a href="/standard-kanban/configure-card/how-to-configure-card-layout">Card Layout</a></p></td><td></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/configure-card/how-to-configure-and-use-card-custom-attributes">How to configure and use Card Custom Attributes</a></td><td></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/configure-card/configuring-card-movement-and-column-junctions">Configuring Card Movement and Column Junctions</a></td><td></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/configure-card/configuring-card-actions">Configuring Card Actions</a></td><td></td></tr></tbody></table>


# How to configure Card Properties

Click on card to open Card Properties in right sidebar.

Enter card name  and description into proper fields.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FW22jzC5v9Wmy0pfQa6fr%2Ffile.excalidraw.svg?alt=media&amp;token=a64fa29f-fab5-4aae-aa00-819c5b0dee72" alt="" class="gitbook-drawing">

{% hint style="info" %}
Name can contain:

* static text
* merge fields
* formulas

Description can be used in dashboard via [merge fields](/standard-kanban/tools/using-merge-field-picker).
{% endhint %}


# How to configure Card Data Source and Conditions

#### Data Source

Click on card. Go to the "**Data**" section of card properties at the right sidebar. Select  data source in the "**Data Source Type**" picklist:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FEC8RATeGu7ROmmYN9bn4%2Ffile.excalidraw.svg?alt=media&amp;token=f5cda092-1718-4526-a021-896a46b63bd2" alt="" class="gitbook-drawing">

{% hint style="warning" %}
Card will be shown in the column only when data sources of card and column are the same.
{% endhint %}

#### Conditions

Conditions are the way to specify which card should be shown for records of the same data source basing on their properties.

E.g., you have an kanban for Cases which has columns corresponding to basic Case Status values: New, Working, Escalated, Closed.&#x20;

You can make 2 cards for the "Case" object:

* One card can be shown for records which represent cases received online (Case.Origin = "Web")  and it can have a compact layout with some necessary fields (Case number, Subject,  Author, Created Date, etc.) and specific design (e.g., icons indicating Priority and Case Type).&#x20;
* Another card can be shown for records with other origins and has compact layout with smaller set of fields (Case Number, Subject, Reproter, Case Origin)

If you specify conditions for a first card, it will be shown only for records that match these conditions; other records will be represented by the second card. You can configure a chain of conditions, but do not forget to make a default card that will not have conditions at all (or at least have an opposite conditions).

Click on a necessary card, go to "**Conditions**" section and click on link "create" ("edit"). Card conditions dialog popup will open. Configure conditions there. For example above they will be:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FPwadz6OcuEHf4AAamffW%2Ffile.excalidraw.svg?alt=media&amp;token=68ec3dc3-83f3-4f01-9f7e-25ed372c399d" alt="" class="gitbook-drawing">

Click "**Save**" to apply changes in card conditions and save a dashboard.


# How to configure Card Compact Layout

Go to "**Layout**" section of card properties at the right sidebar. Select **Compact Layout** and click on link "create" ("edit", if card already has compact layout configured).

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FkUyb17AmOEyDorTK3Cmc%2Ffile.excalidraw.svg?alt=media&amp;token=48a34598-2f42-48aa-9cc5-fa3a0e129e12" alt="" class="gitbook-drawing">

Card builder will open.  You can add components to card and configure card settings.

To delete component drag it and drop outside of the card layout.

Configuring settings:

* If checkbox "**Collapsible**" is checked, the card on dashboard will show only the first row of components by default.  Hover mouse on it to display the whole card.
* Expand "**Styles**" section to show [CSS styles](/standard-kanban/tools/configuring-css-styles) form.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FJpYwdhPdsd1pLf9dQGr9%2Ffile.excalidraw.svg?alt=media&amp;token=1c2fa470-d010-427b-ae60-ebf75b6d4a55" alt="" class="gitbook-drawing">

#### Adding components

Click on component of a card. Settings of component will open at the right sidebar. Select **Type** (if you want to change type), fill in **ID**, **Value**, **Title** and set width of this component, if necessary.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fv2RciYvM2nHx7w3fbMgT%2Ffile.excalidraw.svg?alt=media&amp;token=f55f21fb-5475-4768-b4cf-1b79c57c5827" alt="" class="gitbook-drawing">

{% hint style="info" %}
ID is required to be used in some [actions related to Cells](/standard-kanban/using-kanban/how-to-use-kanban-api-actions), like "Refresh Cell" or "Update Cell".

Click on "Formula Builder" button to display [very helpful assistant](/standard-kanban/tools/using-formula-editor).

You can copy/paste components with settings using proper buttons.
{% endhint %}

Expand "**Handler**" section and configure [handler(s),](/standard-kanban/tools/configuring-handlers) if necessary. Expand "Styles" section to show CSS styles form for current component.

Click on Card Preview button to show "**Card Preview**" popup:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FSFsI7XNSIVpZd3DKMVxm%2Ffile.excalidraw.svg?alt=media&amp;token=bec33aa3-9023-4606-904e-157a254473e8" alt="" class="gitbook-drawing">

Select any existing record in the "**Search**" field to populate card preview with actual data from this record. Drag the slider to play with card preview width. You can set values to the variables in this list to affect element in card preview (variables are [set in Dashboard Configuration](/standard-kanban/using-kanban/how-to-work-with-variables)). Click "Save" to apply changes in card builder and save dashboard.

There are 4 types of card components:

* **Text** (looks like generic text)
* **Link** (looks like a link, default design depends on selected Kanban theme)
* **Icon** (has no text, only small image that should be taken from icon library)
* **Menu**

Text, link and icon are simple and intuitive to set up. Menu is more complex. It can have both text and icon, which position can be left or right. The position where submenu is dropped, also can be set  there:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fi9AUNiI9gUODcSE20pJy%2Ffile.excalidraw.svg?alt=media&amp;token=815e86d5-2b08-4292-82df-fb70f1511015" alt="" class="gitbook-drawing">

{% hint style="warning" %}
Note: open menu cant take more room than card can offer, and it can be cut off by card edges; in this case you can allow menu fall down out of card area by adding "overflow:visible" style to the card.
{% endhint %}

The Menu component has no sense without menu items. Thus, user must set up at least one menu item in **Options** section. Menu items should have [handlers set as usual](/standard-kanban/tools/configuring-handlers):&#x20;

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F48iHBKgBOPl7Dsy7COmx%2Ffile.excalidraw.svg?alt=media&amp;token=70d8af89-4e5c-4eee-b3fe-9837097e965c" alt="" class="gitbook-drawing">


# How to configure Card Layout

Go to "Layout" section of card properties at the right sidebar. Select Layout and click on link "create" ("edit", if card already has layout configured) to open **Card Layout** dialog popup.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F8DMKo3z8Na3HMSMoauLK%2Ffile.excalidraw.svg?alt=media&amp;token=97d93b03-295e-49d6-8561-4802608c2a47" alt="" class="gitbook-drawing">

### Basic Configuration

#### Layout Body

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fr8DnLYxoGDRKtU7RhUmk%2Ffile.excalidraw.svg?alt=media&amp;token=908d902f-f3d7-4773-9e54-133c534fd29a" alt="" class="gitbook-drawing">

Select layout body "**None**"  in case you do not want to show sidebar (or modal popup) with card details when card is clicked.

Select Layout body "**Form**" if you need some specific form to be shown. Choose [form](/components/forms)  and specify parameter(s) if necessary. For example:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FQZ3CdUj3F6a04IU6q2fF%2Ffile.excalidraw.svg?alt=media&amp;token=03945474-dd2d-4a5a-badf-4260b67850e1" alt="" class="gitbook-drawing">

Select Layout Body "**Visualforce Page**" to show some existing page from current organization. Choose a page in the proper field and set parameters, if needed.

Set Layout Body "**Lightning Component**" to embed some component. Select component and set parameters, if necessary:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fj1H0esbsvtWVGgpo8jAg%2Ffile.excalidraw.svg?alt=media&amp;token=5be0822d-3de0-43f4-bea2-30559d72c2a3" alt="" class="gitbook-drawing">

Select Layout Body "**Url**" to embed some other page. Fill in proper field with some external URL and specify parameters, if necessary.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FnYc64QudzqHqr2VYS7XB%2Ffile.excalidraw.svg?alt=media&amp;token=ced114ea-e034-41a1-b84a-5c8306cb4fd0" alt="" class="gitbook-drawing">

{% hint style="warning" %}
Only URLs to secure sites are allowed. If specify non-secure URL the site will be blocked by system.
{% endhint %}

Select Layout Body "**SObject**" to show current object standard details. You need to set Record ID (e.g., select {Case.Id} in the [merge field picker](/standard-kanban/tools/using-merge-field-picker) to specify ID of record represented by current card).

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FDJFAcbGKJzqdjA9k6fXe%2Ffile.excalidraw.svg?alt=media&amp;token=5a1a12b5-c1cb-4d88-848b-44cec0c1ec14" alt="" class="gitbook-drawing">

Select Layout Body "**Standard**" to show multiple tabs in layout. Configure them on the "Tabs configuration" subtab that will appear:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FFJIp6V4aRxNWMOeqbz5l%2Ffile.excalidraw.svg?alt=media&amp;token=90809bdd-1eff-4d45-84bf-8854bbb2a227" alt="" class="gitbook-drawing">

#### Tabs Configuration

Open "**Tabs Configuration**" subtab.  "**SObject**" tab is preset to show current object standard details.

Click "**Add tab**" button to open config dialog popup. Enter label and title in proper field, select icon using "**Icon Library**".  Configure "**Conditions**", CSS Styles for tab in generic (inactive) and active states if necessary.

Select  tab layout type in "**Layout**" field. Tab layouts are the same as described above, except the "**Standard**" one.

"**Standard**" layout type allows user to configure custom set of fields to display. Add fields under each other by adding rows to layout, set labels and values, rearrange rows, if necessary.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FnSFORC13j7XLDPpKEDlG%2Ffile.excalidraw.svg?alt=media&amp;token=73cd82c0-341d-4bdf-8262-ba590c477c18" alt="" class="gitbook-drawing">

#### Card Layout Positions

Select layout position in the proper picklist:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FTv2N8Dd7Lp8yehFPKzQQ%2Ffile.excalidraw.svg?alt=media&amp;token=1445d27a-b60f-4966-a381-574a853b6fac" alt="" class="gitbook-drawing">

Position "**Right**" will cause layout be shown as right sidebar:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FlAonufA7mlX6wHXTMDIo%2Fimage.png?alt=media&amp;token=2190fbd0-fd25-4ef5-b9ec-c1c0c3119260" alt=""><figcaption></figcaption></figure>

Position "**Left**" will cause layout be shown as left sidebar:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FpCEdnUNJOGuQ0y9xHjid%2Fimage.png?alt=media&amp;token=bb1072b2-bf6d-4f6c-b9d5-8440e20a6b18" alt=""><figcaption></figcaption></figure>

Position "**Modal**" will cause layout be shown as modal popup:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FGJNHJ4YSNRofQ1LK9LxM%2Fimage.png?alt=media&amp;token=b4dd5321-e0ad-4900-b66e-02058218e3ca" alt=""><figcaption></figcaption></figure>

#### Other Settings

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FedN9A8CUGrcxPmDHnHNg%2Ffile.excalidraw.svg?alt=media&amp;token=7fad5cb8-90cd-4db8-acae-2b79a635c65f" alt="" class="gitbook-drawing">

{% hint style="info" %}
In case if you hid header or footer, you don't need to configure them as described below.
{% endhint %}

### Header Configuration

Go to "**Header Configuration**" tab to open "**Title Settings**".

Fill in "**Text**" field (static text, merge fields or formulas) and configure [CSS Styles](/standard-kanban/tools/configuring-css-styles).

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fkyh5D6W42AINOZWbrlDc%2Ffile.excalidraw.svg?alt=media&amp;token=d245f30d-b1ab-440a-8a43-298f170ba8a6" alt="" class="gitbook-drawing">

### Footer Configuration

Open "**Footer Configuration**" tab and click "**Add Button**" to configure [buttons](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons), if needed.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fqz6RX9mr0Fhwh8MGWYen%2Ffile.excalidraw.svg?alt=media&amp;token=f937374d-d185-454c-be87-633a3ae04f46" alt="" class="gitbook-drawing">

Click "**Save**" to apply changes in card layout configuration and save dashboard.


# How to configure and use Card Custom Attributes

Custom attributes can be used as additional fields of card. You can use them in [merge fields](/standard-kanban/tools/using-merge-field-picker) in any place where card is available as context object ($Card).

Go to "**Custom Attributes**" section of card properties at the right sidebar. Click "**add**" link, fill in field Name and Value:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F6MVWyItqvmOXYJ0twvUW%2Ffile.excalidraw.svg?alt=media&amp;token=bcfa0c05-224a-4300-bb42-407147548c45" alt="" class="gitbook-drawing">

You can add any number of custom attributes with unique names:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FzJhomUvOWps6DzhzIyfk%2Fimage.png?alt=media&amp;token=a8ea7973-2d16-419a-8dd1-eba21ea377d9" alt=""><figcaption></figcaption></figure>

Save current dashboard. After saving custom attributes will be available for current card context object:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FtzyoWOxSgIdHCyjWLGNX%2Ffile.excalidraw.svg?alt=media&amp;token=fc16c8e7-6f97-4ac3-a6a1-2778c0df35d8" alt="" class="gitbook-drawing">

Custom attributes should have `a__` prefix to be used in merge fields:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FCxPgdP6H0ofgQBQg36bO%2Fimage.png?alt=media&amp;token=4f636dbc-b05a-4e34-99b2-0f549bb846d7" alt=""><figcaption></figcaption></figure>


# Configuring Card Movement and Column Junctions

The main idea of Kanban is triggering some actions by moving cards between columns. These actions can be different depending on what column card is moved from and which column card is moved to. Also, not all moves can be allowed. To configure these abilities Columns should be linked with **Column Junctions**.

Column Junctions are relations between columns, configured for each card.  Each junction has these properties:

* **Visibility** - determines if current card is visible in the current column, and, thus, can be dragged from it. Uncheck the proper checkbox to disallow show the current card in the current column and remove all junctions configured for this card.
* **Drag-n-drop** configuration - specifies to which columns card can be moved from the current one. Check checkboxes to allow drag-and-drop to proper column(s). Check / uncheck the bulk checkbox to select / deselect all columns.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FG07wVNTgQmGtuDASI2pU%2Ffile.excalidraw.svg?alt=media&amp;token=377925e8-a1a9-494d-8c3c-5b30a8629c6d" alt="" class="gitbook-drawing">

When some of checkboxes are checked, the current column gets Junctions for the current card. The card obtains connectors. These connectors show allowed drag-and-drop directions for this card:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FBvzic9MprWhyZ8fh2rKK%2Ffile.excalidraw.svg?alt=media&amp;token=aa2102bf-3569-4080-8127-8417b1148c5b" alt="" class="gitbook-drawing">

The card dragging should have a sense, so, some actions should be executed on card move. The system will show a warning sign when selected card has connectors that don't have any actions added to them. If hover mouse on this warning sign, a tooltip will show which drag-and-drop directions have no actions:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FaPaao0kOAuw1klbBmAuR%2Ffile.excalidraw.svg?alt=media&amp;token=246188da-f995-49d9-a79c-9a25ea394486" alt="" class="gitbook-drawing">

[Add necessary actions](/standard-kanban/configure-card/configuring-card-actions) to each connector in "**Actions**" section.

{% hint style="warning" %}
Note: if uncheck any checkbox that represents allowed drag-and-drop, not only connector will be deleted, but all actions, added to it, will be deleted too.
{% endhint %}

Columns can have different types of behavior when card is dragged from them and when it is dropped to them. This behavior can be configured for each column where card can be dragged to ("**Target Columns**"). Configuration is set in the "**Drop Behavior**" section of the Column Junction properties. This section appears only when at least one connector is set for the card, and contains behavior forms for each Junction:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FaOtSmybAWLuIsS5M6D64%2Ffile.excalidraw.svg?alt=media&amp;token=0df97aa1-9e3d-46c5-9963-4682f4f5e2ba" alt="" class="gitbook-drawing">

For each column you can set behavior of source column (the one where card is dragged from):

* **Remove Card** - card will disappear from the source column
* **Refresh** - source column contents will be refreshed and the card will remain there
* **Remove Card and Refresh** - card will be removed from the source column; source column contents will be refreshed; if the record, represented by dragged card, still match the source column conditions, card will appear there again
* **Do Nothing** - source column will not change it's contents

And you can set behavior of the target column (the one what card is dropped to):

* **Refresh** - target column contents will be refreshed
* **Do Nothing** - target column will not change it's contents

### Bulk Actions

{% hint style="success" %}
User can drag multiple cards at the same time. At the Kanban press "Ctrl" key and click several cards one by one to make a multiple selection, then click and drag any of selected cards into a target column. Actions configured for each card will be performed in the same way as if cards were dragged individually.
{% endhint %}


# Configuring Card Actions

Card Actions are executed when cards are dragged from one column to another (dragging of cards is the main idea of Kanban-style data manipulation).

Card Actions can be added in 2 ways:

* Click "**add**" link in "**Actions**" section of Card Properties or Column Junction Settings
* Drag the action from the Actions library (in the left sidebar of Kanban builder) to the desired Card or Column Junction

And Card Actions can be added into 2 card representations:

* Card itself (in the "Kanban Cards" section of the builder main area)
* Column Junctions (card frames in the columns)

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FeNP4deQ1JavQmEn6k9EX%2Ffile.excalidraw.svg?alt=media&amp;token=d304c829-59e6-470c-9345-239a12086311" alt="" class="gitbook-drawing">

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVYPFjw8Gy8RJ9bfLJRjh%2Ffile.excalidraw.svg?alt=media&amp;token=c0bb43f7-155e-4e54-a94e-fce41b2d9936" alt="" class="gitbook-drawing">

### Adding Card Actions by Clicking Links

When actions are added to Card by clicking "**add**" link, they will be always executed, no matter what column this Card will be dragged and dropped to.

When actions are added to Column Junction by clicking "**add**" link (at one of columns listed in "**Actions**" section), they will be added to current Column Junction only and for selected column only. This means that actions will be executed only:

* when Card is dragged ***from*** the column (where this action was added to Column Junction), and
* when Card is dropped ***to*** the column, what action was added for&#x20;

Also, if there were no [Column Junctions Drag-n-Drops](/standard-kanban/configure-card/configuring-card-movement-and-column-junctions) configured, a proper one will be set automatically after adding the first action:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVAdO1NlOwsLf18PxkB2j%2Ffile.excalidraw.svg?alt=media&amp;token=a5e1e7c5-2d7c-42c3-8b14-8323785d3d4e" alt="" class="gitbook-drawing">

After clicking the "**add**" link in both Card or Column Junction, an "**Add Action**" popup will be shown. It will ask you what to add - action or action group - and suggest which action or action group should be added - new or already existing:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F42K0RPVyroVH4nWWJzoi%2Fimage.png?alt=media&amp;token=732c6505-43d2-40c9-a2e5-2903884bdb9d" alt=""><figcaption></figcaption></figure>

If user select "**New**" action or action group to add, a new popup ("**Create New Action**" or "**Create New Action Group**") will be shown with the proper form. Create desired [Action or Action Group](/components/actions-action-groups) and click "Save" to add it.

If user select "**Existing**" action or action group to add, a proper popup ("**Select Action**" or "**Select Action Group**") will be shown with the list of Actions / Action Groups. Click on any Action / Action Group to select it, and press "**Select**" button to add it to Card / Column Junction:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FFZUfvVVQcgpWmZIlr2IO%2Ffile.excalidraw.svg?alt=media&amp;token=8547dfa3-e11c-431c-babd-48328783902e" alt="" class="gitbook-drawing">

{% hint style="info" %}
Use "Search" form at the top of "**Select Action**" or "**Select Action Group**" popup to find necessary Action / Action Group easily.
{% endhint %}

### Dragging Card Actions from the Library

When actions are dragged from library to Card, they will be always executed, no matter what column this Card will be dragged and dropped to.

After action (or action group) shape has been dragged to Card, an "Add *%action type%* Action" / "Add Action Group" popup will be shown. User can choose add an existing or a new action (or action group) there:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FtOfZnhq4zeFRg2VarUg5%2Fimage.png?alt=media&amp;token=803db52b-5243-47b9-aa69-eff8d69a6e87" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F0cIuESq36EqgfhxUJRZj%2Fimage.png?alt=media&amp;token=6589ff7c-8454-4261-a8c9-b33de0f34051" alt=""><figcaption></figcaption></figure>

Adding new or existing Action / Action Group will be done in the same way as described above for adding actions by clicking links.

When Action or Action Group shape is dragged to Column Junction, an "Add *%action type%* Action" / "Add Action Group" popup will be shown and it will contain a Source Column selector - a set of Kanban column names and checkboxes:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FqXF4gY9jYbmRZOSAPuY9%2Ffile.excalidraw.svg?alt=media&amp;token=f1e375dc-766e-43f7-8c5e-39520fc13ba6" alt="" class="gitbook-drawing">

User will not be able to add Action or Action Group until he select at least one column.

{% hint style="warning" %}
Note: user should select a card shape in the column first to drop action there.
{% endhint %}

Action / Action group will be added NOT to current Column Junction, but to all Column Junctions, selected in the Source Column selector in this popup, and for current column only. This means that actions will be executed only:

* when Card is dragged from one of selected columns, and
* when Card is dropped into the column, what Actions were dragged into

Also, if there were no Column Junctions Drag-n-Drops configured, they will be set automatically after dragging the action:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F6abWoa7EsZSB1rkFQmgw%2Ffile.excalidraw.svg?alt=media&amp;token=34ccc1e9-f0b2-439e-878b-fea2eeb1f9ca" alt="" class="gitbook-drawing">


# Groups of Cards


# How to configure Card Grouping

### Introduction

Card Groups is a new layer of visualization and management of cards.&#x20;

One feature of these card groups is their customizable visual styles. This means that a stack of cards and an individual card can be visually distinct, making it easier to identify and differentiate.&#x20;

Another feature is a set of aggregation functions for calculating several kinds of totals:

* Maximum
* Minimum
* Sum
* Average

These functions are instrumental in providing meaningful insights into your data, aiding in more informed decision-making and efficient project management within the Salesforce CRM platform.

{% hint style="info" %}
This feature is available since release 3.1.37
{% endhint %}

To make card groups you just need to have a kanban with columns configured on some Data Source object.&#x20;

### Basic Configuration

Let's use Opportunities in the following example. The Kanban will have 4 columns for several Opportunity stages.

{% hint style="info" %}
Distributing cards by columns - is the top layer of records representation and management  in kanban. Card grouping offers a second layer.
{% endhint %}

Here how a kanban can look like without grouping:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FYloXDblHF1ChGhn7BUpy%2Ffile.excalidraw.svg?alt=media&amp;token=e10a9120-633d-420c-8047-d0d4451e8446" alt="" class="gitbook-drawing">

We can add grouping by some fields of Data Source object.&#x20;

{% hint style="info" %}
Groupable field types:

* Checkbox (boolean)

* Phone (string)

* Picklist (string)

* Email (string)

* Text (string)

* Text Area (string)

* URL (string)

* Number (int). Does not include custom fields, only standard Number fields with SOAP type <mark style="color:red;">`int`</mark>, like <mark style="color:red;">`Account.NumberOfEmployees`</mark>.

* Lookup (id)

* Master Detail (id)

* Id (id)

* Date (date)

* Formulas of type Checkbox and Date, including cross-object formulas across standard and custom relationships.
  {% endhint %}

* Open Column Config popup and go to "Grouping Configuration" tab.

* Click <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fpy86SEpBzn2VhHMTCuze%2Fimage.png?alt=media&amp;token=a0254f94-3e02-4c23-ac35-ac783ec9b6c5" alt="" data-size="line"> button to select a Data Source field in "Group by" picker:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F2hMYf9t537NvPJBKsvWQ%2Ffile.excalidraw.svg?alt=media&amp;token=5a2dbc6b-b246-4d28-a70a-c6a4c925ee9a" alt="" class="gitbook-drawing">

* A field picker will appear. Select a field (fields of up to 4 levels are available) and click "Apply" button:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FqUnnijy3rcszQxJJw5oX%2Ffile.excalidraw.svg?alt=media&amp;token=7840ccdc-58b9-458e-9b52-67747f3e0be0" alt="" class="gitbook-drawing">

* Save changes:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FSVWa9plmXyWT6WX5HM6f%2Ffile.excalidraw.svg?alt=media&amp;token=6213ccb3-7aac-4155-babc-abbb3d589c80" alt="" class="gitbook-drawing">

This is enough to add groups to the column. These groups will automatically receive a header that will correspond to the value of selected field, and will contain only cards that have this value set.

Here how a kanban can look like with card grouping in the last column:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FnA5oNgeXyiRIkX3PekLy%2Ffile.excalidraw.svg?alt=media&amp;token=670a7af0-f74d-46c7-bad7-ec310fa86ecc" alt="" class="gitbook-drawing">

{% hint style="warning" %}
If some cards have no value in the field which cards are grouped by, these cards will not be included in any group.
{% endhint %}

Card groups have the following features:

* They are collapsed by default and show only the first card. To expand a group click <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FEHnTbxNI4ekpUcLVDZu3%2Fimage.png?alt=media&amp;token=c38cbbf5-ab25-463f-9586-29a1b546af58" alt="" data-size="line"> button at the group header.
* Card grouping does not cancel column sorting order - it will be matched inside groups too.
* If group contains many cards, not all of them can be displayed - in this case a "load more" button will be shown at the bottom of expanded group.

{% hint style="warning" %}
Only one Card Group is allowed per column.
{% endhint %}

### Other Features

Card Groups offer following abilities:

* Styling
* Show totals
* Use conditions to include cards in the group

#### Styling

Add CSS styles using proper Styles picker:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FFUq9QmmzoJ7WCHd14cBS%2Ffile.excalidraw.svg?alt=media&amp;token=a20c8662-6b4a-44d2-87c6-aa3f6645b1a0" alt="" class="gitbook-drawing">

You can use merge fields in styles to make groups styled dynamically depending on different values.

#### Totals

* Click <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fqqc7mcOt3Uj6PHtiGAfz%2Fimage.png?alt=media&amp;token=3ccea17f-0254-4386-858c-67b749d37e91" alt="" data-size="line"> button to show proper subform for Totals entry.
* Type Label (text that will be displayed left to value).
* Select aggregation method in "Details" column. Currently available methods are:
  * Sum (proper values from all cards belonging to the group will be added)
  * Minimum (will show minimal value)
  * Maximum (will show maximal value)
  * Average (will calculate and show average value)
* Select a field which Total will be aggregated by
* Set CSS styles (e.g., color) for this Total, if necessary

You can add several Totals:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FQi3wdhXq9PBMqhEbMJpw%2Ffile.excalidraw.svg?alt=media&amp;token=9f9b12c0-427a-40a6-b02b-8279adbaeb18" alt="" class="gitbook-drawing">

How can look card groups with styling and Totals:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F9SrAiQkwhOYKMuYV0Z2v%2Ffile.excalidraw.svg?alt=media&amp;token=47ab9e4f-9cf7-4e5a-b670-88b7417fd1ea" alt="" class="gitbook-drawing">

#### Conditions

To make card grouped more efficiently, you can specify conditions. Only cards, whose records match conditions, will be grouped.

* Go to "Conditions" section of Grouping Configuration tab
* Click <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F6mesSJJD9Z9cKWoF5bpD%2Fimage.png?alt=media&amp;token=f63ab9a1-5cb5-4918-8f98-5550c3fe9a2a" alt="" data-size="line"> button to add condition
* Select Data Source Object field, operator and type
* Specify value to be matched
* Add more conditions, if necessary
* Set conditions Logic, if needed

In the example below Opportunity cards will be grouped by Account Name only for two specified accounts:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FMQomE6ylU5PzP5E1OHFp%2Ffile.excalidraw.svg?alt=media&amp;token=3f2b101d-4f16-44de-baa8-2766647e0371" alt="" class="gitbook-drawing">

And how result will look like:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fz7EKjPetiXFdnlzK5djr%2Ffile.excalidraw.svg?alt=media&amp;token=a54f7648-7dbe-4d18-a04d-98ad339f5376" alt="" class="gitbook-drawing">


# Tools

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td></td><td><a href="/standard-kanban/tools/using-merge-field-picker">Using Merge Field Picker</a></td><td></td></tr><tr><td></td><td><a href="/standard-kanban/tools/using-formula-editor">Using Formula Editor</a></td><td></td></tr><tr><td></td><td><a href="/standard-kanban/tools/configuring-css-styles">Configuring CSS styles</a></td><td></td></tr><tr><td></td><td><a href="/standard-kanban/tools/configuring-rows-cells-menus-and-buttons">Configuring Row, Cells, Menus and Buttons</a></td><td></td></tr><tr><td></td><td><a href="/standard-kanban/tools/configuring-handlers">Configuring Handlers</a></td><td></td></tr></tbody></table>


# Using Merge Field Picker

Merge Field Picker is available in 2 views (depending on place it is called from): old (Classic) and new (based on Salesforce Lightning interface).

### Old View

Merge Field Picker can be opened by clicking "toggle Merge Field Picker on/off" link at the top of dialog popups.

Picker will be shown at the bottom of popup:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FwXYHnBeVa0Ieqw6uRXJ8%2Ffile.excalidraw.svg?alt=media&amp;token=8dce2aad-7bb1-4efa-b874-cd2ba366ee14" alt="" class="gitbook-drawing">

Select a Context Object to make deal with:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F0p4dIzPDHusGjtNSkhEl%2Ffile.excalidraw.svg?alt=media&amp;token=d369100f-f13d-4cf7-b510-d7b5caccbd0a" alt="" class="gitbook-drawing">

List of context objects contains objects depending on element being configured:

* Current data source object (e.g., "Case") is available for cards, but not available for Kanban or Column (because Kanban and Column can contain cards for different data sources).
* `$Card` object is actual for cards, card elements and card Layout, but has no sense on Column and Kanban.
* `$Column` object is actual for cards and columns, but Kanban has no knowledge about it.
* `$Kanban` is available for all kanban elements.

Some context objects can be found in "Other Optional Objects" section of the picker. If not, that means proper context object should not be used in the current situation.

* `$SourceColumn` and `$TargetColumn` are available through Kanban because it can be unambiguously determined which column user drags a card from and to.
* `$Functions` provide selection of functions and operators, applicable in formulas, and is absent in places where formulas are not acceptable.
* `$User`, `$System`, `$Settings` objects are available always.
* `$Variables` contain variables (if they are specified) or "Variable Template" string (for objects that are working with variables, but have no own, like Actions)

{% hint style="info" %}
`$Record` object is not actually a Context one, but it allows to search ID or Name of  any record of any available Object - as far as Data Source, Kanban, Column, Card, etc - by searching it and picking a result. This is quite useful when some ID is needed, e.g., for Kanban API actions that require Column/Kanban/etc. IDs.
{% endhint %}

After Context Object has been selected, a list of Context Object Items will be shown:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FdtTOpNwpQmCx3RRJkCOA%2Ffile.excalidraw.svg?alt=media&amp;token=7e98f556-4916-4743-9c9b-1dcfe5700159" alt="" class="gitbook-drawing">

Select necessary item (it can be a field, property, function, etc) and it will be put into text field near the list as Merge field:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FkdCKScSgtAaKuml2Jh8j%2Ffile.excalidraw.svg?alt=media&amp;token=d5d59b95-1d8d-48b2-a2b5-ea273247c991" alt="" class="gitbook-drawing">

Now you can:

* copy Merge field to use anywhere
* click to any text input in the popup (to make it focused) and then press "Insert" button to paste Merge field into selected text input:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F4DWNkkkRBwKJAqx64GnN%2Ffile.excalidraw.svg?alt=media&amp;token=e8447332-833a-4d74-8864-aacc38adbc49" alt="" class="gitbook-drawing">

### New View

This View is available in some places, e.g., on Card Builder.

Click ">\_" button at the necessary field:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FJR7w5GmG5xowOu659x4h%2Ffile.excalidraw.svg?alt=media&amp;token=e89fcf65-0115-4bc8-8d01-385e0c39be67" alt="" class="gitbook-drawing">

The Merge Field Picker will be shown as a part of Formula Builder:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FTTpKIe4UVjnNwTi9PFWM%2Ffile.excalidraw.svg?alt=media&amp;token=d7a0cba7-cdce-40a1-9610-3dfca806ee2b" alt="" class="gitbook-drawing">

Select a Context Object in the list and a Field Picker popup will appear. Select a first-level field and see selected field at the bottom of popup:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fr04BYNJW05yimJ2gp76r%2Ffile.excalidraw.svg?alt=media&amp;token=c671587e-a54a-47ae-8363-6ad17d3395ca" alt="" class="gitbook-drawing">

Or select a second-level (3rd-level, etc.) field by clicking items with arrows:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVYa9SuRBYaaYDOtk3e55%2Ffile.excalidraw.svg?alt=media&amp;token=dd9fc77d-822f-4d33-a95f-cd5866b8d9ea" alt="" class="gitbook-drawing">

Click "Apply" button of Field Picker and selected Merge field will be inserted to Formula Builder in the place at cursor:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fkw8uUncgiDUFbef2QK9U%2Ffile.excalidraw.svg?alt=media&amp;token=e4a43658-1828-494d-b848-8c5d3968fe58" alt="" class="gitbook-drawing">

Click "Copy to Clipboard" button to copy contents of Formula Builder.

Click "Apply" button on the Formula Builder to insert Merge field to the field, where Formula Builder has been called:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FNh22jlZ7RtzvIcTOIpt9%2Ffile.excalidraw.svg?alt=media&amp;token=4738c6be-1206-4214-905e-bf1465fd45c9" alt="" class="gitbook-drawing">


# Using Formula Editor

Formula Editor is used to build and check formulas. It is available in 2 views: Old (classic) and New (based on Salesforce Lightning interface) depending on place where it is called at.

### Old View

Old view Formula Editor is displayed in dialog popups where some dashboard elements are configured.

To show Formula Editor toggle Merge Field Picker on and click "Open Formula Editor" button:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FNz8Za74Ld7v8FZZ2J92W%2Ffile.excalidraw.svg?alt=media&amp;token=1429996b-1a38-41e6-9efa-ee3879cd6cde" alt="" class="gitbook-drawing">

The Formula Editor will be shown as a modal window inside the dialog popup.

Edit a formula in a Formula field; use merge field constructor to select and paste [merge fields](/standard-kanban/tools/using-merge-field-picker) and [functions](/references/functions) there.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F8wzNOOY9jFCPMvQzFnjJ%2Ffile.excalidraw.svg?alt=media&amp;token=275aee94-f925-41f3-8076-2ab4547d3486" alt="" class="gitbook-drawing">

{% hint style="info" %}
To use the functions or calculations inside of inputs, they should be wrapped in formula expression: `FORMULA[%formula_contents%]`. The proper warning will be shown when a $Functions is selected in "Context Object" picklist of merge field constructor.
{% endhint %}

Type a necessary formula in the Formula field.

Click "Copy To Clipboard" button to copy the formula.

Click "Check Syntax" button to validate formula syntax. If all is good, a proper message will be shown:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FCiJ5bTV0SziVZBkc98C9%2Fimage.png?alt=media&amp;token=92d69713-a4ad-4066-bbf2-a1d05939af2c" alt=""><figcaption></figcaption></figure>

Check "Calculate Formula" checkbox to show more useful options:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F3nNzGcN89UHchXvN2A1L%2Fimage.png?alt=media&amp;token=42f43b74-c82e-46bc-ae5d-f1e49c19e152" alt=""><figcaption></figcaption></figure>

A "Source Objects" JSON will be shown with default stub values in the proper field. Change these values to ones you want to test or debug formula with, and click "Calculate" button. Result of formula evaluation will be shown in the "Formula Result" field:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FxFEfqrlHK0LEyJWKsEXx%2Fimage.png?alt=media&amp;token=06f1bec9-6f23-4b30-97ae-d4104b59cd51" alt=""><figcaption></figcaption></figure>

Click "Apply" button to paste a formula into a Merge Field Picker (if it was opened previously):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FmSzN8VaY6DbaTp7hiBY8%2Ffile.excalidraw.svg?alt=media&amp;token=398e6886-e9f0-4a05-8c39-dd08e68e1b22" alt="" class="gitbook-drawing">

### New View

A new view of Formula Editor can be found in dashboard elements configuration popups, e.g. in Card Compact Layout configuration window. Click "Formula Editor" button to show it:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FJQnFFhmLTyD4xMz83YhA%2Ffile.excalidraw.svg?alt=media&amp;token=24a5a7e8-4fc6-418d-857a-d86aeb53a19e" alt="" class="gitbook-drawing">

This view of Formula Editor has the same basic features as an old view. Also you can:

* copy formula to clipboard
* click "Apply" to paste formula to the field where you've clicked "Formula Editor" button
* check Formula syntax
* evaluate formula:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FAzhWtdy2phoQ5Z1tdNna%2Ffile.excalidraw.svg?alt=media&amp;token=af3e3170-8b6f-442b-af64-04b0395cc39e" alt="" class="gitbook-drawing">


# Configuring CSS styles

There are lot of places where CSS styles can be applied.

CSS styles can be configured with several ways:

### CSS Editor (Old View)

It consists of text area and "More" button. This button when clicked calls a dialog window.&#x20;

* Click "Add" link here to add a line for CSS property (rule)
* Enter CSS property name in "Rule Name" field, and value in "Rule Value" field:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FCLaJpdArkGxaUj4yyJet%2Ffile.excalidraw.svg?alt=media&amp;token=332a0835-e798-4f5c-918b-ee7e92971739" alt="" class="gitbook-drawing">

{% hint style="warning" %}
Note: you should not type any CSS separators (semicolon) or brackets.
{% endhint %}

Add more rules if needed. Click "Apply" button to get rules applied to element being styled.

After clicking "Apply" button you will see styles (combined as properties set) in text area:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FGECAhvAd3xboHSWvIo1k%2Ffile.excalidraw.svg?alt=media&amp;token=3bae3e4d-b2b2-4da3-bc96-d84e2745c24d" alt="" class="gitbook-drawing">

{% hint style="info" %}
You can copy styles from this text area, but you are not allowed to edit them here directly.
{% endhint %}

CSS styles can be added to element by pasting them into the text area.

1. Copy styles in proper format (e.g. from web inspector in your browser)
2. Click on text area (to make it focused) and paste styles here (press keyboard shortcut)

A dialog window will be opened. It will contain as previously set CSS properties, as just pasted (distributed by separate lines):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FOsvl97Kx7T1IdiwuqxGa%2Ffile.excalidraw.svg?alt=media&amp;token=aac0780f-3400-4e2a-8525-d33843b92691" alt="" class="gitbook-drawing">

Click "Apply" button to save new styles.

### Combined Fields with Rules (New View)

CSS editor allows to do the same things as an old view one. User can add CSS rules one by one or several at one time as CSS code.

Click "+" button to add rule lines:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FZwMkpzLiPUB5HHHsjjQG%2Ffile.excalidraw.svg?alt=media&amp;token=097760d2-d7c6-42a9-b88c-1e3e522ebedc" alt="" class="gitbook-drawing">

Enter rule name and rule value into proper fields and save changes by clicking "Save" button:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F1jVqOpTGMAXvZYB2ziBb%2Ffile.excalidraw.svg?alt=media&amp;token=7ad80d4b-b84f-44a8-960d-55c04580a333" alt="" class="gitbook-drawing">

To edit CSS as stylesheet data, click "edit" button to show a textarea where you can add/remove/copy/paste styles:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FOe4FxPunmz0xHrCKMblq%2Ffile.excalidraw.svg?alt=media&amp;token=71eb0914-86b5-4112-ade5-a8557d48f77d" alt="" class="gitbook-drawing">

{% hint style="warning" %}
In the old view you can not remove or change CSS properties in textarea, only copy or add by pasting. In the new view you can.
{% endhint %}

CSS styles can be added to element by pasting them into the text area.

1. Copy styles in proper format (e.g. from web inspector in your browser).
2. Click on text area and paste styles here.

CSS properties form the textarea will be added as separate rule lines:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FvtjV0Sz2nmPh3AkRSDmk%2Fimage.png?alt=media&amp;token=f3d21107-3f5c-4507-b6ac-feb9fbd0c4e6" alt=""><figcaption></figcaption></figure>

### Formulas, Functions and Merge Fields in Styles

CSS properties can be dynamically set based on different system and object data using built-in features.

Refer to [Functions section](/references/functions), to [Merge Field](/standard-kanban/tools/using-merge-field-picker) Picker, and [Formula Editor](/standard-kanban/tools/using-formula-editor) articles to know how to work with them.

For example CSS properties that can be configured with formulas and merge fields as shown below.

CSS property can be set to "color" or "background-color" depending on record "IsClosed" field value:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Ff3gmnb0XHjhC7Cb45lez%2Ffile.excalidraw.svg?alt=media&amp;token=e308e4ce-9165-47f7-bb14-a5053000d148" alt="" class="gitbook-drawing">

And value of this property can be set to different color depending on record "Type" field value:

* \#808000 if it is set to "electrical";
* \#78904B if "mechanical";
* and #4488CC for other values:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FwiOECd79ziiNurVxjSN3%2Ffile.excalidraw.svg?alt=media&amp;token=90080f63-3e3c-4cc9-a7cf-b59068ecf072" alt="" class="gitbook-drawing">

So, CSS rule will look like this:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FDn6KEsdXhaEeOmdFHPo4%2Ffile.excalidraw.svg?alt=media&amp;token=705628aa-1c10-4849-8edf-6f048b04ce17" alt="" class="gitbook-drawing">

And it will mean "If case is closed, card text color will be set to one of 3 colors depending on case type; if case is not closed, this color will be applied as background".


# Configuring Rows, Cells, Menus and Buttons

### Cells

Cells are the small parts of the different elements on your dashboard that contain pictures or text and can be used for visual, informational and interactive  purposes. Cells can be added into [Kanban Statistics](/standard-kanban/configure-kanban/how-to-add-kanban-statistics), [Column Group](/standard-kanban/configure-column/how-to-set-column-groups) Headers, [Column Headers](/standard-kanban/configure-column/how-to-configure-column-header) and [Footers](/standard-kanban/configure-column/how-to-configure-column-footer), and Cards (see proper [article](/standard-kanban/configure-card/how-to-configure-card-compact-layout) to know about card cells). Cells can be one of these types:

* **Icon** - a small picture
* **Text** - looks as generic text matching selected Kanban theme
* **Link** - looks as generic link matching selected Kanban theme
* **Menu** - looks as generic text matching selected Kanban theme, but shows a dropdown menu with standard button-like items. This menu is the same as shown when click button of "Menu" type - see proper button description below.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FGg5WDEyJ8b2rlcYpwTGo%2Ffile.excalidraw.svg?alt=media&amp;token=0664a033-68b5-4617-ad7d-a5f2e5fdba63" alt="" class="gitbook-drawing">

{% hint style="warning" %}
Note: Cells of "Link" type just look like links, but do nothing when clicked by default, as far as other cells types. You need to add handlers to them to make them do something.
{% endhint %}

To add a cell into dashboard element go to this element configuration and click "Add cell" button in the proper place:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FkKyUdxX8WIXxe33XRs11%2Ffile.excalidraw.svg?alt=media&amp;token=aae04693-9c1c-44f7-92b1-446fbd258abf" alt="" class="gitbook-drawing">

A cell entry row will be added. Then:

* Select cell type
* Configure CSS styles of this cell, if necessary
* Click ">>" button for "Value" field  to show Cell Properties popup
* Specify cell value. It can be text, [merge field](/standard-kanban/tools/using-merge-field-picker) or [formula](/standard-kanban/tools/using-formula-editor)
* Specify Cell Title - a tooltip that will be shown on mouse hover; this is not mandatory. Tooltip also can be made dynamic with the help of merge fields and formulas
* Set some custom ID for Cell, if needed. This ID is required to be used in some [actions related to Cells](/standard-kanban/using-kanban/how-to-use-kanban-api-actions), like "Refresh Cell" or "Update Cell"
* Specify Cell width in % or pixels, if you're not satisfied with default "auto" value

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FOiRmcSlUwsEjII4sIcfe%2Ffile.excalidraw.svg?alt=media&amp;token=7ee61327-27df-4232-bc0b-d72f5621c7a5" alt="" class="gitbook-drawing">

{% hint style="info" %}
For cell of "Icon type" it will be an icon category and name in format "category:name".

Icon and it's category should match one from [Lightning Design System icons library](https://www.lightningdesignsystem.com/icons/).

Note: If specify incorrect icon, cell will contain no icon.
{% endhint %}

{% hint style="warning" %}
Note: If you specify a Cell ID in the Cell Properties popup, it will be shown in "ID" field of the Cell entry row. Do not edit it there:
{% endhint %}

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FFBLhJ9gmNPG7iiV6lskR%2Ffile.excalidraw.svg?alt=media&amp;token=df95fc9a-643f-4533-8a8e-1a2facd4cb9a" alt="" class="gitbook-drawing">

Add more cells if needed. Use small arrow buttons to rearrange cells (first cell is most left, last is most right).

To make cell interactive (do something on mouse click) click ">>" button in "Handler" column and configure [handlers](/standard-kanban/tools/configuring-handlers).

### Rows

In some dashboard elements (e.g. column footer) cells can be shown in more than one line. In this case cells are organized in rows.

Go to proper element configuration and click "Add Row" button:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FPkVti7K1K0YAvCUtHGTt%2Ffile.excalidraw.svg?alt=media&amp;token=739777d0-348c-4506-b4d1-45ff30248568" alt="" class="gitbook-drawing">

Add cell(s) into the row as described above. \
Add more rows, if necessary.\
Use small arrow buttons to rearrange rows.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FsvNWzdxzWzV20iZ4vl98%2Ffile.excalidraw.svg?alt=media&amp;token=effe7ea1-822f-4492-9493-17de8e38fdc8" alt="" class="gitbook-drawing">

### Buttons

Buttons can be shown in the different elements on your dashboard. They are used to add some interactivity to dashboard. Buttons can be one of these types:

* Standard - look as generic button (matching selected Kanban theme)
* Standard with icon - look as generic button containing both icon and text
* Icon - look as generic button with icon only
* Separator - look not like a button, used to separate menu items (available to add in menus only)

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FlLCNGceN2a54UHbYe3sV%2Ffile.excalidraw.svg?alt=media&amp;token=b9ccba0f-bf33-4d6d-8bb2-508648036e5a" alt="" class="gitbook-drawing">

{% hint style="warning" %}
If specify incorrect icon, button will contain red warning sign.
{% endhint %}

To add buttons to dashboard element go to its configuration and click "Add Button" button:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fl2YF7VY84BpSO6BfUyPY%2Ffile.excalidraw.svg?alt=media&amp;token=315a7b22-328b-4b37-9dbe-6f2c9a780314" alt="" class="gitbook-drawing">

A modal popup will appear. The main button properties will be shown at "Basic Configuration" tab:

* Select button type - standard or icon
* Set button label - text that will be shown on the button. It can be static text, merge field or formula
* This field is unavailable for buttons of "icon" type
* Set button title - text that will be shown as tooltip on mouse hover
* Specify button icon. Icon is mandatory for "Icon" type buttons and optional for "Standard"
* Configure conditions that button should match to be displayed. This is optional and by default button will be displayed unconditionally
* Configure [CSS styles](/standard-kanban/tools/configuring-css-styles), if necessary

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FNUvtBC2UpC3qKSkH7rTw%2Ffile.excalidraw.svg?alt=media&amp;token=9cdf5e3a-e378-4179-9ef7-0daf13df2e0d" alt="" class="gitbook-drawing">

{% hint style="info" %}
For button of "Icon type" it will be an icon category and name in format "category:name".

Icon and it's category should match one from [Lightning Design System icons library](https://www.lightningdesignsystem.com/icons/).
{% endhint %}

Click to "Handler Configuration" tab to configure handler(s) for this button.

### Menus

Menus are way to aggregate buttons into dropdown blocks of submenu items. Menus can be one of these types:

* Button - menu look as generic button matching selected Kanban theme.
* Icon - look as generic button with icon only.
* Text - look as generic text string.

{% hint style="warning" %}
If specify an incorrect icon, menu will contain red warning sign
{% endhint %}

Menus are available for some dashboard elements, e.g. dashboard top (in Kanban properties). Go to proper configuration and click "Add Menu" button.

Menu configurator popup will be shown. Here you can:

* Select menu type
* Specify menu label - text on menu item. It can be static text, merge field or formula
* Note: if menu type is set to "Icon", an "Icon" field will be displayed instead of "Label"
* Specify menu item title - text that will be shown as tooltip on mouseover
* Select menu position (see below)
* Optionally configure conditions, that should be matched to show menu
* Configure CSS styles, if necessary

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F54RYTZl4RzKrhrE4GYOe%2Ffile.excalidraw.svg?alt=media&amp;token=58978189-1304-4c74-a491-c3a0d77d5bd3" alt="" class="gitbook-drawing">

Menu position shows direction where block with submenu items will be dropped to:

* **Right** means submenu will start at left side of menu and continue to right direction when menu items text will be long.&#x20;
* **Left** - submenu will start at left side of menu and continue to left direction when menu items text will be long. These directions are shown with red arrows
* **Top** - submenu will be shown above menu. Bottom - submenu will drop down below menu. These directions are shown with green arrows

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FZNtA310lmMP9JKa9OsIU%2Ffile.excalidraw.svg?alt=media&amp;token=66ccfced-897d-4d21-b01e-80a06b9b0851" alt="" class="gitbook-drawing">

After menu has been added, menu buttons should be added there. Click "**Add Button**" link in the menu row:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FfkDE3NrXVLsvb8A5GNIh%2Ffile.excalidraw.svg?alt=media&amp;token=583f6d37-0eef-4593-982c-eb7be39bdf4e" alt="" class="gitbook-drawing">

A button configurator popup will be shown. It is the same as for single buttons with only "**Separator**" button type added.&#x20;

Rearrange buttons with small arrows:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FXTnDkjEJwgp98MgfKqJ9%2Ffile.excalidraw.svg?alt=media&amp;token=5ec1ea46-4e53-4dae-bf59-afda94b8db74" alt="" class="gitbook-drawing">

Menu will look like this when clicked:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F5RPkCR1CjSxjPgxi7r23%2Fimage.png?alt=media&amp;token=7990e4af-82c5-4ed3-850b-0bc1b6bf0489" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Note: currently buttons with "Icon" type are not suitable for using in menus due to mandatory text label that you can't edit. Use "Standard" type buttons with icons instead.
{% endhint %}


# Configuring Handlers

Handlers are way to make a dashboard interactive and to do many other useful things. They can:

* Show object details
* Display a form or component
* Navigate to web page (internal or external)
* Execute actions and action groups
* Make changes in Kanban layout
* Launch custom events

Handlers can return results of Success and Error types.

These Successes and Errors can have their own handlers, and this allow user to trigger chains of handlers.

Handlers can be set to dashboard elements user can interact with:

* [Cells and buttons](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons)
* Card layout elements

Handlers can be set in two views of configurator: old and new.

### Old View Configurator

The old view is commonly used. To show it go to proper element (e.g., cell) and click "Configure Handler"  button or go to element (e.g., button) editor and switch to Handler Configuration tab:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F7kFDsZjAc5GW7P7bOwJB%2Ffile.excalidraw.svg?alt=media&amp;token=789e5326-6a95-4701-96b9-c54c6470967d" alt="" class="gitbook-drawing">

In both cases the handler editor will be shown:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FMQVu0IFHrJcFOdLVSmvA%2Ffile.excalidraw.svg?alt=media&amp;token=39835bac-39e7-45a8-94ed-65f0d35cd969" alt="" class="gitbook-drawing">

Select handler type in the "**Type**" picklist. Depending on your selection other columns in handlers editor will contain different fields and elements.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FIEl3oCPwbBQ3Qda3oOYs%2Fimage.png?alt=media&amp;token=64dbc572-8e0a-404c-812b-e3f58f9dafaa" alt=""><figcaption></figcaption></figure>

See "Handler Types" section below to view configuring of different types of handlers.

### New View Configurator

This view is available for some elements (e.g., Card Components). Go to proper element and expand "Handler" section. Click "Edit Handler" button:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FxESGHnUEkrEfKeXETwi4%2Ffile.excalidraw.svg?alt=media&amp;token=8f4cfdea-2076-484b-ace5-71d37512d5d4" alt="" class="gitbook-drawing">

{% hint style="info" %}
Created Handler could be copied to other elements of card by using Copy/Paste buttons
{% endhint %}

The handler editor will appear in popup. By default it will contain nothing. Select handler type in the "Type" picklist. Depending on your selection different fields and elements will appear next to it:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F4r3sf1Wv1TkQU7zZsbVj%2Ffile.excalidraw.svg?alt=media&amp;token=583bebb8-224b-439a-9dc9-da0728dfc8b5" alt="" class="gitbook-drawing">

{% hint style="info" %}
Not all types of handlers can return an error. These handler types will display no "Add Error handler" button.
{% endhint %}

### Handler Types

#### Form

This type of handler when triggered will show a window with specified form. To configure it:

* Select **"Form**" in the "**Type**" field in configurator
* Select necessary form in the "Value" lookup or click "**Add New From**" button to open form builder
* Select if form will be opened in the same browser window or in the new one
* Click "Parameters" button to configure parameters or paste correct JSON with parameters into textarea

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FqUvJtRHgCiKQxwjcnpyF%2Ffile.excalidraw.svg?alt=media&amp;token=a47299c2-bcb6-4559-ae4b-f09f960a9ddb" alt="" class="gitbook-drawing">

Form have 2 default parameters that should be set:

* Mode ("edit", "new" or "view") - specifies how form should be shown
* id - specifies source record ID which data will be taken to populate form and further work with (not necessary for "New" mode)

Click ">>" button to open parameters builder. Click "Add" link to add more parameters and specify them:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F5eUFXye43mQHU3iNLGAj%2Ffile.excalidraw.svg?alt=media&amp;token=2c6f88b6-1e06-4460-94d8-fde7d4c1ffe4" alt="" class="gitbook-drawing">

#### Form API

This type of handler when triggered will call specified API method of open form. To configure it:

* Select "Form API" in the "Type" field in configurator
* Select necessary method in the "Value" lookup (e.g., "Execute Action")
* Click "Parameters" button to configure parameters or paste correct JSON with parameters into textarea

Form API handler has no default parameters. Required parameters are determined by selected API method (e.g., "Execute Action" method needs id of the form and action name):

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FydXztzQIRkFRkTxgBA63%2Fimage.png?alt=media&amp;token=6b83460f-2ca1-4fb6-8168-58b1bf78e903" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Note: you need to know Form API methods from your system administrator.
{% endhint %}

#### Visualforce Page

This type of handler when triggered will navigate you to the specified Visualforce Page from current organization (in new browser tab). To configure it:

* Select "**Visualforce Page**" in the "**Type**" field in configurator
* Select necessary Visualforce Page in the "**Value**" lookup
* Select if Visualforce Page will be opened in the same browser window or in the new one
* Click "**Parameters**" button to configure parameters or paste correct JSON with parameters into textarea

Visualforce page has no default parameters:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FkMoKwyjvun2zeedYdz7B%2Fimage.png?alt=media&amp;token=3a1e216f-dcd6-43e3-bed9-e043e606f53c" alt=""><figcaption></figcaption></figure>

#### URL

This type of handler when triggered will navigate you to the specified  web page (in new browser tab). To configure it:

* Select "**Url**" in the "**Type**" field in configurator
* Type necessary URL in the "**Value**" text input
* Select if  URL will be opened in the same browser window or in the new one.
* Click "**Parameters**" button to configure parameters or paste correct JSON with parameters into textarea.

URL has no default parameters:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FuQxYIz1KwS7GfDE5AHrZ%2Fimage.png?alt=media&amp;token=9d16fccc-2256-4fa4-ac78-016bf90e3562" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}

* Only relative URLs (pages on the same server) can be opened in the same window. External URLs are always opened in the new window due to security reasons.
* You should provide a full URL with network protocol prefix. Without it system will treat URL as relative.
  {% endhint %}

#### Lightning Component

This type of handler when triggered will display the Lightning Component. To configure it:

* Select "**Lightning Component**" in the "**Type**" field in configurator
* Select a component in the "**Value**" lookup
* Click "**Parameters**" button to configure parameters or paste correct JSON with parameters into textarea

Lightning Component has no default parameters:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FrL9X61rL5hMPIFDpnLVT%2Fimage.png?alt=media&amp;token=87b29a58-73c8-453d-8bd5-75faa71059f8" alt=""><figcaption></figcaption></figure>

#### SObject

This type of handler when triggered will open the page with object specified by its ID. To configure it:

* Select "**SObject**" in the "**Type**" field in configurator
* Type ID or API Name(in case of new record) of the SObject in the "Value" text input.  Any object is allowed - system will show its details in the same page
* Click "Parameters" button to configure parameters or paste correct JSON with parameters into textarea

SObject has no default parameters:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F3XpeoarN3vAsbzs0Bgia%2Fimage.png?alt=media&amp;token=73153323-2c20-443a-b86e-a9e474b5e692" alt=""><figcaption></figcaption></figure>

#### Action / Action Group

This type of handler when triggered will execute the specified action or action group. To configure it:

* Select "**Action**" or "**Action Group**" in the "**Type**" field in configurator
* Select an action or action grroup in the "**Value**" lookup or click "**Add New**..." button to create new action or action group in the other browser tab
* Click "**Parameters**" button to configure parameters or paste correct JSON with parameters into textarea

Action or action group can have different parameters. There are 2 default parameters pre-defined (but not mandatory):

* source - provide the ID of the record that will be a source of action data
* variables - provide initial variables with their values in JSON format (like `{"variable1":"value1","variable2":"value2"}`)

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fj39DQdKRgO0MjflmfrEN%2Fimage.png?alt=media&amp;token=df5811b9-8627-4a8b-8819-797a3ca10558" alt=""><figcaption></figcaption></figure>

The action or action group can be executed successfully or with error. To do something with these results additional handlers can be added to action / action group success and error. Handlers can be added several times and form a chain - this is a simple way to program complex behavior. To remove an additional handler click "Delete Handler" button:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FiyfutmniZ327eYva4LBp%2Ffile.excalidraw.svg?alt=media&amp;token=8ab99b22-8206-4630-bc6e-439b123f4cae" alt="" class="gitbook-drawing">

{% hint style="info" %}
You can re-order handlers. Exchange positions of neighbor handlers by moving them with arrow buttons.
{% endhint %}

{% hint style="warning" %}
Note: If handler that can not have child handlers becomes parent, it will loose all children. &#x20;
{% endhint %}

#### Kanban API

This type of handler when triggered will call the specified method of Kanban API that add some interactivity.  To configure it:

* Select "**Kanban AP**I" in the "**Type**" field in configurator
* Select a Kanban API method in the "**Value**" picklist
* Click "**Parameters**" button to configure parameters or paste correct JSON with parameters into textarea

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FLYbPpGDZJ0D5RokuluJ4%2Ffile.excalidraw.svg?alt=media&amp;token=b7b50418-6582-4a16-8c73-5a0a9d601d22" alt="" class="gitbook-drawing">

Kanban API methods do their specific actions and return successful result. This result can have an additional handler. Add this handler by clicking "Add Success Handler" button and configure it (and next-level handlers, if needed) in the same way as for Action / Action Group handler.

To learn more about Kanban API methods refer to the ["Kanban API" article](/standard-kanban/using-kanban/how-to-use-kanban-api-actions).

#### Fire Event

This type of handler when triggered will launch specified event.  To configure it:

* Select "**Fire Event**" in the "**Type**" field in configurator
* Type event value in the "**Value**" field ([refer to Force events documentation](https://developer.salesforce.com/docs/component-library/overview/events))
* Click "Parameters" button to configure parameters or paste correct JSON with parameters into textarea

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FeilNvj8vfJrbkfvUVipi%2Fimage.png?alt=media&amp;token=08455067-818b-4ce1-864d-0403d447e0f5" alt=""><figcaption></figcaption></figure>


# Using Kanban

<table data-view="cards"><thead><tr><th></th><th align="center"></th><th></th></tr></thead><tbody><tr><td></td><td align="center"><p><a href="/standard-kanban/using-kanban/how-to-use-kanban-api-actions">How to use</a></p><p><a href="/standard-kanban/using-kanban/how-to-use-kanban-api-actions">Kanban API actions</a></p></td><td></td></tr><tr><td></td><td align="center"><p><a href="/standard-kanban/using-kanban/how-to-incorporate-a-kanban-into-a-lightning-page">How to incorporate a Kanban into</a></p><p><a href="/standard-kanban/using-kanban/how-to-incorporate-a-kanban-into-a-lightning-page">a Lightning Page</a></p></td><td></td></tr><tr><td></td><td align="center"><p><a href="/standard-kanban/using-kanban/how-to-build-a-link-to-a-kanban">How to build a link to</a></p><p><a href="/standard-kanban/using-kanban/how-to-build-a-link-to-a-kanban">a Kanban</a></p></td><td></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/using-kanban/how-to-work-with-variables">How to work with variables</a></td><td></td></tr><tr><td></td><td align="center"><a href="/standard-kanban/using-kanban/how-to-debug-a-kanban">How to debug a Kanban</a></td><td></td></tr><tr><td></td><td align="center"><p><a href="/standard-kanban/using-kanban/how-to-work-with-filters-and-orders">How to work with</a></p><p><a href="/standard-kanban/using-kanban/how-to-work-with-filters-and-orders">filters and orders</a></p></td><td></td></tr></tbody></table>


# How to use Kanban API actions

Kanban API methods are used to make visual changes in Kanban layout, show messages and work with variables.

### Show Message

**This method will execute this action:**

* Show a notification message over the current Kanban

**This method will NOT:**

* Affect any variables
* Affect any other Kanban elements
* Refresh the web page

**This methods accepts the following parameters:**

* Name = "type"\
  Value = one of the following designs:

"error":

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F1a51PsnsA4e4gHdYMYnt%2Fimage.png?alt=media&amp;token=8c6f6cc3-8426-4ca7-bdc5-0d39d60c249a" alt=""><figcaption></figcaption></figure>

"warning":

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FvVD3UV83XBCkz5z5E8vK%2Fimage.png?alt=media&amp;token=763b8d5e-20bf-41ac-b096-671ebf57c874" alt=""><figcaption></figcaption></figure>

"success":

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FUV4GBlJ67lERaPGibiUV%2Fimage.png?alt=media&amp;token=093bb398-e25b-4834-923c-04e1c34049e1" alt=""><figcaption></figcaption></figure>

"info":

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FA44lNUSfHii4D3n4vxAf%2Fimage.png?alt=media&amp;token=9546d8a2-0f41-4021-968b-94dbd3f9a708" alt=""><figcaption></figcaption></figure>

&#x20;This parameter is optional; if omit it, the message type will be "info" by default

* Name = "title"\
  Value = any text (with merge fields or formulas, if needed), that will be used as message header\
  This parameter is optional; if you omit it, system will just show a message without header<br>
* Name = "body"\
  Value = any text you want to show in the message body\
  This parameter is required<br>
* Name = "mode"\
  Value = one of the following:
  * "pester" - the message will automatically disappear after some time (5 seconds by default); it has no "close" button, so user can't dismiss it before time set in Kanban configuration
  * "dismissible" - the same as "pester", but user can close the message manually earlier than show time will expire
  * "sticky" - the message will not disappear until user close it manually

&#x20;This parameter is optional; if omit it, the mode will be "dismissible" by default

* Name = "duration"\
  Value = time duration of message show (in seconds)\
  This parameter is optional and used only for messages with "pester" and "dismissible" modes; if omit it, message will disappear in 5 seconds.

### Refresh Kanbans

This method forces the specified Kanbans be refreshed.&#x20;

**This method will execute this action:**

* Reload Kanban contents including all columns, cards, top menus and buttons

**This method will NOT:**

* Reset Kanban variables (and this allow user to re-initiate Kanban with other data)
* Refresh the web page where Kanban is inserted into

**This method accepts the following parameters:**

* Name = "kanbans"\
  Value = Kanban IDs or names separated by comma or in JSON array format\
  This parameter is optional - if do not set it, the method will refresh the current Kanban

{% hint style="info" %}
Kanban ID of current kanban is available as `{$KanBan.Id}` merge field. IDs of other kanbans should be known - taken from URL or selected in Merge Field Picker.
{% endhint %}

### Update Variables

**This method will execute this action:**

* Update Variables with specified names in all kanbans from the specified list (if some variable does not exist, it will be created)

**This method will NOT:**

* Affect any other Kanban elements
* Refresh the web page

**This method accepts the following parameters:**

* kanbans = list of Kanban IDs or names separated by comma or in JSON format ({"key":"value"}).
* variables = variables and their values in JSON format

{% hint style="warning" %}
If it is needed to calculate formulas at the time of the event, an Action/Action Group type of handler should be used instead and variables should be defined there.
{% endhint %}

### Print Kanban

**This method will execute this action:**

* Print specified Kanban page

**This method accepts the following parameters:**

* kanbanId = ID of Kanban to print\
  This parameter is optional

### Navigate to Kanban

**This method will execute this action:**

* Open other specified Kanban page

**This method accepts the following parameters:**

* kanbanId = ID of Kanban to open
* variables = initial variables and their values in JSON format. This works in the same way as [Input Variables](/composite-kanban/howtos-and-best-practices/how-to-pass-variables-between-parent-and-child-kanbans) on [Composite Kanban](/composite-kanban/introduction)
* filters = initial filters in JSON format

### Show/Hide Kanban

**These methods will execute this action:**

* Show / hide the specified kanban in the current composite Kanban

**These methods will NOT:**

* Affect any variables
* Affect any other Kanban elements except recalculation of other kanban widths
* Refresh the web page
* Change layout state (hide or show)

**These methods accept the following parameter:**

* Name = "kanbans"\
  Value = Kanban Junction IDs or API names separated by comma or in JSON array format\
  This parameter is required

{% hint style="info" %}
In the context of this action Kanban Junctions are the same as child kanbans.
{% endhint %}

### Full Screen

This method forces the specified Kanban view be full screen.

**This method will execute this action:**

* Change standard view to full screen of specified Kanban

**This method will NOT:**

* Affect any variables
* Refresh the Kanban containing specified column
* Refresh the web page

**This method accepts the following parameters:**

* Name = "fullscreen"\
  Value = "true" or "false"\
  This parameter is required

### Refresh Columns

This method forces the specified Kanban columns be refreshed.

**This method will execute this action:**

* Reload specified column(s) contents including all cards

**This method will NOT:**

* Affect any variables
* Refresh the Kanban containing specified column
* Refresh the web page

**This method accepts the following parameters:**

* Name = "columns"\
  Value = Kanban columns IDs or names separated by comma or in JSON array format\
  This parameter is required

### Show / Hide Columns

**These methods will execute this action:**

* Show / hide the specified column in the current Kanban

**These methods will NOT:**

* Affect any variables
* Affect any other Kanban elements except recalculation of other columns widths
* Refresh the web page
* Change layout state (hide or show)

**These methods accept the following parameters:**

* Name = "columns"\
  Value = Kanban columns IDs or names separated by comma or in JSON array format\
  This parameter is required

### Refresh Card

This method forces the currently selected card (in column) in the specified Kanban be refreshed.

**This method will execute this action:**

* Reload card contents

**This method will NOT:**

* Affect any variables
* Refresh any other Kanban elements
* Refresh the web page

**This method accepts the following parameters:**

* Name = "kanbans"\
  Value = ID of Kanban where card should be refreshed in (useful for composite kanbans)\
  This parameter is optional - if do not set it, the method will refresh the card in the current Kanban<br>
* Name = "columns"\
  Value = ID of Columns where card should be refreshed in\
  This parameter is optional - if do not set it, the method will refresh the card in all columns<br>
* Name = "recordId"\
  Value = record ID to specify which card should be refreshed in\
  This parameter is optional

### Refresh Card Layout

This method forces the currently selected card layout (in sidebar or popup) in the specified Kanban be refreshed.

**This method will execute this action:**

* Reload card layout contents including all tabs and buttons

**This method will NOT:**

* Affect any variables
* Refresh any other Kanban elements
* Refresh the web page
* Change layout state (hide or show)

**This method accepts the following parameters:**

* Name = "kanbanId"\
  Value = ID of Kanban where card layout should be refreshed in (useful for composite kanbans)\
  This parameter is optional - if do not set it, the method will refresh the card layout in the current Kanban

### Show Card Layout

**This method will execute this action:**

* Show  the specified record card layout (in the sidebar or popup) in the current Kanban

**This method will NOT:**

* Affect any variables
* Affect any other Kanban elements
* Refresh the web page

**Theis method accepts the following parameters:**

* Name = "recordId"\
  Value = ID of the record which is represented in the specified column by some card\
  This parameter is required<br>
* Name = "columnId"\
  Value = ID of the column which selected record card is shown in\
  This parameter is required

{% hint style="info" %}
**What this can be useful for?**\
Different columns in the Kanban can show cards for the same record (e.g., when one record matches conditions of more than one columns). And cards with different layouts and components can be configured for the same object. Thus, same record can be represented with different layouts depending on column its card is shown in. In this case system should know which layout should be shown - and it is possible only if provide not only Record ID but Column ID too.
{% endhint %}

### Hide Card Layout

**This method will execute this action:**

* Hide the shown card layout (sidebar or popup) from the current Kanban

**This method will NOT:**

* Affect any variables
* Affect any other Kanban elements
* Refresh the web page

**This method accepts the following parameters:**

* Name = "kanbanId"\
  Value = ID of the Kanban where card layout should be hidden from\
  This parameter is optional; if omit it, a card layout will be hidden from the current Kanban

### Refresh cell

This method forces the specified cell(s) be refreshed in the specified column(s) and card(s) of Kanban.

**This method will execute this action:**

* Reload specified cell(s) contents

**This method will NOT:**

* Affect any variables
* Refresh the Kanban or column
* Refresh the web page

**This method accepts the following parameters:**

* Name = **"Cell Id"**\
  Value = [cell ID](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons#cells) \
  This parameter is required<br>
* Name = **"Column Id"**\
  Value = column ID where card cell(s),  column cell(s),  should be refreshed in\
  This parameter is optional<br>
* Name = **"Record Id"**\
  Value = record ID to specify which card cell(s) should be refreshed in\
  This parameter is optional

### Update cell

This method forces the specified cell(s) be updated in the specified column(s) and card(s) of Kanban.

**This method will execute this action:**

* Update specified cell(s) contents

**This method will NOT:**

* Affect any variables
* Affect any other Kanban elements
* Refresh the web page

**This method accepts the following parameters:**

* Name = **"Cell Id"**\
  Value = [cell ID](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons)\
  This parameter is required<br>
* Name = **"Column Id"**\
  Value = column ID where card cell(s),  column cell(s),  should be updated in\
  This parameter is optional<br>
* Name = **"Record Id"**\
  Value = record ID to specify which card cell(s) should be updated in\
  This parameter is optional<br>
* Name = "**Value**"\
  Value = the cell(s) value that should be updated\
  This parameter is required<br>
* Name = "**Title**"\
  Value = the cell(s) title that should be updated\
  This parameter is optional<br>
* Name = "**Styles**"\
  Value = the cell(s) styles in CSS format that should be updated\
  This parameter is optional


# How to Incorporate a Kanban into a Lightning Page

* Go to proper Lightning Page (e.g., some object Record page) and open Builder (in order to create or edit page layout):
  1. Open any Account record in Salesforce.
  2. Click the Setup icon (![](https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FusH0Iipf0pkyDT2AI0dZ%2Fimage.png?alt=media\&token=d7fc1246-f7e0-436b-add1-501a80c5d931)) and select "Edit Page" to open the Lightning App Builder.
* Find "FlexiKanban" component in the Components list at the left sidebar and drag it to desired available placeholder:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FKMzvI6pIlLllxcM1wG79%2Ffile.excalidraw.svg?alt=media&amp;token=c0c6cbe4-9101-4cb8-b435-96fa8502ec87" alt="" class="gitbook-drawing">

* After dragging select the added component (it may become selected automatically)
* Select necessary **Kanban** in the respective field
* Enter variables in **JSON** format, if necessary
* Set **CSS Styles**, if needed
* Set **filters** to manage component visibility, if needed
* Click "**Save**" button


# How to build a link to a Kanban

Link to a kanban can be built in two ways:

* Combine relative or absolute URL of kanban page with necessary parameters
* Use **BUILDDASHBOARDLINK** function

### Use of kanban page URL

This way is suitable for **URL/Navigate actions:**

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FmLiVxOHjV1Ihj3lVT36T%2Ffile.excalidraw.svg?alt=media&amp;token=7fc05688-a8ab-4a9e-949a-6b4010e7f610" alt="" class="gitbook-drawing">

* Add an "**URL**" type [handler](/standard-kanban/tools/configuring-handlers) to necessary kanban element.
* Set URL **Value** to relative or absolute path to kanban page or component:
  * Absolute path depends on server/organization you refer to.
  * Relative path may depend on page structure and will refer to the current server/organization; e.g., relative path can be like this: **/lightning/cmp/c\_\_KanBanComponent**
* Select which browser window the page will be opened in - **the same** (will go out of kanban) or **new window/browser tab**.
* Add the necessary parameters.

Parameters for Kanban Component, used in this example, are:

* **c\_\_style** = some CSS styles, that will be applied to Kanban container;
* **c\_\_variables** = JSON with variables that should be passed to Kanban opened (optional);
* **c\_\_kanbanId** = ID of Kanban to open (may be set directly or via [merge fields](/standard-kanban/tools/using-merge-field-picker));

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F7BwvMe18q5iKZ6MH4HVm%2Ffile.excalidraw.svg?alt=media&amp;token=2acece4e-8b6f-4cf5-84cf-4d17d78c57c3" alt="" class="gitbook-drawing">

### Use of BUILDDASHBOARDLINK function

This way is good for places where a link should be generated as HTML, instead of script-driven actions. For example, to build links in email messages.

The BUILDDASHBOARDLINK function can be selected via merge field picker and should be called in this way:

<mark style="color:red;">`BUILDDASHBOARDLINK(dashboard_id, variables, styles, as_html_tag_optional, text_optional)`</mark>

The parameters are:

* **dashboard\_id** = ID of Kanban to open
* **variables** = JSON with variables (in quotes '...') that should be passed to Kanban opened (optional; set to null, if not needed)
* **styles** = some CSS styles, that will be applied to Kanban container, in quotes ('...')
* **as\_html\_tag\_optional** = true, false or null (that will be equal to false) - asks system if generate link as text, or as \<a>...\</a> HTML tag
* **text\_optional** = some text or null - sets the substitute text, that will be content (not "href") of \<a> tag generated

Function should be wrapped with FORMULA\[] operator and can be validated with [formula editor](/standard-kanban/tools/using-formula-editor).


# How to Work with Variables

Variables are the user defined fields that:

* can have any desirable name
* can have value of String type
* can be inserted anywhere as [Merge field](/standard-kanban/tools/using-merge-field-picker)
* can be updated by [Actions](/components/actions-action-groups)
* are initialized with initial values when Kanban page is loaded or reloaded
* are stored in memory and do not changed when Kanban is refreshed by Kanban API or "Refresh Kanban" button (and this is a perfect tool to dynamically change a lot of Kanban properties)

Variables are configured in the [proper section](/standard-kanban/configure-kanban/how-to-configure-variables) of Kanban Properties sidebar.

To see what values are stored in the variables, and manipulate with them, user can open a [Debug Console](/standard-kanban/using-kanban/how-to-debug-a-kanban) on Kanban.

Variables can be changed by different actions:

* "Update Variables" method of  [Kanban API](/components/actions-action-groups/types/kanban-api-action) - it allows the simple update of variable with some value.
* "Define Variable" [Global Action](/components/actions-action-groups/types/define-variable-action) - it allows to make calculations with variable values using formulas.<br>

Define Variable Action called from Kanban has these properties:

* it always return updated variables to Kanban where it has been called from
* it need to know the name of variable to update<br>

Example of how to CHANGE variable value via Define Variable Action:

1\. Configure action in this way:

* Type = Define Variable
* Variable Type = JSON
* Variables JSON example:

```
{"{$Variables.IncomingVariableName}":"FORMULA[IF({$Variables.IncomingVariableValue} != '1','zero','one')]"}
```

This formula updates variable value to "one" if its initial value is "1", and to "zero" if not.

{% hint style="info" %}
In the example above name of variable to update is got from Action incoming variables (that work as parameters) using merge field {$Variables.IncomingVariableName}. Initial value of variable to update is set by {$Variables.IncomingVariableValue}.\
\
Thus, an action call can pass any Kanban variable to action as pre-defined variables named "IncomingVariableName" and "IncomingVariableValue". This will allow user to re-use this action anywhere with other variables.
{% endhint %}

2\. Define some variable on Kanban, e.g. variable name = "TheVar" and value = "A":

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FWsc9eMCvLPfbGeyzCYGK%2Fimage.png?alt=media&amp;token=60762163-9986-4adb-959b-6f5fb4a189ff" alt=""><figcaption></figcaption></figure>

3\. Configure an action (e.g., as handler on some element) and pass this variable name and value to action via action incoming variables:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FCuRZXjAls1Da2O6LDrum%2Fimage.png?alt=media&amp;token=86050491-9dee-486b-bff0-5cbd57183d21" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FGQMYqUgSnShAmLekZVBf%2Fimage.png?alt=media&amp;token=e5cf91ee-2eec-405b-89bf-bc52ba08e75e" alt=""><figcaption></figcaption></figure>

Save Kanban.\
To test variables update open Kanban and check variable in Debug Console. It will show initial variable value:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FZsrjG7hmdTDdhVe1Ue6d%2Fimage.png?alt=media&amp;token=3fa42210-7e33-4267-bde6-15dbecbe29bc" alt=""><figcaption></figcaption></figure>

Click on element with this action set as handler. Then open debug console again to see an updated variable:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FCE1gYXayzyun9WmPem1T%2Fimage.png?alt=media&amp;token=893a4614-f34b-4dfc-b9fa-36eb8451f639" alt=""><figcaption></figcaption></figure>

This way does not allow to update variable in other Kanban, but you can first update variable in current Kanban with global action, and then [pass new value to other Kanban](/standard-kanban/howtos-and-best-practices/how-to-configure-communication-between-kanbans) via Kanban API "Update Variable" method.


# How to debug a Kanban

To debug kanbans you can use the Debug Console.

{% hint style="info" %}
Debug Console is available only for the kanban owner, or users with the Flexi Kanban Admin permission set.
{% endhint %}

Click on Kanban menu <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FnnUM4s07gTfTzkzCs12g%2Fimage.png?alt=media&amp;token=ad23b791-6500-4848-b240-ec08c11dc9ed" alt="" data-size="line">and select "**Debug Console**" item:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FPVDPYiULK1AGVNYZd8lg%2Ffile.excalidraw.svg?alt=media&amp;token=6cc380f2-4a71-4c69-9d81-84de82765368" alt="" class="gitbook-drawing">

Debug Console popup will be open. There are 2 tabs to work with - **Variables** and **History**:<br>

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FB6OMm9c7ZDNN00Cdwd10%2Ffile.excalidraw.svg?alt=media&amp;token=d6556322-c06f-45c7-b05a-3b7a36981460" alt="" class="gitbook-drawing">

### Variables tab

Variables are listed here. List shows names and current values of variables.

Variables can be edited (click "**Edit**" item on submenu) or added (in the case when variable is used in the Kanban, but not defined yet).

Click proper button "**Add Variables**" to add a variable.

Added variables can be deleted; also they will be deleted automatically on page reload (but will remain if refresh Kanban only).

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FXJNV05a9q2DZX8Rf8dYj%2Ffile.excalidraw.svg?alt=media&amp;token=3a31f147-1bbd-498d-942e-443b73c42a2a" alt="" class="gitbook-drawing">

Example of variable debugging:

* [Configure variable](/standard-kanban/configure-kanban/how-to-configure-variables) on the kanban:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FzXInQHclD9BdKWjb8P97%2Ffile.excalidraw.svg?alt=media&amp;token=82e41541-ed19-428b-be54-59d84941f3df" alt="" class="gitbook-drawing">

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F5ADhE6J0WInZYXP78bkO%2Ffile.excalidraw.svg?alt=media&amp;token=b7e08387-d217-42f2-a619-b0975ef10abc" alt="" class="gitbook-drawing">

* Use this variable in the Column name:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FmXdmajaRpPnjYvS0z8Yo%2Fimage.png?alt=media&amp;token=3696fb17-2607-409c-a471-1d3d9b9c80bc" alt=""><figcaption></figcaption></figure>

* Save the kanban and open it. See the column name with variable value inserted (10):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FBdeBMWfLEZJLjELBSesY%2Ffile.excalidraw.svg?alt=media&amp;token=856cc634-62b3-496e-896e-cc39997ba2db" alt="" class="gitbook-drawing">

* Open Debug Console and edit this variable. Save changes:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FSoFlaqQB9kdOUYCIhisM%2Ffile.excalidraw.svg?alt=media&amp;token=a2d85555-0ac7-4baf-83db-76755a6d1d10" alt="" class="gitbook-drawing">

* Refresh Kanban by clicking proper button. See that column name has been changed correspondingly to new variable value:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FrrBwUsQ2sEMbJupoqOZB%2Ffile.excalidraw.svg?alt=media&amp;token=b14ebd08-bb2c-4fe3-afc2-d1d104ca7b31" alt="" class="gitbook-drawing">

Example of adding variables:

* set something in the Kanban builder to use some new variable. This variable is not defined in the kanban config:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FjRJEKl6GxvREG4vYsjvc%2Fimage.png?alt=media&amp;token=4bea3499-5855-454a-bb01-0d7cb85e9a4b" alt=""><figcaption></figcaption></figure>

* Go to the Kanban view and see the place where this variable is used. See that nothing is here because the kanban does not have this variable yet:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fz1jVH5hKETPP8BvD9mXV%2Ffile.excalidraw.svg?alt=media&amp;token=9fa97f8f-8c6a-4414-987f-75888921282e" alt="" class="gitbook-drawing">

* Open Debug Console and add the proper variable:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FZOXhHdgBIezgn7ReceUK%2Ffile.excalidraw.svg?alt=media&amp;token=7cf22689-c8a4-48c3-a430-aea8db781c44" alt="" class="gitbook-drawing">

* Save changes and refresh Kanban (**not the whole page!**). See that variable value is pasted in the corresponding place:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F3buSr11fFXO0NPzi4wwo%2Ffile.excalidraw.svg?alt=media&amp;token=a40035b3-dc84-48c9-a632-76baadf2bb41" alt="" class="gitbook-drawing">

### History tab

* In order to see history, admin should enable it on the kanban first. Go to Kanban config and check "Track History" checkbox:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fff17CiOhgiyHipc6QEie%2Ffile.excalidraw.svg?alt=media&amp;token=252fe73f-bcfa-4381-a3c1-3e7086c01947" alt="" class="gitbook-drawing">

* When history tracking is enabled, user can see history of actions executed on the kanban in the "History" tab of the Debug Console. History tracks execution of actions and action groups that were triggered by card dragging. The data represented in history entries contains:
  * Card name (useful when Kanban has more than one Card)
  * Object (ID of record which is represented by dragged Card)
  * Source Column (name of the Column where Card was dragged from)
  * Target Column (name of the Column where Card was dropped to)
  * Status (state of action / action group execution process)

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FJGmhL9EvP9fpKiWjSwRg%2Ffile.excalidraw.svg?alt=media&amp;token=8eca0c80-3af7-46ad-be29-459c0dd2247b" alt="" class="gitbook-drawing">

* History entries can be deleted - several or all together. Check checkboxes at entries to be deleted and click "**Clear**" button to delete selected, or click "**Clear All**" button to delete all history:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FiBg6qFauL356SKgj37IM%2Ffile.excalidraw.svg?alt=media&amp;token=358ca23a-bf86-464a-86c9-88042a70ac77" alt="" class="gitbook-drawing">

* For each tracked history event (entry) user can see list of executed actions. Click on history entry submenu button <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F3yJk7arYKx9j7wsPPyBH%2Fimage.png?alt=media&amp;token=611d5968-328e-4939-99d4-3ff27add3c67" alt="" data-size="original"> and select "**Show Actions**" menu item:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FWXzN6zZ0CuWroqoNDzZA%2Ffile.excalidraw.svg?alt=media&amp;token=c78b00ef-5ca4-4a77-a505-b626d0a45abe" alt="" class="gitbook-drawing">

* An **Actions** popup will be shown. There is a list of actions and action groups with their types, names and times when execution has been finished. The order of this list corresponds to order which actions were executed in:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FljFSqmp9Caf03t5Bhh6F%2Fimage.png?alt=media&amp;token=87cde198-06b3-43a2-885b-e70f604c7ec5" alt=""><figcaption></figcaption></figure>

* For each tracked history event (entry) user can see changes made in variables. Click on history entry submenu button and select "**Show Variables**" menu item:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FgNp3NYU7c2lNV2Ioqdpt%2Fimage.png?alt=media&amp;token=08e4c26c-733a-456c-9f70-f0bf2d6b1d5d" alt=""><figcaption></figcaption></figure>

* A **Variables** popup will appear. It will show the list of existing variables with their names and values that were set after execution of action(s) investigated in the history entry being revised:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FQnCGIuTVUFQJyu9Ofy8I%2Fimage.png?alt=media&amp;token=45ab540c-9930-43bc-bb7a-4a1278fb191a" alt=""><figcaption></figcaption></figure>


# How to Work with Filters and Orders

### Standard Mode

Filters and orders allow users to set specific criteria that displayed cards should match and their sorting. In the Standard mode filters and orders are applied to all columns which have the same data source (for kanbans with only one data source - to all columns).

Filters and orders are set and applied separately for each column. They can be stored as Kanban views and selected to be applied together for the whole dashboard.

Also they can be stored as Filter Templates suitable for future re-use (see below).

On the Kanban click Filters button <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FPUnUC1R3Ozd144YH26tS%2Fimage.png?alt=media&amp;token=d06250ab-2a3c-4887-bf8b-9ec567bc3b1b" alt="" data-size="line"> to open Filters sidebar.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FZgAxaoRdolYxUNzUmW6D%2Ffile.excalidraw.svg?alt=media&amp;token=f7bd1edd-8dd2-43b6-8349-7d7bbfe867a7" alt="" class="gitbook-drawing">

#### Configuring Filters

* Select an Object in the proper picklist. <mark style="color:red;">Note: this picklist is shown only if there are columns with different</mark> [Data Sources](/standard-kanban/configure-column/how-to-configure-column-data-source) <mark style="color:red;">in the kanban and/or</mark> [Custom Filters](/standard-kanban/configure-kanban/how-to-configure-kanban-custom-filters) <mark style="color:red;">are configured. For kanbans with only one Data Source and without Custom Filters this picklist will be absent.</mark>

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F7rUcU4s79asbVxdwcoYW%2Ffile.excalidraw.svg?alt=media&amp;token=6b084557-4dba-4821-81b0-be6cb067c1ca" alt="" class="gitbook-drawing">

* Click "Add Filter" link in the "Filters" section header or the same button in the section (it is shown if no filters have been added yet)
* Select a Filter Source (Object or Custom filter set for it):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FFQqN3QEhEUahd40QtlEj%2Ffile.excalidraw.svg?alt=media&amp;token=73a5a587-261d-4933-80c3-1a2ff9591352" alt="" class="gitbook-drawing">

{% hint style="info" %}
Source is a set of object fields allowed to select, and columns to apply these selections for. Source can be:

* **system** - matches SObjects selected as data source for columns
* **custom** - configured by dashboard administrator (see below)
  {% endhint %}

After Source has been selected, you need to set a filter criterion.

* Select a **Field**. An "**Operator**" picklist will appear; its content will depend on Field selected.
* Select necessary operator and set the **Value** in the proper field.
* Click "**Add**" button to add filter criterion to selected columns:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FYYkQJ8IpNd46RaAqRAbG%2Ffile.excalidraw.svg?alt=media&amp;token=479e81b9-86fd-4c33-ac09-c570ddab63ab" alt="" class="gitbook-drawing">

User can add more filter criteria. Their amount will be shown in the header:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fbl9M7l9Mz1trOUbHkF5A%2Ffile.excalidraw.svg?alt=media&amp;token=a790f0ec-5754-48bd-bbb1-382990176d69" alt="" class="gitbook-drawing">

{% hint style="info" %}
If you add a filter which asks for some value, and this value is empty, these filters will be ignored. You should use "is null / is not null" operators to filter by empty values. System will show a hint about this, if you add a filter with empty value.
{% endhint %}

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FqlN5lNa74c2GQd4I7iR0%2Ffile.excalidraw.svg?alt=media&amp;token=25240868-ac35-4275-aff5-a1940926200f" alt="" class="gitbook-drawing">

Now user can:

* **Change** filter criterion value (example: "Mechanical")
* **Edit** filter criterion&#x20;
* **Delete** filter criterion&#x20;
* **Clear** all filters to show all records
* **Apply** specified filters
* Specify fliters logic (see below)

If add more than one filter criteria to the same column, user gets possibility to combine them with logic operators. The proper form will appear. Set the logic (place filter criteria numbers in brackets), e.g. {1} or {2}. By default all filters are applied with "AND" logic, i.e., each entry must match all filters.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F2Bz0uWaF4MU2DcMsxk9s%2Ffile.excalidraw.svg?alt=media&amp;token=66cd90df-d329-4505-923d-4308ef6e10c2" alt="" class="gitbook-drawing">

User also can add a sorting order to column views. Click "Add order" link or button (in orders section, if there are no orders added yet):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FW50zH21a2u6aPsfJ2S82%2Ffile.excalidraw.svg?alt=media&amp;token=8dd82f4c-4de4-413a-9134-b3ceb92859aa" alt="" class="gitbook-drawing">

An order form will be displayed. Select source (in the same way as for filters), and field and order type (ascending/descending). Click "**Save**" to add order to the view or "**Cancel**" to cancel.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fjpuv9adqnLDFRP4O2VhA%2Ffile.excalidraw.svg?alt=media&amp;token=8d1b0f0e-d7b9-4ef5-9d66-9bcca404699a" alt="" class="gitbook-drawing">

You can add more sorting orders to get items sorted by secondary (tertiary, etc.) fields. All orders will be displayed in "Orders" section:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FefyBoFSU8sOg2nX1wXnH%2Ffile.excalidraw.svg?alt=media&amp;token=1abd1ec2-dd0a-4a64-b197-f0cfaa6966cb" alt="" class="gitbook-drawing">

### Advanced Mode

Advanced Mode enables individual filtering and sorting settings for each column separately. Toggle this mode on by clicking a proper toggler:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F8UIllumHvo6mm5Lf3IdE%2Ffile.excalidraw.svg?alt=media&amp;token=dd4db3b3-95a6-4635-8473-25a9c7749d98" alt="" class="gitbook-drawing">

In Advanced mode a column picklist is shown at the top of sidebar. User should select a column to filter it. After column is selected, user should select a Source, field, operator and value (in the same way as in Standard mode).&#x20;

{% hint style="info" %}
If some filters and orders were added in Standard mode, they will be added to each column with the same Data Source in Advanced mode.
{% endhint %}

Then user can sepcify which columns configured filter should be added to. An additional subsection is shown under the filter criterion form. Click it's header to expand and select other columns to apply filter to (note that column selected previously will be already checked there):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FX4RBAi9zArsem5Fbxn5u%2Ffile.excalidraw.svg?alt=media&amp;token=126924b6-9952-49c1-967f-72791799c62a" alt="" class="gitbook-drawing">

Select columns with checkboxes and click "Save" to apply changes.

Filter will be shown in the sidebar. If filter is set to be applied not for all columns, proper information will be shown (mouseover a link to see which columns filter will be applied to):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FZG08cjykRf6F5VHkqaJR%2Ffile.excalidraw.svg?alt=media&amp;token=20b40bcb-bf74-4fef-b78b-9f834634e1dd" alt="" class="gitbook-drawing">

### Manage Filters and Orders

User can save configured filters and orders for further usage as a **View** (see below).

{% hint style="danger" %}
Filters and orders that were not saved will be lost on page reload or clear.
{% endhint %}

Newly configured filters based on default "All Records" one can be saved as new **Views** only. Click menu button and select "**Save as**..." menu item:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FCFWwy3UtvvdaKl1Xy3Bh%2Ffile.excalidraw.svg?alt=media&amp;token=4e9e0154-dbf2-459e-9ff3-a131f4f17115" alt="" class="gitbook-drawing">

Enter new View name and click "Save":

{% hint style="info" %}
Check "Save this view as a template for future use?" checkbox if you want to save selected filter/sorting as a Template (see below) instead of applicable View. In this case an optional "Template Description" field will be shown.
{% endhint %}

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FlOs7V2rRNeKni5vyhDc7%2Ffile.excalidraw.svg?alt=media&amp;token=371f6947-2409-4d8e-b4f6-e3acd1ac724b" alt="" class="gitbook-drawing">

New Filter will appear as a View at the Kanban Views Menu. Also it will be applied to the Kanban:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVy3XxYOB36bo4DYKaEIx%2Ffile.excalidraw.svg?alt=media&amp;token=acff80b4-dc8a-47a9-b84c-0dae388ef887" alt="" class="gitbook-drawing">

Now user can:

* select this View to apply a set of filter criteria and sorting order quickly
* edit filters, orders and save this View or save as another view&#x20;
* make this View default
* share this View (see below)
* delete this View

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FIsjzwsq29dgHCw1LJyhS%2Ffile.excalidraw.svg?alt=media&amp;token=788306aa-82bb-48bb-b824-2684424de3b2" alt="" class="gitbook-drawing">

### Sharing Views <a href="#sharing-filters" id="sharing-filters"></a>

Views can be shared using standard Salesforce sharing mechanism.&#x20;

Click "share" button in Filter menu to open Sharing form page. Click "Add" button to create a new sharing. Select necessary users/roles/groups/etc. and click "Save":

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FR5k0vfqhd7UMAxvwT5W8%2Ffile.excalidraw.svg?alt=media&amp;token=0b2e012f-02a0-450a-875b-9e536091d933" alt="" class="gitbook-drawing">

To share filter with multiple users you can create a public group, add users to this group and use it as a source record of new sharing setting.

### How to mark filter as default for users programatically

Below script can be used to mark filter as default for the list of users.

```javascript
String data = '{"defaultView":"filterName"}'; // JSON string, replace 'filterName' with a name of filter that needs to be set as default
String kanbanId = 'kanbanId'; // id of Kanban filter belongs to
List<User> users = [select Id, Name from User where Name = 'System Admin' or Name = 'Test User']; // select users filter will be shared with
List<FLX_KB__KanBan_Config_Custom__c> configToInsert = new List<FLX_KB__KanBan_Config_Custom__c>();
for(User u : users)
{
   configToInsert.add(new FLX_KB__KanBan_Config_Custom__c(FLX_KB__Assignee__c = u.id, FLX_KB__Data__c = data, FLX_KB__Source_ID__c = kanbanId, FLX_KB__Type__c = 'FiltersConfig'));
}
if(configToInsert.size() > 0) insert configToInsert;
```

### Configure custom sources

Dashboard administrators can define their custom filter sources with restricted sets of fields. This can be useful in situations when it is not necessary to give user all object fields.

Open [Kanban editor](/standard-kanban/configure-kanban/how-to-configure-kanban-custom-filters) and click "**edit**" link next to "**Config**" label at the right sidebar and go to "**Filters Configuration**" tab. Click "+" button to add a filter:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FP2PUzqcwm6gCPh8FDlnE%2Ffile.excalidraw.svg?alt=media&amp;token=1aeb10e8-e2a1-4941-8a2a-c2cb9ed5a99e" alt="" class="gitbook-drawing">

A popup will appear. On the "**Basic configuration**" subtab of it:

* specify the filter source **Label** (that will be shown in the sources picklist on the Kanban)&#x20;
* set filter source **Name**&#x20;
* select **Source Type**&#x20;

If the source type is **SObject**, a "Source Object" picklist will appear; select a source object. Available source objects are the same as were configured for the kanban columns.

Select **Fields** from the **Source Object**, that will be available for user to select in filters:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Ff41oF0rBFIRC5uSGG1WE%2Ffile.excalidraw.svg?alt=media&amp;token=677dc59c-20ec-4305-914c-99d752f6d65c" alt="" class="gitbook-drawing">

Go to "Availability Configuration" subtab and select columns which this source will be applicable for:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Ff7OmFwcMwSKi6N3aNWaq%2Ffile.excalidraw.svg?alt=media&amp;token=80420688-68cd-49f9-8894-d6053b9aa8b9" alt="" class="gitbook-drawing">

Save filter, filters configuration and kanban. Now when user opens filters and selects this custom source, he will be able to select fields and columns from restricted sets.

If the **Source Type** is Picklist or Static Text, administrator should configure some **Apex** properties. He should specify **Title**, select available **Operators**, choose **Value** and configure it:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FLXxvekQAC9FKqii7Lpwp%2Ffile.excalidraw.svg?alt=media&amp;token=9a73ad2c-3295-4350-aca1-27acf5a7fa82" alt="" class="gitbook-drawing">

Availability configuration is configured in the same way as for **SObject Source** filters.

### Transmitting Filters to Other Places

User can take filters currently applied to column(s) and pass them to other place where they are needed.

For example, we have a Kanban that shows Opportunities of some specific delivery/installation status in every column, and we want to show all entries related to each column in separate list. We do:

Create a form named "Opportunity form"  with these elements:

1. Variable of String type with this value: **`FORMULA[IF(ISBLANK({$FormParameters.filters}), '', ' and ' + {$FormParameters.filters})]`**
2. List that has these properties:
   * Source Object: **Opportunity**
   * Conditions: **DeliveryInstallationStatus\_\_c = '{$FormParameters.dis}' {$Form.$Variables.filters}**
3. Add some static text which will contain **{$Form.$Variables.filters}** text - this will allow to see filter criteria actually passed to the form.

Create standard kanban, add 3 columns there. Columns should have these properties:

* Data Source: **Opportunity**
* Conditions: **Delivery/Installation Status equals "In progress" / "Yet to begin" / "Completed"** (different for each column)

Add a cell in each column header, with these properties:

* Type: **Text**
* Value: **{$Column.Name}**
* Handler with these properties:
  * Type: **Form**
  * Value: **Opportunity form**
  * Open in: **New Window**
  * Parameters:
    * filters= **{$Column.Filters}**
    * dis = **"In progress" / "Yet to begin" / "Completed"** (different for each column)
    * mode = **edit**

Add a card to represent opportunities (with name, Delivery/Installation Status and Stage fields).

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FvTcj6H5sa5P5F9Pl6QVm%2Fimage.png?alt=media&amp;token=26cebd7a-f91a-4fd9-ba58-26c925bc379a" alt=""><figcaption></figcaption></figure>

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FXu5ZYHlO39aonaWCzreA%2Ffile.excalidraw.svg?alt=media&amp;token=a6e6471c-59ce-47a5-9d85-9ccdc2399257" alt="" class="gitbook-drawing">

Save and open the newly created kanban. Click on Filters sidebar and set some filters and filter logic. Apply the filtering set.

Click on the header of the column which is affected by these filters. Form will be opened in the new tab and will show the full list of opportunities matching these criteria:

* Delivery/Installation Status is equal to form handler parameter "dis"
* Stage is matching the filters set (StageName = "Closed Won" OR StageName = "Qualification") - that was the purpose of this example:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Ft8Y5j3EYoC26ni3UWsMD%2Fimage.png?alt=media&amp;token=8da36aa9-febe-48e9-876c-e89d5a7f5717" alt=""><figcaption></figcaption></figure>


# Howtos and Best Practices

<table data-view="cards"><thead><tr><th align="center"></th></tr></thead><tbody><tr><td align="center"><a href="/standard-kanban/howtos-and-best-practices/how-to-configure-communication-between-kanban-and-form">How to configure communication between Dashboards</a></td></tr><tr><td align="center"><a href="/standard-kanban/howtos-and-best-practices/how-to-configure-communication-between-kanban-and-form">How to configure communication between Dashboard and Form</a></td></tr><tr><td align="center"><a href="/standard-kanban/howtos-and-best-practices/how-to-display-different-layouts-for-the-same-kanban-card">How to display different layouts for the same kanban card</a></td></tr><tr><td align="center"><a href="/standard-kanban/howtos-and-best-practices/how-to-design-kanban-for-your-needs">How to design kanban for your needs</a></td></tr><tr><td align="center"><a href="/standard-kanban/howtos-and-best-practices/what-inactive-column-can-be-used-for">What inactive column can be used for</a></td></tr><tr><td align="center"><a href="/standard-kanban/howtos-and-best-practices/how-to-add-a-users-profile-picture-to-a-kanban-card">How to add a user's chatter profile picture into the Kanban card</a></td></tr><tr><td align="center"><a href="/standard-kanban/howtos-and-best-practices/how-to-add-an-image-as-a-background-to-a-kanban">How to Add an Imange as a Background to a Kanban</a></td></tr></tbody></table>


# How to configure communication between Kanbans

There are two ways for kanbans to communicate:

* initialize a kanban with input variables, styles, and filters
* call Kanban API methods

### Input variables, initial filters and styles

[Input variables](/composite-kanban/howtos-and-best-practices/how-to-pass-variables-between-parent-and-child-kanbans#input-variables) can be set:

* to a child kanban from the parent (composite kanbans)
* to any kanban by calling "Navigate to Kanban" API method
* to any kanban by following a properly constructed link

Initial [filters](/standard-kanban/using-kanban/how-to-work-with-filters-and-orders) can be set on a kanban by calling "Navigate to Kanban" API method.

Initial CSS Styles can be set on the kanban container by following the properly constructed link.

### Kanban API methods

Kanbans have API methods allowing interactions. The following [Kanban API methods](/standard-kanban/using-kanban/how-to-use-kanban-api-actions) can work with kanbans specified by their IDs or API names:

* Refresh Kanbans
* Refresh Columns
* Show Columns
* Hide Columns
* Refresh Card Layout
* Open Kanban
* Update Variables


# How to configure communication between Kanban and Form

The communication between Kanban and Form can be divided into 2 directions:

* from Kanban to Form
* from Form to Kanban

### Kanban to Form communications

This direction of communications can be implemented by using the following features:

* Triggering an event (like button click) which has a [handler of "Form" type](/standard-kanban/tools/configuring-handlers#form) with custom parameters. This shows a form in the popup. A called form should get these parameters and can do different thing depending on them.\
  Example:
  * User can have a form with a long text;
  * This text has a conditional style, that shows it when Form parameter named "ShowText" is equal to "yes", and hides in other cases;
  * User adds handlers to elements on Kanban Cards, that will show this form for current record. One of these handlers calls a from with "ShowText" = "yes" parameter, and other with "ShowText" = "no";
  * Thus, user communicates with form and asks it to show or hide the text element.<br>
* Triggering an event which has a handler of "Form API" type with or without custom parameters. This handler required ID of Form where necessary Form Action is, and name of the Action on this form, that will be executed. This will work when Kanban and Form are on the same page (e.g., [integrated into the same Lightning Page](/standard-kanban/using-kanban/how-to-incorporate-a-kanban-into-a-lightning-page)).<br>
* Triggering an event which has a handler of "Action" type with or without custom parameters. The action should be of "Call Apex" type and should call proper Apex Class with the necessary parameters, where can pass the own parameters got from the Kanban. Ask an administrator of your organization for list of available Apex Classes and their properties.

### Form to Kanban communications

This direction of communications can be implemented by executing the following actions:

* Actions of Kanban API type ([see proper article](/standard-kanban/using-kanban/how-to-use-kanban-api-actions)):
  * Refresh Kanbans
  * Print Kanban
  * Refresh / Show / Hide Columns
  * Refresh / Hide Layout Panel
  * Update Variables<br>
* Global actions:
  * [Update Variables](/composite-kanban/howtos-and-best-practices/how-to-pass-variables-between-parent-and-child-kanbans) (useful when some calculations with variables should be done, because passing variable values via Kanban API method does not allow any formulas).


# How to display different layouts for the same kanban card

Kanban can display different layout tabs for the same card depending on what cell has been clicked by user.

* Create kanban variable that will toggle layout types:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FEHt2GabA7vky1MEYlMic%2Ffile.excalidraw.svg?alt=media&amp;token=dbdd0786-d68d-4ddc-bbed-bc29f6275567" alt="" class="gitbook-drawing">

* In Card Layout settings  set 'Layout Body' to Standard (Body Configuration tab):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FId6OBGBWX9aszqMIDxfl%2Ffile.excalidraw.svg?alt=media&amp;token=9f12da74-3d51-48dd-9aa5-4b2ca5950687" alt="" class="gitbook-drawing">

* Go to "Tabs Configuration" and create 2 Layout tabs.
* Set conditions to display each tab using variable you created:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVtFf4UrCLijECQIXtwOU%2Ffile.excalidraw.svg?alt=media&amp;token=8f9936fa-5dd5-403c-9ccf-0a8cc045bf72" alt="" class="gitbook-drawing">

* On the Card Compact layout choose cell that will handle mouse click ("onClick" event) to display specified layout tab:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FJbNOcNbFFwZOpf2RsoV8%2Ffile.excalidraw.svg?alt=media&amp;token=6a988d4a-ad57-4a08-9099-a85e6748daef" alt="" class="gitbook-drawing">

* Add handlers for "Account Name" cell:

1. "Update Variables" handler sets "2" value to "layoutType" variable, which means that click on Account Name will load layout's "Tab 2" tab (based on layout tabs conditions)
2. "Refresh Card Layout" handler:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FrjEvXiuayqnqSdPYbm2n%2Ffile.excalidraw.svg?alt=media&amp;token=5ea3ca04-b018-4d56-a5c7-c8606bd356f5" alt="" class="gitbook-drawing">

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FFjGleHvzHl0xT5BtYMRy%2Ffile.excalidraw.svg?alt=media&amp;token=6f0fb702-0b31-40e9-83de-88c9f847074c" alt="" class="gitbook-drawing">

* Save Kanban.

Based on the setup above card layout types will switch from 'Tab 1' to 'Tab 2' tab each displaying separate KanBan Form based on what cell user clicks.


# How to design kanban for your needs


# How to colorize cards

One of basic ideas of Kanban is an easy visual distinguishment of cards, and the fundamental way to do this is placing them into different columns. But what if you need to differ cards that are in the same column? And you want to do it without reading texts and clicking buttons? In this situation you need some visual highlights. Maybe several...

Let's go through a simple process of doing this.

For example, you have a kanban that is configured on "Issue" object and has default design. Issue cards are put in columns by their State:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FSyh6IbOx53SkKcvj30OF%2Ffile.excalidraw.svg?alt=media&amp;token=b3ebb642-f0a3-4304-8621-79f534697bd5" alt="" class="gitbook-drawing">

In this newly created kanban all Issue cards look the same. But issues have several properties, that can be easy visually indicated without adding more text to be shown.

### First, let's indicate an issue type:

* This property is useful, but not the most significant - so, we can indicate it with something small, e.g., card border.
* It has not many values available ("Task" and "Bug") so we can use a small number of colors to differ them.

Open a Card Compact Layout Editor and expand "Styles" section of a Card itself. Add a style proerty:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F5LpsdPxiUBV3zg5buPEy%2Ffile.excalidraw.svg?alt=media&amp;token=453cb254-c66d-4df9-83a3-010ac9b3c891" alt="" class="gitbook-drawing">

Set style property name to "border-left" and click <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FXupkoygv7XdNX2B5MsIA%2Fimage.png?alt=media&amp;token=67640abb-77b3-41ef-8186-97030baa213f" alt="" data-size="line"> button to open formula builder to edit a property value. The typical CSS style for this property looks like "`7px solid red`", but we need to set color depending on issue type.&#x20;

{% hint style="info" %}
In this case we can use simple way "***If Issue type = "bug" make border red, otherwise make it green"***, but this is not the best idea: if there are will be issues with some other type (e.g., you will add type = "idea" in the future), or "type is not a mandatory field and there can be issues without type at all).&#x20;

So, let's leave "if/else" for fields with guaranteed two-way choices, and use "Case" [function](/references/functions/logical).

Do not forget to wrap function in "`FORMULA[]`" expression.
{% endhint %}

Type "`7px solid FORMULA[]`" and add the following code in square brackets:

```apex
CASE(
  {Issue__c.Type__c}, 
  'Bug', 'red', 
  'Task', '#3fba3f',
  '#DDDDDD'
)
```

{% hint style="info" %}
You can wrap lines and add indents in the formula builder, this will not affect system functioning.
{% endhint %}

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FWOamXvWom53dyUPey8uw%2Ffile.excalidraw.svg?alt=media&amp;token=363cb201-9386-4138-b6db-a65fdcd70356" alt="" class="gitbook-drawing">

In this example we have specified red border color for issues with "Bug" type, light green - for tasks, and light gray - for other types and issues without type:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FoFUMRmXuYWRRFT497FbT%2Ffile.excalidraw.svg?alt=media&amp;token=7b229328-320f-4f95-91ab-ff1dda812c9a" alt="" class="gitbook-drawing">

### Second, let's indicate issue late status:

* E.g., you need to make cards highlighted if issue is late.
* Assume this is the most significant criteria to you, so, you want to have whole card colorized.
* Issue is considered as late if it's Due Date is up to 3 days in the past, and you want to show it yellow. If issue is late more than 3 days, you want to show it red.

{% hint style="info" %}
Issues can have no Due Date at all, so, you need to handle this situation.&#x20;
{% endhint %}

Open card compact layout editor and add one more CSS property "background-color" into "Styles" section. Set this property value to the following code:

```apex
FORMULA[
  IF(
    ISBLANK({Issue__c.Due_Date__c}),
    'white',
    IF(
      DATEVALUE({$System.DateTime}) - DATEVALUE({Issue__c.Due_Date__c}) > 3,
      '#F7E2E7',
      IF(
        DATEVALUE({$System.DateTime}) - DATEVALUE({Issue__c.Due_Date__c}) > 0,
        '#f7f4e2',
        'white'
      )
    )
  )
]
```

Some explanation:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FesfNZq7zYCG6kvEiAaMh%2Ffile.excalidraw.svg?alt=media&amp;token=549268e8-8c3c-4b9a-8714-4462755bb307" alt="" class="gitbook-drawing">

And what your kanban will look like after this:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FmT2t5KZHpz3tZsGCcwcS%2Ffile.excalidraw.svg?alt=media&amp;token=0d903c4d-30b3-4473-a3da-e3eddecdeafe" alt="" class="gitbook-drawing">

### Third, let's indicate issue priority:

* E.g., you need to make cards indicate issues priority.
* Assume this is the quite significant criteria to you, so, you want to have noticeable indicator. A small icon will be good for this.
* Issue priority usually has the following values: Low, Normal, High and Critical. Also issue can have no priority set at all.

Open card compact layout editor and add an "Icon" component to the layout.&#x20;

Set value to "utility:priority" to display standard Salesforce icon (a flag).&#x20;

Set component title to `Priority: {Issue__c.Priority__c}`.

Set width to 16 pixels.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FZAUlFu7RdCruO9ocDyyN%2Ffile.excalidraw.svg?alt=media&amp;token=8ad44275-ae7a-4f02-ad3d-2fab42d6d17f" alt="" class="gitbook-drawing">

Expand "Styles" section of this icon and add a CSS property "color". Set this property value to the following code:

```apex
FORMULA[
  CASE(
    {Issue__c.Priority__c}, 
    'Low', '#2375D0', 
    'Normal', '#41AA53',
    'High','Orange',
    'Critical','Red',
    'white'
  )
]
```

"White" is a default color that will be applied to icon if issue has no priority (or some other one).

After these changes saved your kanban will look like this:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fn68sHFFXXnRjJWa4vDZ3%2Ffile.excalidraw.svg?alt=media&amp;token=f47fff96-feb4-4921-9d21-28177ad43378" alt="" class="gitbook-drawing">

Congratulations! You have kanban that displays several important properties just by colorization.

And you can design your cards in any desired way:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FU9WZ1XezoHbApYltAQA3%2Ffile.excalidraw.svg?alt=media&amp;token=1873bff1-0ba4-4ef2-bdaa-f6121857c04d" alt="" class="gitbook-drawing">


# How to add a quick-filter column

The main idea is to add a column that will contain specific cards which will:

* Represent some records related to main kanban. E.g., if the main kanban is created to manage Jobs, the quick-filter column can show a list of Account Managers.
* When clicked, turn on or off proper record that will be used to show/hide cards in main kanban. E.g., if click some Account Manager, the main kanban will show only Jobs that are related to account(s) which are having this selected person as Account Manager.

This column is quite useful, and here is a way how to make it:

* Add column and cards
* Design them
* Create necessary actions
* Use this actions and their results

### Example data

In this example we will use the following objects:

* Jobs = AVTRRT\_\_Job\_\_c

and the following assumptions:

* Kanban is already configured to have columns and cards on Jobs Data Source object, and have necessary design and features to work with them

### 1. Configuring column

* Add an additional leftmost column to the kanban.
* Open Data Source config for this column. Set it's Data Source to User (if no such object available to select, add it into allowed objects in the application Settings).
* Set order to Full Name, ascending.
* Leave Conditions empty.
* Set the following Conditions Logic: &#x20;

{% code overflow="wrap" %}

```sql
Id in (select AVTRRT__Account_Manager__c from AVTRRT__Job__c where AVTRRT__Account_Manager__r.IsActive = true)
```

{% endcode %}

In this query we specify that account managers should be active. You can set any other limits, e.g., account manager must have specific Profile, or should have first name = John.

{% hint style="success" %}
Conditions logic can contain formulas and database queries. And in this case you even can do not specify namely conditions because query already contains them.
{% endhint %}

* Save config.
* Rename column to "Account Managers".

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FzZx61BrLhsuoOpw9dL7U%2Ffile.excalidraw.svg?alt=media&amp;token=06a51d86-cb52-481c-a8e7-6c12ec153641" alt="" class="gitbook-drawing">

### 2. Configuring card

* Add a new card.&#x20;
* Set Data Source Type to `User`
* Set it's Layout to "--None--" - we need nothing to be shown when card is clicked:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVrvPEhCIUT5IoWJGQgZz%2Ffile.excalidraw.svg?alt=media&amp;token=b838d949-8267-40b8-ad3d-71c3da49224e" alt="" class="gitbook-drawing">

* Edit Compact Layout of the card.
* Make Card have two elements:
  * Text element with `{User.Name}` in Value and Title
  * "Clear" button - an element of "Icon" type with `utility:clear` in Value and `Click to remove {User.Name}'s records from displayed` in Title

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FXDY8hSfwyT43vZQxfeGD%2Ffile.excalidraw.svg?alt=media&amp;token=522d59d8-5e92-4b03-8844-58d57b79dea8" alt="" class="gitbook-drawing">

### 3. Set cards visibility

* Open Column Junction settings for each of already existing cards in a newly added column.
* Turn "Visible in this column" off for each.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F3kcyXOBnDiuVTCpUfaRl%2Ffile.excalidraw.svg?alt=media&amp;token=efbc017f-f152-4c5a-b306-5fcac4b58f26" alt="" class="gitbook-drawing">

* Turn off visibility of a newly added card in all old columns in the same way.

Let's save our kanban and take a first look at new column:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fm9qtbEDfQLz0WhecAzmk%2Ffile.excalidraw.svg?alt=media&amp;token=2ab8f549-0bbd-49a4-ac7b-f05ca1c1e35a" alt="" class="gitbook-drawing">

### 4. Set variable to store list of selected account managers

We need to remember which account managers are selected - let's store them in the variable named `selectedAcctMgrs` (don't forget about variable name lenght is limited to 20 symbols).&#x20;

Because this variable should store more than one account manager, it should be an array. So, set it's default value to an empty array `[]`.

### 5. Configure action that will update list of selected account managers

Go to "actions" tab and create a new action with the following properties:

* **Name** = `Toggle Account Manager` (or what you prefer, this is not important)
* **Type** = `Define Variable`
* **Status** = `Active`
* **Execute** = `Always`
* **Variable Type** = `Text`
* **Variable Name** = `selectedAcctMgrs`&#x20;
* Insert the following formula to the **Variable Value**:&#x20;

{% code overflow="wrap" %}

```apex
FORMULA[IF(CONTAINS({$Variables.selectedAcctMgrs}, {$Variables.selAcctMgrID}), JSTRING(JREMOVE(JPARSE({$Variables.selectedAcctMgrs}, ','), {$Variables.selAcctMgrID})), JSTRING(JPUT(JPARSE({$Variables.selectedAcctMgrs}, ','), -1, {$Variables.selAcctMgrID})))]
```

{% endcode %}

{% hint style="info" %}

* `selAcctMgrID` is not a kanban variable, but an action-wide one. It will be passed as standard "`variables`" parameter to action.
* the formula above does the following:

  if list of account managers (`selectedAcctMgrs` variable) contains ID of account manager, that has been passed as `selAcctMgrID`  parameter, this ID will be removed from this list, otherwise it will be added there.&#x20;
* Result of this action will be passed back to kanban and a `selectedAcctMgrs` variable will be updated with it.
  {% endhint %}

### 6. Add handlers to Account Manager card

* Open Compact Layout Editor of newly created card again.
* Select **{User.Name}** element and add the following handler:
  * **Type** = `Action`
  * **Value** = `Toggle Account Manager`  (name of your action)
* Set Parameter **variables** to `{"selAcctMgrID":"{User.Id}"}`

Now we need to refresh kanban to get it shown filtered:

* Click <img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FyPfdQ429LbLhPZQdUj4O%2Fimage.png?alt=media&amp;token=7a925c5e-c83d-4289-96a3-a90eb27e38e3" alt="" data-size="line"> button to add a success handler to previous one.
* Set it's type to `Kanban API` and value to `Refresh Kanban(s)`.
* Set this handler parameters to **kanbans** = `{$KanBan.Id}` and **types** = `body`.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FOYh485h5QnJF8DJPGqdb%2Ffile.excalidraw.svg?alt=media&amp;token=cfa4896b-5510-464a-aef7-3092c728df8a" alt="" class="gitbook-drawing">

* Add the same handlers to "Clear" button.
* Save card Compact Layout and kanban.

### 7. Modify conditions in other columns

To get columns filtered, we need to consider selected account managers. To do this we can improve column conditions.

Assume in our example other columns (that have Jobs object as data source) have these conditions set:

* **Stage** = `Lead` (and other stage values in other columns)
* **Allocated** = true

and conditions logic is default empty, that means all conditions must be matched.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FwQFCxnjMmsg3Bg6Hbuzp%2Ffile.excalidraw.svg?alt=media&amp;token=9be038dc-a675-423d-82c0-3b84892c512f" alt="" class="gitbook-drawing">

Let's add a new condition to the column:

* **Field Name** = `Account Manager`&#x20;
* **Operator** = `in`
* **Type** = `Formula`
* **Value** = `{$Variables.selectedAcctMgrs}`

If we leave conditions logic default, system will always include this new condition in the query. This causes indesirable situation: when `selectedAcctMgrs` variable is empty (no managers selected), kanban will show no records at all. But we want to show unfiltered columns (all Job cards) in this case...&#x20;

So, let's modify column conditions. We need to consider our new third condition when `selectedAcctMgrs` variable is containing one or more IDs, but do not consider if it is empty (equal to `[]`). The conditions logic can be:

{% code overflow="wrap" %}

```sql
{1} AND {2} FORMULA[IF({$Variables.selectedAcctMgrs} = '{OPEN_SQR_BKT}{CLOSE_SQR_BKT}','','AND {3}')] order by AVTRRT__Account_Manager__c asc
```

{% endcode %}

Add the same condition and logic to other old columns.&#x20;

### 8. Add some design to indicate which account managers are already selected

Our filtering should work on this stage - just go to your kanban, click some account manager and wait for kanban refresh. But which managers have you selected? Nobody can say.&#x20;

Let's add some visual things to make it easier.

This style will make account manager card have gray background if proper manager is selected:

* Open card Compact Layout editor and go to "Styles" section of the card.
* Add a CSS rule with the following properties:
  * **Name** = `background-color`
  * **Value** = `FORMULA[IF(IN({User.Id}, JPARSE({$Variables.selectedAcctMgrs})),'#8999ab','transparent')]`

This style will make account manager card have white color if proper manager is selected:

* Go to "Styles" section of the **{User.Name}** element.
* Add a CSS rule with the following properties:
  * **Name** = `color`
  * **Value** = `FORMULA[IF(IN({User.Id}, JPARSE({$Variables.selectedAcctMgrs})),'#FFFFFF','inherit')]`

This style will make "Clear" button shown only if proper manager is selected:

* Go to "Styles" section of the **"Clear"** **button** element.
* Add a CSS rule with the following properties:
  * **Name** = `display`
  * **Value** = `FORMULA[IF(IN({User.Id}, JPARSE({$Variables.selectedAcctMgrs})),'flex','none')]`

### 9. Add a button to reset filtered column (clear all selected managers)

Selected account manager can be de-selected by clicking "Clear" button (or account manager name) on proper card. But if you have selected a lot of managers, it will take too long time to clear them all. Let's take care about this by adding a bulk clear button to column header:

* Open Config of "Account Managers" column and go to "Header Configuration" section.
* Add a text cell with column name (we need to show it, yes?) - set **Value** to `{$Column.Name}`.
* Add another cell with the following properties:
  * **Type** = `Text`
  * **Value:**
    * **Text** = `X`&#x20;
    * **Title** = `Clear Selected Account Managers`
  * **CSS Styles:**

{% code overflow="wrap" %}

```css
display: FORMULA[IF({$Variables.selectedAcctMgrs} = '{OPEN_SQR_BKT}{CLOSE_SQR_BKT}','none','block')];
border-radius: 20px;
color: #fff;
font-weight: 500;
cursor: pointer;
background-color: salmon;
text-align: center;
height: 20px;
max-width: 20px;
min-width: 20px;
```

{% endcode %}

* Add a handler to "X" button:
  * **Type** = `Kanban API`
  * **Value** = `Update Variables`
  * **Parameters**:
    * **kanbans** = `{$KanBan.Id}`
    * **variables:**
      * **name** = `selectedacctmgrs`
      * **value** = `[]`
* Add a success handler to previous one:
  * **Type** = `Kanban API`
  * **Value** = `Refresh Kanbans`
  * **Parameters**:
    * **kanbans** = `{$KanBan.Id}`
    * **types** = `All`

Now your kanban will look like this:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVOJZmmaMSKhHNjOvv326%2Ffile.excalidraw.svg?alt=media&amp;token=7fff8dab-55ff-4243-b978-c38f08c533bb" alt="" class="gitbook-drawing">

Congratulations!

You have successfully created a special column with special cards that will filter other columns when clicked.


# What inactive column can be used for

Inactive columns are normal columns that can have data source, conditions and cards. They are existing Flexi Kanban object records, that have IDs and other properties - but they are just not rendered in Kanban.

You can use them in all places where you need to act with columns, e.g., in Totals calculations.

E.g., you want to show total revenue amount on all accounts in the top of kanban. There is no way to get this number directly without doing some programmer's magic, but you can get any totals with standard Flexi Kanban function applied to a column that contains ALL records. So:

* Make a [column](/standard-kanban/configure-column/how-to-sonfigure-column-properties) that has no conditions (that means column include all records) with an Account object as a data source:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fx9jtfcavAukAnXQHQcyT%2Ffile.excalidraw.svg?alt=media&amp;token=b182c729-b4d9-49fa-b7cd-f64254733c60" alt="" class="gitbook-drawing">

* Get this column ID [using merge field picker](/standard-kanban/tools/using-merge-field-picker). Select context object "$Record" > Kanban Column > Id > %Column name%. Copy and save given column id for the future (e.g. at the field "Description" of this column), or in your favorite notes editor.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F930TnAhGk7wSVVAWwrKg%2Ffile.excalidraw.svg?alt=media&amp;token=c8a7d1cc-f47d-4821-be70-a35032f6450c" alt="" class="gitbook-drawing">

* Add a [cell](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons) to [Kanban statistics](/standard-kanban/configure-kanban/how-to-add-kanban-statistics) that will show some total amount, e.g. Total Expected Revenue

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FuXXCVgakINpF9EYgucH1%2Ffile.excalidraw.svg?alt=media&amp;token=d2b6e9cb-e215-4c43-952e-12cbb4fd1751" alt="" class="gitbook-drawing">

* Use this column's ID in a formula with [COLUMNTOTAL() function](/references/functions/system) that will return a total by "Expected Revenue" field calculated for this hidden column and enter this formula into that cell

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fwb8BLPFhPwi92VzIcBdk%2Ffile.excalidraw.svg?alt=media&amp;token=8cfd4411-2fe4-40db-86f0-5c65ff878a9b" alt="" class="gitbook-drawing">

* Apply created function and save kanban. Close kanban builder to see the result in the top of kanban:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FAeAywXRVqBd7ZYv6Ex2A%2Ffile.excalidraw.svg?alt=media&amp;token=39a8455f-be94-4300-b7d0-3c71e242e99b" alt="" class="gitbook-drawing">


# Tips and Tricks

### Drag Multiple Cards

User can drag multiple cards at the same time:

* At the Kanban press "Ctrl" key and click several cards one by one to make a multiple selection (a card layout will be displayed for first clicked card as usual, other cards will just be selected)
* Then click and drag any of selected cards into a target column.&#x20;

Actions configured for each card will be performed in the same way as if cards were dragged individually.

* You even can select cards form different columns
* If some of selected cards can't be dragged into desired column, they will be ignored


# How to Add a User's Profile Picture to a Kanban Card

{% hint style="info" %}
Adding a visual element like a user's profile picture directly onto a Kanban card can significantly enhance the user experience. It allows for a quick and intuitive understanding of record ownership, making your Kanban board more scannable and user-friendly. This guide will walk you through the steps to insert an Opportunity Owner's Chatter profile picture into a Kanban card.
{% endhint %}

Here is an example of what the Kanban cards can look like after implementing this customization:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fp6h6Zkneb2u2UKvu8GQi%2Fimage.png?alt=media&amp;token=a73c6599-e965-4ff4-b11a-3916e626af89" alt=""><figcaption></figcaption></figure>

**Step-by-Step Guide**

To add the owner's profile picture, we will add a new text field to the card layout and use CSS to set the user's profile picture as the background of that field.

**1. Add a Text Element to the Card Layout**

First, open the **Card Builder** for your Kanban board. From the **Elements** panel on the left, drag and drop a **Text** component onto the card canvas in your desired location.

**2. Configure the Text Element**

With the new Text element selected, the **Settings** panel will appear on the right. Make the following changes:

* **Type**: Ensure it is set to Text.
* **Value**: **Delete any existing value** in this field to make it empty. This is crucial as we only want to display the background image.
* **Width**: Set the width to 50 Percent (or adjust as needed for your layout).

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FGXmX8jF1P7QQegaLc6UZ%2Fimage.png?alt=media&amp;token=b51aa233-665b-4e53-aa86-88b14d0ce95b" alt=""><figcaption></figcaption></figure>

**3. Apply Custom CSS for the Profile Picture**

Now, we will add the custom CSS to pull in the user's photo and style the element.

* In the **Settings** panel on the right, expand the **CSS Styles** section.
* Add the following CSS properties by clicking the + icon for each new line:

| **Name**          | **Value**                                 |
| ----------------- | ----------------------------------------- |
| background-image  | url('{!Opportunity.Owner.SmallPhotoUrl}') |
| background-repeat | no-repeat                                 |
| min-width         | 48px                                      |
| max-width         | 48px                                      |
| min-height        | 48px                                      |
| max-height        | 48px                                      |
| background-size   | contain                                   |
| border-radius     | 48px                                      |

This CSS configuration will use the owner's small photo URL as a background image, ensure it doesn't repeat, set a fixed size for the container, and use border-radius to create a circular shape.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FofT9PU8fXU1s4oWn7hhK%2Fimage.png?alt=media&amp;token=4d31ae55-f075-4676-9c07-c640a934568e" alt=""><figcaption></figcaption></figure>

**Advanced Customization**

You can further enhance this feature with conditional logic for users who may not have a profile picture uploaded.

* **Fallback Images**: Use a formula in the background-image style to display a default avatar if the user's photo is not available.
* **Background Color**: Specify a background-color as a fallback. This color will be visible if the image fails to load or if the user does not have a profile picture.

By following these steps, you can create a more visually engaging and informative Kanban board for your users.<br>


# How to Add an Image as a Background to a Kanban

{% hint style="info" %}
Personalizing your Kanban board with a custom background image can transform a standard workspace into a more visually engaging and motivating environment. This guide will walk you through the simple process of adding a background image to your Kanban board, making your project management experience more unique and inspiring.
{% endhint %}

Here is an example of what the Kanban can look like after implementing this customization:

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FHGEOwesHOEf4gDqzWfAs%2Fimage.png?alt=media&amp;token=f6b3719e-dc9b-4c75-aeba-cdf0e0b16296" alt=""><figcaption></figcaption></figure>

#### **Before You Begin: What You'll Need**

To get started, you will need two things:

1. **Your Chosen Image:** Select a high-quality image that you want to use as your background.
2. **A Base64 Encoding Tool:** This is a free online tool that will convert your image into a text string.

#### **Step 1: Optimize and Prepare Your Image**

For the best performance, it's a good practice to optimize your image before uploading it. Large image files can slow down the loading time of your Kanban board.

* **Resize Your Image:** Aim for a file size that is appropriate for a background, generally under 1MB.
* **Choose the Right Format:** JPEG is a good choice for photographic images.

There are many free online tools available to help you resize and compress your images without sacrificing too much quality.

#### **Step 2: Convert Your Image to a Base64 String**

Once your image is ready, you'll need to convert it into a base64 string. This may sound technical, but it's a straightforward copy-and-paste process with the help of a [free online tool](https://www.google.com/search?q=free%20online%20base64%20image%20encoder\&client=app-vertex-grounding\&safesearch=active).

**What is Base64?**

Think of base64 as a way to translate your image into a language that web browsers can easily understand and display. It converts the binary data of your image into a long string of text.

**How to Encode Your Image:**

1. Navigate to a free online base64 image encoder. There are many options available, such as elmah.io or base64-image.de.
2. Upload your optimized image to the encoder.
3. The tool will generate a long string of text. This is your base64 string.
4. Copy the entire string to your clipboard.

#### **Step 3: Add the Background Image to Your Kanban Board**

Now it's time to apply your new background to the Kanban board.

1. Navigate to your Kanban board's settings.
2. Locate the configuration section for the board's appearance or styling. In the provided example, this is found under **Kanban Properties > Config > Edit**.\ <br>

   <figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FCwblmwIME0c9sPt4dHD0%2Fimage.png?alt=media&amp;token=a39b7e88-a6ab-4483-83e0-0e70075ad857" alt=""><figcaption></figcaption></figure>
3. Open the **Dashboard CSS Styles** settings.
4. In the CSS editor, you will add a new rule for the background image. \
   \
   You will need to add the following CSS rule name:&#x20;

   ```
   background-image: url('PASTE_YOUR_BASE64_STRING_HERE');
   ```

   \
   Make sure to replace PASTE\_YOUR\_BASE64\_STRING\_HERE with the entire base64 string you copied in the previous step. It should be enclosed in the single quotes within the url() function. \
   \
   Add additional CSS rules for positioning your background image as needed:<br>

   ```
   background-position: bottom center;
   background-repeat: no-repeat;
   background-size: 100% auto;
   ```

   <br>

   <figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F7w8JqSjLzSvzI976Ob6t%2Fimage.png?alt=media&amp;token=5f47978a-bc6b-4c10-8d67-0f7757ad353a" alt=""><figcaption></figcaption></figure>
5. Save your changes.

#### **The Final Result**

After saving your changes, your Kanban board will now display your chosen background image, creating a more personalized and visually appealing workspace.

By following these simple steps, you can easily customize your Kanban board and make it a more enjoyable and productive space for you and your team.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FqTP92MZwLmRfpu0LZJ9l%2Fimage.png?alt=media&amp;token=3d64b41a-7dee-4b10-8488-fb602b992cfa" alt=""><figcaption></figcaption></figure>


# Managing Personal Labels in Kanban

Salesforce introduced **personal labels** as a way for users to organize and track their records individually. You can read more about Salesforce’s standard implementation of record labels in the [official Salesforce documentation](https://help.salesforce.com/s/articleView?id=release-notes.rn_sales_features_core_record_labels.htm\&release=250\&type=5).

{% hint style="success" %}
**Flexi Kanban** takes this concept further by integrating personal labels directly into the **Kanban Board** experience.&#x20;
{% endhint %}

With Flexi Kanban, you can:

* View personal labels on your Kanban cards.
* Create new personal labels without leaving the board.
* Assign or remove labels from records using an intuitive context menu.
* Delete labels you no longer need.
* Customize label colors to make them visually meaningful and easier to scan.
* Filter and search for records by personal labels.

This article explains how to manage personal labels for records directly in Flexi Kanban.

### Displaying Labels on a Card

When designing a Kanban card layout, you can decide where personal labels should appear by dragging and dropping a corresponding element from the left panel onto the card layout canvas.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVTabXUkUvcP5YqjftVfU%2FScreenshot%202025-09-18%20at%204.10.44%E2%80%AFPM.png?alt=media&amp;token=c2274c12-6703-47cf-bf01-aea9aa4d0a14" alt=""><figcaption></figcaption></figure>

### Viewing Labels on Kanban Cards

Once configured, labels will appear directly on the rendered Kanban cards. For example, you might see labels such as **In Progress**, **Under Review**, or **Gold Level**.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FwkahihAjRwe45bzITLft%2FScreenshot%202025-09-18%20at%204.29.15%E2%80%AFPM.png?alt=media&amp;token=13f1005a-eaa1-4f92-a7de-c9cc9a72c54e" alt=""><figcaption></figcaption></figure>

### Managing Labels from a Kanban Card

To add, edit, or remove labels on a specific record:

1. **Right-click on the card.**
2. From the context menu, choose **Manage Labels**.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FtFuuGiFheiIO8FVXDKDM%2FScreenshot%202025-09-18%20at%204.16.02%E2%80%AFPM.png?alt=media&amp;token=dfc5cc36-4b59-4886-8dc6-5f51518c2caf" alt=""><figcaption></figcaption></figure>

### Assigning and Creating Labels

In the **Manage Labels** window, you can:

* Search and assign an existing label.
* Create a new personal label.
* Pick a **custom color** for your label (a feature unique to Flexi Kanban).
* Remove labels from the record.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F19v3Ps6f8BwqYneaRp39%2FScreenshot%202025-09-18%20at%204.32.36%E2%80%AFPM.png?alt=media&amp;token=75c8d072-9a6b-4d78-9ac5-fad1a235cf67" alt=""><figcaption></figcaption></figure>

### Filtering Records by Labels

Flexi Kanban also supports filtering boards by personal labels.\
This allows you to focus on specific work items across the board — for example, showing only records marked **In Progress** or **Under Review**.

<figure><img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FiWxh6UjgY7paFvz5AT9T%2FScreenshot%202025-09-18%20at%204.38.09%E2%80%AFPM.png?alt=media&amp;token=2535151a-8163-4a92-b334-3e2676f476cf" alt=""><figcaption></figcaption></figure>

### Why This Matters

Personal labels are a lightweight way for Salesforce users to organize their work without requiring admin setup. Flexi Kanban makes them **easier, faster, and more visual**, turning your Kanban board into a personalized command center.


# Introduction


# How to Create a Composite Kanban

Open Kanbans tab and click “New” button to launch a Kanban Creation Wizard:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fbmu7zPi1LUnb7JyUrDju%2Ffile.excalidraw.svg?alt=media&amp;token=6e190381-963f-420e-89d0-90acbb6e0bbf" alt="" class="gitbook-drawing">

* Select Composite Kanban type:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FYvnLwSMJpQYetF0kKWUY%2Ffile.excalidraw.svg?alt=media&amp;token=cb078cc3-e05c-4716-889d-a53fd7277bab" alt="" class="gitbook-drawing">

* Click "Next button to go to second step of wizard
* Select color theme
* Populate kanban name
* Type description (optionally):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FACn2JtU5MEyaLe3n2432%2Ffile.excalidraw.svg?alt=media&amp;token=5c3313dd-3f94-4c91-a385-78d8bfd1d4f5" alt="" class="gitbook-drawing">

* Click "Next button
* Select number of child kanbans and their layout. There are several basic suggestions; you can modify these settings later in the Kanban Builder, add more kanbans and set custom layout:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FmiXUKdqtER2U1H9KlfYp%2Ffile.excalidraw.svg?alt=media&amp;token=28f70258-25ae-4bc3-90a5-fd98c96d9d9d" alt="" class="gitbook-drawing">

* Click "Next" button
* Select children kanbans for each container:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F8US5YbheZLZQF96fTJTt%2Ffile.excalidraw.svg?alt=media&amp;token=eada218f-2191-412c-a68e-e797e3451d59" alt="" class="gitbook-drawing">

{% hint style="info" %}
You can omit children kanban selection in order to select them later.
{% endhint %}

* Click "Next" button
* Leave "Launch Advanced Kanban Builder After Wizard Completion" toggler on if you want to go further to advanced edit in Kanban Builder
* Review your Kanban summary information and click “Finish” button:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FrxZMIKVFzVY4TXrRz6Q8%2Ffile.excalidraw.svg?alt=media&amp;token=a7ca18f2-e12a-4981-90ef-91e753cf1653" alt="" class="gitbook-drawing">

After clicking "Save" you will be redirected to [Composite Kanban Builder](/composite-kanban/working-with-composite-kanban-layout) with newly created Kanban opened.


# Working with Composite Kanban Layout

After creation of a composite kanban, the Kanban Builder will open and it will contain one container. Hover mouse on container (1) - it will be highlighted:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FyplWOm7O7uZ9tRtV25Cw%2Ffile.excalidraw.svg?alt=media&amp;token=58fc4658-1594-482f-aafb-8959fc56d262" alt="" class="gitbook-drawing">

Click on highlighted area. Click on "+" markers to add containers:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FcO1dfB3pGgm7rfxf9Wwz%2Ffile.excalidraw.svg?alt=media&amp;token=71edbe42-5eec-44fd-97d1-08706c3e7bb4" alt="" class="gitbook-drawing">

By default container will be added at the proper side and both containers (existing and new) will take all available room together. Adjacent containers will get equal sizes:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FtOSsMGSCzIMYE8oYMmdH%2Ffile.excalidraw.svg?alt=media&amp;token=857d797c-74b1-4a7e-8994-0f668b01da90" alt="" class="gitbook-drawing">

If click on container, a "Container Properties" will be opened at the right sidebar:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FekPk5UcPieBWkbQUR3wT%2Ffile.excalidraw.svg?alt=media&amp;token=9c8902f3-8315-4eba-8481-8b77dfe57cda" alt="" class="gitbook-drawing">

Properties are:

* **Left** - position of the container relatively to left side of Kanban. Can be changed by Kanban admin if this container is not leftmost one.
* **Top** - position of the container relatively to top side of Kanban. Can be changed by Kanban admin if this container is not topmost one.
* **Width** - width of the container in % of Kanban width. Can be changed by Kanban admin if this container and at least one adjacent neighbor can be resized horizontally together.
* **Height** - height of the container in % of Kanban height. Can be changed by Kanban admin if this container and at least one adjacent neighbor can be resized vertically together.

Changing one property can cause changes in other:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fm6Qb3GaNVx94EvrjYL3l%2Ffile.excalidraw.svg?alt=media&amp;token=486e4070-241b-43b5-aca2-5272284a4514" alt="" class="gitbook-drawing">

{% hint style="info" %}
System will show available value ranges of these properties and will auto-correct them when user try to set them to impermissible values. Allowed values are depending on current containers layout.

If some properties are blocked it means that selected container has no place to expend/shift or can not be shrank without causing a gap.
{% endhint %}

{% hint style="warning" %}
If any of container properties will be out of permitted range, system will not allow adding new containers and show proper warning:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FoOCD6tyBt5laW8N8rQ20%2F1.png?alt=media&amp;token=74e147e0-b166-4b97-b470-e5b40ba3dc76" alt="" data-size="original">
{% endhint %}

Selected adjacent containers can be merge into one by clicking on "merge" link:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FuB2b8lAqDEe9c4dPt4v8%2Ffile.excalidraw.svg?alt=media&amp;token=0d771bff-595f-4a89-867f-0aa57d9d6cd4" alt="" class="gitbook-drawing">

Containers can be merged into one only when:

* resulting container will be rectangle
* all of them contain no more than 1 kanban

If containers can not be merged system will not allow it.

User can remove selected container(s) by clicking on button "Delete" on top of kanban. Sizes and positions of adjacent containers will be recalculated to get rid of possible gaps.

{% hint style="warning" %}
Note: not all gaps can be removed automatically. In this case system will not allow to delete container and show proper warning message.
{% endhint %}

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FN0yFb1e6xZNT2h5seqST%2Ffile.excalidraw.svg?alt=media&amp;token=e42f59c3-79c4-482b-9583-8cc87bb2d1b4" alt="" class="gitbook-drawing">


# Configuring Parent Kanban

When you go to Composite Kanban Builder after creation of a new kanban, go to Composite Kanban properties. Click "create" link at the right sidebar (this link can be called "edit" if configuration has been saved already at least once):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FSb8XjQQOT87CRdfIgkID%2Ffile.excalidraw.svg?alt=media&amp;token=5650c32b-7bcf-46ed-9f39-1835ef35467e" alt="" class="gitbook-drawing">

Kanban configuring dialog popup will be opened:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F3xVQqhu8E54rzvGhg7hn%2Ffile.excalidraw.svg?alt=media&amp;token=977ec20c-a089-4a8d-9021-37e378f88b89" alt="" class="gitbook-drawing">

Configuration of parent composite kanban parts is the same as for a [standard kanban](/get-started/how-to-build-a-simple-kanban-using-creation-wizard-abilities).


# Configuring Child Kanban

[Create or edit](/composite-kanban/introduction/how-to-create-a-composite-kanban) a parent composite kanban, [configure it](/composite-kanban/working-with-composite-kanban-layout/configuring-parent-kanban), set the composite kanban [layout](/composite-kanban/working-with-composite-kanban-layout), then click the selected container:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FpmgDBOl3I6KjfkrkGCmq%2Ffile.excalidraw.svg?alt=media&amp;token=7e197244-07cd-40d3-8e2c-2d8c49b45fe2" alt="" class="gitbook-drawing">

Select kanban from the list in the popup that will appear:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FXooix8iGkXd6z1xvW19B%2Ffile.excalidraw.svg?alt=media&amp;token=52f6f131-47d3-4be4-9eca-512f2d27364b" alt="" class="gitbook-drawing">

Name of selected kanban will appear in container and it's properties will be opened at the right sidebar:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fu95v9L0S2hxWsT3jfZA6%2Ffile.excalidraw.svg?alt=media&amp;token=086ba4df-a2f2-4654-9533-5d210421e0e6" alt="" class="gitbook-drawing">

All these properties are optional.

* By default title contains the name of selected child kanban. You can change this title - it will not affect the child kanban, just show another text in the kanban container.

{% hint style="info" %}
This can be useful when several containers have the same title due to the same child kanbans.
{% endhint %}

* Set API name if necessary. Hover mouse on "i" icon to see restrictions in the tooltip.
* Populate description, if needed.
* Check "Hide Columns Header" checkbox if you do not want to see columns and groups headers.

{% hint style="info" %}
Child Kanban Name (7) is a link that opens child kanban in editor in the new browser tab.
{% endhint %}

Input and Output relations will be shown after you [configure connections](/composite-kanban/connections-between-kanbans) with other child kanbans.

Set Input Variables if necessary.

Configure CSS Styles for child kanban container if needed.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FPcMA3Frvsvre1YSFz5ba%2Ffile.excalidraw.svg?alt=media&amp;token=182513d8-8cbc-4126-b679-2e1ba108550e" alt="" class="gitbook-drawing">


# Connections Between Kanbans

Composite Kanban allows you to drag cards between child kanbans. To manage this, you set relations between child kanbans. These relations are set for cards. Together, they form connections between kanbans.

To use connections, a composite kanban should have at least 2 [containers](/composite-kanban/working-with-composite-kanban-layout) with [child kanbans](/composite-kanban/working-with-composite-kanban-layout/configuring-child-kanban) configured. If you hover over any child kanban, an "Add Connection" icon will be shown:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FaYoaz3jVGbcanrl5XFZH%2Ffile.excalidraw.svg?alt=media&amp;token=a8d16e79-7ea6-4119-851c-3c5c8a544c1d" alt="" class="gitbook-drawing">

If you hover over this icon, a tooltip will be shown:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fwcg2merWGPC33TzfmjLL%2Ffile.excalidraw.svg?alt=media&amp;token=f40c5954-1567-4eb9-95fc-06f02749bab6" alt="" class="gitbook-drawing">

To start setting a connection, drag this icon to another Kanban container and drop it there:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FhinujwifNAqA9Eq5Rhg8%2Ffile.excalidraw.svg?alt=media&amp;token=ff9b49a3-ece9-4066-99c7-48cb9a5b72be" alt="" class="gitbook-drawing">

A "Configure Connections..." popup will appear. It will contain data for Source Kanban (which card will be dragged from) and Target Kabnan (which card will be dropped to). By default popup will contain:

* names of these Kanbans
* list of cards from Source Kanban

Each card will show a number of its connections:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FXWNltpwCR0nwYzSMzIdu%2Ffile.excalidraw.svg?alt=media&amp;token=0c4f49bc-d5fe-48ba-9d0e-ef82c7a54e2c" alt="" class="gitbook-drawing">

{% hint style="info" %}
Source and Target Kanbans names are links - if click them, proper Kanbans will be opened in Kanban Builder in the new browser tab.
{% endhint %}

Select card in the Source Kanban you want to configure relations to (realtions are the same as Column Junctions on standard dashboard). A list of Source Columns belonging to the Source Kanban will appear. Each column will show a number of it's connections:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fh6guLxfvpm4kVXGyboe9%2Ffile.excalidraw.svg?alt=media&amp;token=e82c7711-8b9e-48de-a2ec-62206cfc8f3e" alt="" class="gitbook-drawing">

If select a Column of the Source Kanban, the list of available Target Columns (belonging to the Target Kanban) will be shown. Each Target Column will show amount of Actions that will be executed by card dropping:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FfDUybGvv6Brp2ydSM1OI%2Ffile.excalidraw.svg?alt=media&amp;token=99984f0b-b534-4e78-b22f-0ae095326cf8" alt="" class="gitbook-drawing">

{% hint style="warning" %}
Each Source Column for each Card has the own list of Target Columns with own actions.
{% endhint %}

Check Target Columns where selected Card can be dropped from selected Source Column to. Badges with numbers of connectors will become yellow, and numbers of Actions will become red - this indicates that proper cards and columns have no actions set to their connectors:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F6DH81o1PDpgSLby9qZ6j%2Ffile.excalidraw.svg?alt=media&amp;token=9f2b7096-c0c8-49a6-b792-4af02b345e96" alt="" class="gitbook-drawing">

Select Target Column. A list of Actions set for this connection (Card - Source Column - Target Column) will be shown. By default it is empty. Also, Source/Target Drop Behavior forms will be displayed:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FlclOOT66bssTsPWcAMNN%2Ffile.excalidraw.svg?alt=media&amp;token=08e8c62d-2308-4462-977a-2701981280c9" alt="" class="gitbook-drawing">

{% hint style="info" %}
You can select a Target Column that was not checked. After adding at least one action it will become checked, thus, a connection will be set automatically.
{% endhint %}

Click "Add" link to add a new or existing Action or Action Group (this process is the same as adding [Actions on Standard Dashboard](/components/actions-action-groups)). You can add several actions by selecting them together. After being added Actions and Action groups will appear in the list. They can be rearranged by clicking ordering arrows and deleted. To delete actions check checkboxes near unnecessary actions and click "delete" link. Also, Actions / Action Groups can be edited by clicking "Edit" buttons:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FbvT9gvv5C8x9WOSoYoLY%2Ffile.excalidraw.svg?alt=media&amp;token=8baafc7c-f252-4e5b-89fa-019057c251de" alt="" class="gitbook-drawing">

Actions can be copied to another connections. To copy actions and action groups, select them with checkboxes and click "Copy" link . After this proper information will be displayed. Actions will be copied to built-in application clipboard:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fa0YU0Q8AaUN3kyEqWTpL%2Ffile.excalidraw.svg?alt=media&amp;token=400021f6-9924-4401-9d16-b0be4d506ffb" alt="" class="gitbook-drawing">

To paste copied actions first select necessary Target Column in necessary relation (it can be a connection between other kanbans too), then click "Paste" link. Actions will be pasted from app clipboard:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FoWDd9A1geGEt5KZbl78X%2Ffile.excalidraw.svg?alt=media&amp;token=87f188b5-dd82-469e-9113-39830ee5d311" alt="" class="gitbook-drawing">

If copy another actions, they will replace previously copied in the app clipboard. To clear the app clipboard click the proper link.

To set how should behave Source and Target Columns when card is dragged and dropped, select necessary behaviors in the proper form.

Behavior of source column can be set to:

* **Remove Card** - card will disappear from the source column
* **Refresh** - source column contents will be refreshed and the card will remain there
* **Remove Card and Refresh** - card will be removed from the source column; source column contents will be refreshed; if the record, represented by dragged card, still match the source column conditions, card will appear there again
* **Do Nothing** - source column will not change it's contents

Behavior of the target column can be set to:

* **Refresh** - target column contents will be refreshed
* **Do Nothing** - target column will not change it's contents

After connections has been set and saved, an Output Relations section of the Source Kanban properties sidebar will show it. If click the link representing the connection, it will be opened in "Configure Connections..." popup for editing:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FAjDeWGZLRSrV8N81OkSk%2Ffile.excalidraw.svg?alt=media&amp;token=f1cee9a9-79cd-4262-ad4d-a7c4f33933ef" alt="" class="gitbook-drawing">

The same connection will be also shown in "Input Relations" section of the Target Kanban properties sidebar:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FR5jWxAI15XLePPwLZMia%2Ffile.excalidraw.svg?alt=media&amp;token=fab30093-2fc0-442d-bcbe-187bf47a6f16" alt="" class="gitbook-drawing">

### Useful hints

If you have a composite kanban with several containers and they contain the same child kanban (for example, [Calendar Dashboard](/composite-kanban/examples/calendar-dashboard)), you do not need to configure connectors between each pair of containers. The system stores connections between kanbans, not between containers. For example:

* You have a composite kanban with containers A, B, C, D, E and F
* Containers A, B, C and D have child kanban X, and containers E and F have child kanban Y
* In this case if you configure connections in the direction A -> F, you make junction X -> Y and you do not need to duplicate it with other connections (A->E, B->E, B->F, C->E, C->F, D->E, D->F). And to make junction from Y to X (Y->X), you need to configure only one of the following connections: E->A, E->B, E->C, E->D, F->A, F->B, F->C, F->D.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FinB41vrWzvFn5jZaUP6C%2Ffile.excalidraw.svg?alt=media&amp;token=c36e89ec-2237-4939-8714-80288a59cbbc" alt="" class="gitbook-drawing">

If you configure:

* connections between containers that all are containing the same child kanban, and
* the child kanban has junctions and actions configured (like on [Calendar Dashboard](/composite-kanban/examples/calendar-dashboard))

you do not need to repeat these junctions and actions in the Connections popup. The only thing you need is to add actions to the junction between source and target column when they are the same. In a composite kanban, the same column can be a source and a target (in different containers). So, in the Calendar Dashboard example:

* actions for card dragging are configured in the child kanban
* junctions in the child kanban are set for all source columns to all target columns
* dragging from the source column to itself is not allowed within the child kanban
* the composite kanban has connections between the child kanban as source and the same kanban as target
* in these connections each source column is connected to one target with the same name and has proper action set, because dragging to other columns is already allowed in the child kanban


# Examples


# !! Calendar Dashboard

The Calendar Dashboard represents events in monthly calendar and allows to manage them by simple dragging. Here is how this dashboard can look like:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F5nDHjDIOPMI5BG1PWGXC%2Ffile.excalidraw.svg?alt=media&amp;token=3c4e4cc6-7a3e-496d-b583-5020cea7bcca" alt="" class="gitbook-drawing">

This Kanban is a [Composite Dashboard](/composite-kanban/introduction) with 5 [containers](/standard-kanban/configure-column/how-to-configure-column-container-and-filters); each of them contains the same [Standard Dashboard](/standard-kanban/getting-started), initialized with different [Input Variables](/composite-kanban/working-with-composite-kanban-layout/configuring-child-kanban).\
Columns in this dashboard represent days, and cards in these columns are corresponding to events. Dragging events from one column to another changes their  start dates. If click on event, its detailed data will be shown in the form, where it can be edited.

To make a such dashboard administrator should do actions listed below:

### &#x20;Make an Event Form

* [Set Card Layout](/standard-kanban/configure-card/how-to-configure-card-layout) to "Form".
* Click "+" button to add new Form. Create [new form](/components/forms/basics/form-building-overview) with these properties:

| Property              | Value                                                        |
| --------------------- | ------------------------------------------------------------ |
| Name                  | **Event form**                                               |
| Data Source Object    | **Event**                                                    |
| Multi Page Form?      | false                                                        |
| Show navigation panel | true                                                         |
| Buttons configuration | Check "Save" button for "Edit" mode only. Uncheck other.     |
| Header configuration  | <p><strong>{$Event.Subject}</strong> (for all modes)<br></p> |

* Add these elements to the form:

| #                                                                                                                                                                           | Type                     | Name                     | Title                      | Properties                                                                                                                                                                                                                                                                                                                                                     |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | ------------------------ | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1                                                                                                                                                                           | Section                  | section                  | <p><br></p>                | <ul><li>Columns: 2</li><li>Show on Edit page: true</li><li>Show on View Page: true</li><li>Scrollable: false</li></ul>                                                                                                                                                                                                                                         |
| 2                                                                                                                                                                           | Button                   | button                   | Close                      | <ul><li>Show on Edit page: true</li><li>Show on View Page: true</li></ul>                                                                                                                                                                                                                                                                                      |
| <p><strong>The following elements all should be added into section configured above.</strong> <br><strong>All these elements should be Data Source Fields:</strong><br></p> |                          |                          |                            |                                                                                                                                                                                                                                                                                                                                                                |
| **#**                                                                                                                                                                       | **Data Source Field**    | **Name**                 | **Title**                  | **Properties**                                                                                                                                                                                                                                                                                                                                                 |
| 3                                                                                                                                                                           | Subject                  | <p>Subject<br></p>       | <p>Subject<br></p>         | <ul><li>Required: false</li><li>Read Only: false</li><li>Show on Edit page: true</li><li>Show on View Page: true</li><li>Instructions: not set</li><li>Conditional Styles: not set</li><li>Events: not set</li><li>View Type (for picklisis): Single list</li><li>Hide 'None' (for picklists): false</li><li>Options Groups (for picklists): not set</li></ul> |
| 4                                                                                                                                                                           | Type                     | Type                     | Type                       |                                                                                                                                                                                                                                                                                                                                                                |
| 5                                                                                                                                                                           | EventSubtype             | <p>EventSubtype<br></p>  | <p>Subtype<br></p>         |                                                                                                                                                                                                                                                                                                                                                                |
| 6                                                                                                                                                                           | <p>StartDateTime<br></p> | <p>StartDateTime<br></p> | <p>Start Date Time<br></p> |                                                                                                                                                                                                                                                                                                                                                                |
| 7                                                                                                                                                                           | <p>EndDateTime<br></p>   | <p>EndDateTime<br></p>   | <p>End Date Time<br></p>   |                                                                                                                                                                                                                                                                                                                                                                |
| 8                                                                                                                                                                           | Description              | <p>Description<br></p>   | <p>Description<br></p>     |                                                                                                                                                                                                                                                                                                                                                                |

* Add these Form Actions:

<table><thead><tr><th>#</th><th>Action Name and Title</th><th>Property</th><th>Value</th></tr></thead><tbody><tr><td>1</td><td>Close Panel</td><td>Type</td><td><strong>Form API</strong></td></tr><tr><td>Form Action Type</td><td><strong>Fire Event</strong></td><td></td><td></td></tr><tr><td>Name</td><td><strong>e.FLX_KB:ApplicationEvent</strong></td><td></td><td></td></tr><tr><td>Parameters</td><td><p>Name: <strong>data</strong><br>Value Type: <strong>Object</strong><br>Value:</p><pre><code><strong>{"componentType":"c:KanBanPanelComponent","method":"hideCard"}
</strong></code></pre></td><td></td><td></td></tr><tr><td>Has Conditions</td><td>false</td><td></td><td></td></tr><tr><td>2</td><td>Refresh Column</td><td>Type</td><td><strong>Form API</strong></td></tr><tr><td>Form Action Type</td><td><strong>Fire Event</strong></td><td></td><td></td></tr><tr><td>Name</td><td><strong>e.FLX_KB:ApplicationEvent</strong></td><td></td><td></td></tr><tr><td>Parameters</td><td><p>Name: <strong>data</strong><br>Value Type: <strong>Object</strong><br>Value:</p><pre><code>{"componentType":"c:KanBanColumnComponent","method":"refresh","params":{"kanbans":"{$FormParameters.kanban}"}}
</code></pre></td><td></td><td></td></tr><tr><td>Has Conditions<br></td><td>true</td><td></td><td></td></tr><tr><td>Conditions</td><td>1</td><td><strong>Form.StartDateTime not equal to {$Event.StartDateTime}</strong><br></td><td></td></tr><tr><td></td><td>2<br></td><td><strong>Form.EndDateTime not equal to {$Event.EndDateTime}</strong></td><td></td></tr><tr><td>Conditions logic</td><td><strong>{1} OR {2}</strong><br></td><td></td><td></td></tr></tbody></table>

* Add the following events to the form:

| # | Element what event is added to | Event properties                                           | Event Handler                                                       |
| - | ------------------------------ | ---------------------------------------------------------- | ------------------------------------------------------------------- |
| 1 | Form                           | <p>Type: <strong>onAfterSave</strong><br>Enabled: true</p> | "**Refresh Column**" action without parameters                      |
| 2 | "Close" button                 | <p>Type: <strong>onClick</strong><br>Enabled: true</p>     | <p>"<strong>Close Panel</strong>" action without parameters<br></p> |

### &#x20;Make new standard dashboard.

#### &#x20;Create dashboard

* Go to [dashboard creation wizard](/standard-kanban/basics/how-to-create-a-standard-kanban) and create new standard dashboard.
* Give it a "**Weekly Calendar Dashboard**" name and some description.
* Select "**White**" theme.
* Save dashboard and go to Kanban Bulder.

#### &#x20;Configure columns

* Add [7 columns](/standard-kanban/configure-kanban/working-with-kanban-layout) to the dashboard.
* Name columns from "Sunday" to "Saturday"
* Set column descriptions to digits from "0" to "6" (thus, descriptions will contain indexes of proper weekday)
* Leave columns widths default ("auto")
* Leave columns "Is Active" checkboxes default (checked)
* [Set these properties](/standard-kanban/configure-column/how-to-sonfigure-column-properties) to all columns:
  * Data Source Type = **SObject**
  * Data Source = **Event**
  * Order = **Start Date Time, asc**
  * Page Size = **5**
* [Set the following conditions](/standard-kanban/configure-column/how-to-configure-column-data-source#sobject-data-source) to the columns and add 1 [cell](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons) to their headers with the following values:

| <p><strong>#</strong><br></p> | <p><strong>Column Name</strong><br></p> | **Conditions**             | **Header Cell Value**                                                         |                    |                                                                   |                                                  |
| ----------------------------- | --------------------------------------- | -------------------------- | ----------------------------------------------------------------------------- | ------------------ | ----------------------------------------------------------------- | ------------------------------------------------ |
| **Field Name**                | **Operator**                            | **Type**                   | **Value**                                                                     |                    |                                                                   |                                                  |
| 1                             | Sunday                                  | Start Date Time            | greater than                                                                  | Formula            | FORMULA\[DATETIMEVALUEGMT({$Variables.startDate})]                | <p>{$Variables.startdate} (Sunday)<br></p>       |
| <p>Start Date Time<br></p>    | less than                               | <p>Formula<br></p>         | <p>FORMULA\[DATETIMEVALUEGMT({$Variables.startDate} + HOURS(24))]<br></p>     |                    |                                                                   |                                                  |
| 2                             | Monday                                  | <p>Start Date Time<br></p> | <p>greater than<br></p>                                                       | <p>Formula<br></p> | <p>FORMULA\[DATETIMEVALUEGMT({$Variables.startDate}) + 1]<br></p> | FORMULA\[{$Variables.startdate} + 1] (Monday)    |
| <p>Start Date Time<br></p>    | <p>less than<br></p>                    | <p>Formula<br></p>         | <p>FORMULA\[DATETIMEVALUEGMT({$Variables.startDate} + 1 + HOURS(24))]<br></p> |                    |                                                                   |                                                  |
| 3                             | Tuesday                                 | Start Date Time            | greater than                                                                  | <p>Formula<br></p> | FORMULA\[DATETIMEVALUEGMT({$Variables.startDate}) + 2]            | FORMULA\[{$Variables.startdate} + 2] (Tuesday)   |
| <p>Start Date Time<br></p>    | <p>less than<br></p>                    | <p>Formula<br></p>         | FORMULA\[DATETIMEVALUEGMT({$Variables.startDate} + 2 + HOURS(24))]            |                    |                                                                   |                                                  |
| 4                             | Wednesday                               | <p>Start Date Time<br></p> | <p>greater than<br></p>                                                       | <p>Formula<br></p> | FORMULA\[DATETIMEVALUEGMT({$Variables.startDate}) + 3]            | FORMULA\[{$Variables.startdate} + 3] (Wednesday) |
| <p>Start Date Time<br></p>    | <p>less than<br></p>                    | <p>Formula<br></p>         | FORMULA\[DATETIMEVALUEGMT({$Variables.startDate} + 3 + HOURS(24))]            |                    |                                                                   |                                                  |
| 5                             | Thursday                                | <p>Start Date Time<br></p> | <p>greater than<br></p>                                                       | <p>Formula<br></p> | FORMULA\[DATETIMEVALUEGMT({$Variables.startDate}) + 4]            | FORMULA\[{$Variables.startdate} + 4] (Thursday)  |
| <p>Start Date Time<br></p>    | <p>less than<br></p>                    | <p>Formula<br></p>         | <p>FORMULA\[DATETIMEVALUEGMT({$Variables.startDate} + 4 + HOURS(24))]<br></p> |                    |                                                                   |                                                  |
| 6                             | Friday                                  | <p>Start Date Time<br></p> | <p>greater than<br></p>                                                       | <p>Formula<br></p> | FORMULA\[DATETIMEVALUEGMT({$Variables.startDate}) + 5]            | FORMULA\[{$Variables.startdate} + 5] (Friday)    |
| <p>Start Date Time<br></p>    | <p>less than<br></p>                    | <p>Formula<br></p>         | <p>FORMULA\[DATETIMEVALUEGMT({$Variables.startDate} + 5 + HOURS(24))]<br></p> |                    |                                                                   |                                                  |
| 7                             | Saturday                                | <p>Start Date Time<br></p> | <p>greater than<br></p>                                                       | <p>Formula<br></p> | FORMULA\[DATETIMEVALUEGMT({$Variables.startDate}) + 6]            | FORMULA\[{$Variables.startdate} + 6] (Saturday)  |
| <p>Start Date Time<br></p>    | <p>less than<br></p>                    | <p>Formula<br></p>         | FORMULA\[DATETIMEVALUEGMT({$Variables.startDate} + 6 + HOURS(24))]            |                    |                                                                   |                                                  |

* Set **height:22px** [CSS style](/standard-kanban/tools/configuring-css-styles) to headers of all columns
* Set **font-size:14px** CSS style to cells in headers of each column

#### &#x20;Configure Card

* [Add 1 card](/standard-kanban/configure-card) to dashboard and name it "**Event**"
* Set Data Source Type to "**Event**"

Card Layout configuration:

* Set [card layout](/standard-kanban/configure-card/how-to-configure-card-layout) to **Form**. Select **Event Form** (which was created earlier and described above)in the lookup and set its parameters to these:
  * kanban = **{$Card.Kanban}**
  * mode = **edit**
  * id = **{Event.Id}**
* Set Position of Card Layout to **Modal**
* Check "**Hide Footer**" checkbox
* Set Text of layout header to **{event.Subject}** ("Title Settings section of Header Configuration tab)

[Card Compact Layout](/standard-kanban/configure-card/how-to-configure-card-compact-layout) configuration:

* Set Card to Collapsible ("General" section of Card Settings)
* Set CSS styles of Card to **padding:0px**
* Set Value of the default Card Component to **{Event.Subject}**
* Set its CSS Styles to **background-color:#c6c9ff; padding:0px 5px;**
* Add one more Text Card Component under default and:
  * Set its Value to **{Event.Type}**
  * Set its CSS Styles to **padding:0px 5px**
* Add third Text Card Component under previous and:
  * Set  its Value to **FORMULA\[FORMAT({Event.StartDateTime}, 'hh:mm a')]**
  * Set its CSS Styles to **padding:0px 5px**
* Add fourth Text Card Component at the right of third (it will become 50% wide) and:
  * Set  its Value to **FORMULA\[TOTEXTDURATION({Event.DurationInMinutes}, 24)]**
  * Set its CSS Styles to **padding:0px 5px; text-align:right;**

#### &#x20;Configure Column Junctions

Set these [column junctions](#configure-column-junctions) to Card in all columns:

* Drag-n-drop allowed to **all** columns
* Drop behavior left default to all columns (source column = **Remove Card**, target column = **Refresh**)

#### &#x20;Configure Card Actions

To add a sense to Cards dragging [some actions are necessary](#configure-card-actions). In this example action will be the same for all columns, so, no need to configure them separately.

Click on card and add a new action with these properties:

* Name = **Update Event Start Date**
* Type = **Field Update**
* Execute = **Always**
* Status = **Active**
* Context Object Type = **Event**

In the Field Update Settings section configure this:

* Object Name = **Event**
* Fields:

<table><thead><tr><th>Name</th><th>Value</th></tr></thead><tbody><tr><td>Start Date Time</td><td><pre><code>FORMULA[{Event.StartDateTime} + (({$Variables.startDate} + {$TargetColumn.Description}) - DATETIMEVALUE(DATEVALUE({Event.StartDateTime})))]
</code></pre></td></tr><tr><td>End Date Time</td><td><pre><code>FORMULA[{Event.EndDateTime} + (({$Variables.startDate} + {$TargetColumn.Description}) - DATETIMEVALUE(DATEVALUE({Event.EndDateTime})))]
</code></pre></td></tr></tbody></table>

* Conditions:
  * **Activity ID eqials {event.id}**

### &#x20;Make new composite dashboard&#x20;

#### Create dashboard

* Go to [dashboard creation wizard](/standard-kanban/basics/how-to-create-a-standard-kanban) and create new composite dashboard.
* Give it a "Calendar Dashboard" name and some description.
* Select "White" theme.
* Save dashboard and go to Kanban Bulder.

#### &#x20;Configure containers and child dashboards

* Make dashboard have [5 containers](/standard-kanban/configure-column/how-to-configure-column-container-and-filters) in vertical stack.
* Leave their properties default
* Set their titles from "**Weekly Calendar 1**" (topmost container) to "**Weekly Calendar 5**" (bottommost container)
* Select previously created "**Weekly Calendar Dashboard**" kanban as [child dashboard](/composite-kanban/working-with-composite-kanban-layout/configuring-child-kanban) in each container
* Set API names for containers and Input Variables for each child dashboard:

| Container                    | Container API name | Input Variable name  | <p>Input Variable value<br></p>    |
| ---------------------------- | ------------------ | -------------------- | ---------------------------------- |
| Weekly Calendar 1            | <p>week1<br></p>   | <p>startDate<br></p> | <p>{$Variables.week1Start}<br></p> |
| <p>Weekly Calendar 2<br></p> | <p>week2<br></p>   | <p>startDate<br></p> | <p>{$Variables.week2Start}<br></p> |
| <p>Weekly Calendar 3<br></p> | <p>week3<br></p>   | <p>startDate<br></p> | <p>{$Variables.week3Start}<br></p> |
| <p>Weekly Calendar 4<br></p> | <p>week4<br></p>   | <p>startDate<br></p> | <p>{$Variables.week4Start}<br></p> |
| <p>Weekly Calendar 5<br></p> | <p>week5<br></p>   | <p>startDate<br></p> | <p>{$Variables.week5Start}<br></p> |

#### &#x20;Configure connections between child dashboards

You do not  need to [configure connections](/composite-kanban/connections-between-kanbans) from dashboard of each container to every other because the dashboard is the same for all containers. It will be enough to set them one time from any container to any other.

Set connections to these:

* Source Kanban = **Weekly Calendar Dashboard**
* Target Kanban = **Weekly Calendar Dashboard**
* Card Name = **Event**
* Source Columns: all (set one connection per each)
* Target Column: for each source column select target column with the same name
* Action on drop: configure new with these properties:
  * Name = **Update Event Start Date**
  * Type = **Field Update**
  * Object name = **Event**
  * Conditions = **Activity ID equals {event.id}**
  * Fields:

<table><thead><tr><th>Name</th><th>Value</th></tr></thead><tbody><tr><td>Start Date Time</td><td><pre><code>FORMULA[{Event.StartDateTime} + (({$Variables.startDate} + {$TargetColumn.Description}) - DATETIMEVALUE(DATEVALUE({Event.StartDateTime})))]
</code></pre></td></tr><tr><td>End Date Time</td><td><pre><code>FORMULA[{Event.EndDateTime} + (({$Variables.startDate} + {$TargetColumn.Description}) - DATETIMEVALUE(DATEVALUE({Event.EndDateTime})))]
</code></pre></td></tr></tbody></table>

* Copy this action onto each connection set

Connections should look like this:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FxyMV1EoAr0hVypWIwY6j%2Ffile.excalidraw.svg?alt=media&amp;token=3d1e43d2-19ff-48a5-88cf-a59748e1226b" alt="" class="gitbook-drawing">

#### Configure actions and action groups

Create the following Actions of "**Define Variable**" type. Set Variable Type to **Text** in all actions:

<table><thead><tr><th>#</th><th>Action name</th><th>Variable name</th><th>Variable value</th></tr></thead><tbody><tr><td>1</td><td>Get Previous Month</td><td>currentDate</td><td><pre><code>FORMULA[FORMAT(ADDMONTHS(DATEVALUE({$Variables.currentDate}), -1), 'yyyy-MM-dd')]
</code></pre></td></tr><tr><td>2</td><td>Get Next Month</td><td>currentDate</td><td><pre><code>FORMULA[FORMAT(ADDMONTHS(DATEVALUE({$Variables.currentDate}), 1), 'yyyy-MM-dd')]
</code></pre></td></tr><tr><td>3</td><td>Update Week 1 Start Variable</td><td>week1Start</td><td><pre><code>FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01')))]
</code></pre></td></tr><tr><td>4</td><td>Update Week 2 Start Variable<br></td><td>week2Start<br></td><td><pre><code>FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 7]
</code></pre></td></tr><tr><td>5</td><td>Update Week 3 Start Variable</td><td>week3Start</td><td><pre><code>FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 14]
</code></pre></td></tr><tr><td>6</td><td>Update Week 4 Start Variable<br></td><td>week4Start<br></td><td><pre><code>FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 21]
</code></pre></td></tr><tr><td>7</td><td>Update Week 5 Start Variable<br></td><td>week5Start<br></td><td><pre><code>FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$Variables.currentDate}, 'yyyy-MM-01'))) + 28]
</code></pre></td></tr><tr><td>8</td><td>Update Week 1 Variable<br></td><td>week1<br></td><td><pre><code>FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))), 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 6, 'dd/MM/yyyy')]
</code></pre></td></tr><tr><td>9</td><td>Update Week 2 Variable<br></td><td>week2<br></td><td><pre><code>FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 7, 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 13, 'dd/MM/yyyy')]
</code></pre></td></tr><tr><td>10</td><td>Update Week 3 Variable<br></td><td>week3<br></td><td><pre><code>FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 14, 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 20, 'dd/MM/yyyy')]
</code></pre></td></tr><tr><td>11</td><td>Update Week 4 Variable<br></td><td>week4<br></td><td><pre><code>FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 21, 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 27, 'dd/MM/yyyy')]
</code></pre></td></tr><tr><td>12</td><td>Update Week 5 Variable<br></td><td>week5<br></td><td><pre><code>FORMULA[FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 28, 'dd/MM/yyyy') + ' - ' + FORMAT(STARTOFWEEK(DATEVALUE(FORMAT(DATEVALUE({$Variables.currentDate}), 'yyyy-MM-01'))) + 34, 'dd/MM/yyyy')]
</code></pre></td></tr></tbody></table>

Create 2 action groups and add actions from configured above to them (in the order specified below):

1. name = **Get Previous Month Action Group**
   * actions:
     1. Get Previous Month
     2. Update Week 1 Start Variable
     3. Update Week 2 Start Variable
     4. Update Week 3 Start Variable
     5. Update Week 4 Start Variable
     6. Update Week 5 Start Variable
     7. Update Week 1 Variable
     8. Update Week 2 Variable
     9. Update Week 3 Variable
     10. Update Week 4 Variable
     11. Update Week 5 Variable<br>
2. name = **Get Next Month Action Group**
   * actions:
     1. Get Next Month
     2. Update Week 1 Start Variable
     3. Update Week 2 Start Variable
     4. Update Week 3 Start Variable
     5. Update Week 4 Start Variable
     6. Update Week 5 Start Variable
     7. Update Week 1 Variable
     8. Update Week 2 Variable
     9. Update Week 3 Variable
     10. Update Week 4 Variable
     11. Update Week 5 Variable

#### &#x20;Configure Dashboard

Basic Configuration tab

* Set Icon to **action:new\_event**

Statistic Configuration tab

* Add one [Cell](/standard-kanban/tools/configuring-rows-cells-menus-and-buttons#cells) of Text type
* Set its CSS Style to **font-size: 24px;**
* Set its Value to **FORMULA\[FORMAT({$Variables.currentDate}, 'MMMM, yyyy')]**

Variables Configuration tab

* Add these variables:

<table><thead><tr><th>#</th><th>Variable Name</th><th>Variable Value</th></tr></thead><tbody><tr><td>1</td><td>currentDate</td><td><pre><code>{$System.Date}
</code></pre></td></tr><tr><td>2</td><td>week1Start</td><td><pre><code>FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01')))]
</code></pre></td></tr><tr><td>3</td><td>week2Start</td><td><pre><code>FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 7]
</code></pre></td></tr><tr><td>4</td><td>week3Start</td><td><pre><code>FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 14]
</code></pre></td></tr><tr><td>5</td><td>week4Start</td><td><pre><code>FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 21]
</code></pre></td></tr><tr><td>6</td><td>week5Start</td><td><pre><code>FORMULA[STARTOFWEEK(DATEVALUE(FORMAT({$System.Date}, 'yyyy-MM-01'))) + 28]
</code></pre></td></tr></tbody></table>

#### Buttons Configuration tab

* Add the following buttons:<br>
  1. Previous Month
     * type = **Icon**
     * title = **Previous Month**
     * icon = **utility:left**
     * handler:
       * type =**Action Group**
       * value = **Get Previous Month Action Group**
       * parameters not set
       * success handler:
         * type = **Kanban API**
         * value = **Refresh Kanbans**
         * parameters not set<br>
  2. Next Month
     * type = **Icon**
     * title = **Next Month**
     * icon = **utility:right**
     * handler:
       * type =**Action Group**
       * value = **Get Next Month Action Group**
       * parameters not set
       * success handler:
         * type = **Kanban API**
         * value = **Refresh Kanbans**
         * parameters not set


# Howtos and Best Practices


# How to Pass Variables Between Parent and Child Kanbans

There are two ways to pass variables between parent and child kanbans:

* Input Variables
* Update Variables action

### Input Variables

{% hint style="warning" %}
Input Variables are way to pass variables from Parent to Child Kanban only.
{% endhint %}

Input Variables are passed to the child kanban immediately when it is loaded inside the parent.

These variables can be:

* already defined on the child kanban. When Input Variables have the same names as variables configured in the child kanban, their values override those variables on the child kanban
* new custom variables

To set Input Variables select a [Child Kanban](/composite-kanban/working-with-composite-kanban-layout/configuring-child-kanban) in the Composite Kanban editor and click "add" link in the properties sidebar:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FbnfE46koMhQrBhwXDzSB%2Ffile.excalidraw.svg?alt=media&amp;token=f290e68c-1364-453a-9c0c-a825401c08a3" alt="" class="gitbook-drawing">

A Variable entry form will appear. If selected child kanban has variables configured, their names will be added to Name field picker:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FjpbYDFlrKwjUJa8Sm5UY%2Ffile.excalidraw.svg?alt=media&amp;token=eaeab9ad-536f-4c04-a7ac-a443102fec85" alt="" class="gitbook-drawing">

You can select one of these names. If you want to add other variable, select "*...Custom*" option - pickilst will transform to text input and you can type desired variable name. Enter necessary value or use ">>" button to show assistive Formula Editor. Click "Remove Variable" button to deleteariable entry:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FmSBwQ7rXm2j2gB7VnJmB%2Ffile.excalidraw.svg?alt=media&amp;token=4f599201-d1bc-4eb9-9f1c-2e3ebc539631" alt="" class="gitbook-drawing">

Save Kanban. Now, when it will be opened, these input variables will be passed to child Kanban.

### "Update Variables" Action

This action uses Kanban API "Update variables" method. It works for any Kanban, so, we can do this action as for Child, as for Parent kanbans.

This action can't be executed automatically when Kanban is loaded, so, it should be set as a handler on some Child Kanban element:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FpIYI1RugB94vuMui0F6B%2Ffile.excalidraw.svg?alt=media&amp;token=c935d96c-a561-4780-b8d7-38024e4cd2fa" alt="" class="gitbook-drawing">

This method requires two parameters: "variables" with necessary variables and their values in JSON format and "kanbans" with list of Kanban IDs or names (separated with comma or in JSON format):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FvYlTWJEpYE4reveZBCfk%2Ffile.excalidraw.svg?alt=media&amp;token=61507f71-d33f-475a-8fab-e697749f3d1b" alt="" class="gitbook-drawing">

### Using Kanban API Names

The main trouble in using of this method is that kanban IDs is unknown by default (and will be changed by system while cloning, importing or deployment). Also Kanban name can be changed, become non-unique or too long. At east, it is not good idea to hardcode something dynamic.

Child Kanbans can have API names. They can be set in the [child Kanban properties](/composite-kanban/working-with-composite-kanban-layout/configuring-child-kanban):

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FjHNfvQg3g7KZEISAt7Wr%2Ffile.excalidraw.svg?alt=media&amp;token=e87c60ff-6c1b-4633-a9b3-c92004733d6f" alt="" class="gitbook-drawing">

These API names can be used instead of Kanban IDs in various actions (like Update Variable) and will be usable even when IDs of kanbans were changed.

### Solving problems: how to know parent Kanban ID in the child kanban

Since API names can be set only to Child Kanbans, in is no simple way to make parent Kanban a target for Kanban API actions.

In this case we can use Input Variables to pass parent Kanban ID (or name) to children:

1. Set some variable (e.g. name it "ChildVar") in parent Kanban
2. Set Input Variable for Child Kanban and give it "{$Kanban.ID} value
3. Configure some element with in Child Kanban. Give it a handler which will update some variable in the parent one, and set {$Variables.parentID} as value of "kanbans" parameter
4. Set "variables" parameter to some value (e.g, {"ChildVar":"Value\_from\_child\_kanban"})

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fy75XuxaeA5DdzoaytEPU%2Ffile.excalidraw.svg?alt=media&amp;token=69aa1a38-e877-48cb-be6b-29c154e8e598" alt="" class="gitbook-drawing">

Now if click this child Kanban element it will trigger Update Variable action on target (parent) Kanban. You can know this using Debug Console:

1. See the Parent Kanban variable initial value
2. Close console and click on element to trigger "Update Variable" action
3. See the Parent Kanban variable new value:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FbUqcnoyqF0U5pLuJPOJV%2Ffile.excalidraw.svg?alt=media&amp;token=af144693-53bf-4d8d-921f-58f188041c69" alt="" class="gitbook-drawing">

{% hint style="info" %}
You may not define a "ChildVar" variable on Parent Kanban - in this case it will have no initial value, but will be created when Update Variable action will be executed first time.
{% endhint %}


# Forms

The Flexi Kanban Forms is very flexible and powerful tool for building lightning ready user interface. The Flexi Kanban Forms could be used in any place in your SF application.

The Flexi Kanban Form provides a powerful drag-and-drop form builder that includes extensive functionality:

* validation across fields&#x20;
* components events
* custom actions
* dynamic hide/show/clear fields and page sections based on conditions&#x20;
* multi-page form wizards&#x20;
* nested forms that allow a “form within a form” capability so that forms can be re-used, and can be from any data source
* lists and related lists


# Basics

With the Flexi Kanban forms you can build fully dynamic interface that may interact with user and any other SF application components.

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><mark style="color:blue;">Form Building Overview</mark></td><td><a href="/components/forms/basics/form-building-overview">Form Building Overview</a></td></tr><tr><td align="center"><p><mark style="color:blue;">Working with</mark> </p><p><mark style="color:blue;">Form Settings</mark></p></td><td><a href="/components/forms/basics/working-with-form-settings">Working with Form Settings</a></td></tr><tr><td align="center"><mark style="color:blue;">Working with Source Object fields</mark></td><td><a href="/components/forms/basics/working-with-source-object-fields">Working with Source Object fields</a></td></tr><tr><td align="center"><p><mark style="color:blue;">How to Preview</mark> </p><p><mark style="color:blue;">the Form</mark></p></td><td><a href="/components/forms/basics/how-to-preview-the-form">How to Preview the Form</a></td></tr><tr><td align="center"><mark style="color:blue;">How to configure the Form Sharing Rules</mark></td><td><a href="/components/forms/basics/how-to-configure-the-form-sharing-rules">How to configure the Form Sharing Rules</a></td></tr><tr><td align="center"><mark style="color:blue;">Understanding the Form Dependencies</mark></td><td><a href="/components/forms/basics/understanding-the-form-dependencies">Understanding the Form Dependencies</a></td></tr><tr><td align="center"><mark style="color:blue;">Working with Conditional Styles</mark></td><td><a href="/components/forms/basics/working-with-conditional-styles">Working with Conditional Styles</a></td></tr><tr><td align="center"><mark style="color:blue;">Working with Conditions</mark></td><td><a href="/components/forms/basics/working-with-conditions">Working with Conditions</a></td></tr><tr><td align="center"><mark style="color:blue;">Search Over the Form</mark></td><td><a href="/components/forms/basics/search-over-the-form">Search Over the Form</a></td></tr></tbody></table>


# Form Building Overview

Navigate to Forms tab and click "New" button.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FGgGCDsxPYbyRqky1K8I6%2Ffile.excalidraw.svg?alt=media&amp;token=e945b02c-922d-41ed-906b-55cb3a80fcc6" alt="" class="gitbook-drawing">

New Form screen will show up. First, select a Data Source. Data source is object the form is associated with:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F5JeYBMulZCy67XG5hl7R%2Ffile.excalidraw.svg?alt=media&amp;token=be350cd8-ad1a-41f4-8a85-d3fa27d937ba" alt="" class="gitbook-drawing">

{% hint style="success" %}
If you can't find your object in the list it means it maybe has not been added to list of "Allowed objects" on "Settings" tab (Settings -> [Objects Settings](/references/application-settings#object-settings)).&#x20;
{% endhint %}

Once data source is selected, all object required fields will appear in a new form default section. Other object fields you can find in the "Data Source Fields" section of the left sidebar. Fields are sorted alphabetically and grouped in collapsible sections:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FRyfM9PLijYKBrpZowLUj%2Ffile.excalidraw.svg?alt=media&amp;token=6f584939-2f3f-4dd9-9305-58acccc9dd57" alt="" class="gitbook-drawing">

User can add to a form other type of fields as:

* [Virtual fields](/components/forms/components/add-and-remove-form-components#virtual-fields)
* [Options](/components/forms/components/add-and-remove-form-components#options) (sections, blank spaces, custom buttons, lists, file and image inputs, static texts, etc.)
* [Related Lists](/components/forms/components/add-and-remove-form-components#related-lists)

{% hint style="info" %}
See proper article about fields and other form components and how to add them to the form.
{% endhint %}

Using components of the Right sidebar you can:

* Settings - set basic properties of form or form elements
* Context - pick fields of available context objects
* Search - find location of form elements

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2Fw6vwAkuv7FIkm6zd1PDT%2Ffile.excalidraw.svg?alt=media&amp;token=b6b07c0d-e2e2-4ece-a37f-599665e3f714" alt="" class="gitbook-drawing">

Form builder toolbar contains the following components:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FAk75oARXQbkAMAs4eFXn%2Ffile.excalidraw.svg?alt=media&amp;token=bbd8efa1-4f42-493c-bd87-7d5e984b4625" alt="" class="gitbook-drawing">

* **"Close"** button -  closes currently opened form and returns to page what user navigated from. If there are unsaved changes, asks for confirmation.
* **"Save"** button - saves changes in currently open form. If this button is not disabled, this indicated the presence of unsaved changes.
* **"Delete"** button - deletes selected elements from the form canvas.
* **"Action"** menu contains the following items:
  * **Run**  - helps to [preview the form](/components/forms/basics/how-to-preview-the-form).
  * **Open Sharing Rules** - user can [share the form](/components/forms/basics/how-to-configure-the-form-sharing-rules) to the Individual User, Public Group, Roles, Roles and Subordinates.
  * **Clone** - clones the current form.
  * [**Show Dependencies**](/components/forms/basics/understanding-the-form-dependencies) - helps to see where the current Form is used.
* **"Tools"** menu contains the following items:
  * [**Fields**](/components/forms/tools/additional-fields) - allow to add needed fields to form context objects (useful in some cases)
  * [**Variables**](/components/forms/tools/variables) - allow to manage form variables
  * [**Form Action**s](/components/forms/tools/form-action) - allow to configure form actions
* **"Help"**- links to the Documentation web site.


# Working with Form Settings

Form Settings allow to set Source object, customize form name, labels, look and feel, buttons and configure form events.&#x20;

When new Form created user is redirected to the form page with Settings section opened:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FVW4X38QOq1MIFXEEpJai%2Ffile.excalidraw.svg?alt=media&amp;token=377e0fa7-debe-48e1-ad53-3b8291453c8e" alt="" class="gitbook-drawing">

### General Settings

* **Name** - Name of the Form in the list of the forms.

{% hint style="success" %}
Note: Name can differ from the Header which is shown to the user
{% endhint %}

* **ID** - System Id of the form. Used when you need to refer the form from other places. Value is read-only. The field is not visible when you create a new form and will be displayed after first save.
* **Description** - Just a description, that will be shown only in the builder and list of forms. Not mandatory.
* **Data Source** - Select the object which you want to work with in the current form. When Data Source is selected, all fields from the object will become available for adding to the Form on Data Source Fields section.
* **Multi Page Form** - Check this checkbox if you want to make form look as a wizard with many pages (wizard steps). The page will be visible only if it has at least one non-empty component inside (list, nested from or section with at least one element added). &#x20;
* **CSS Styles** - Allows to customize form appearance using CSS. Click to show a proper popup. You can customize each component on the form separately and even write own styles for necessary elements, even not for form. Select Component to easily add proper selector to the input text area  and add needed CSS rules.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FyllrM2skZDscZwCTFs2L%2Ffile.excalidraw.svg?alt=media&amp;token=bdc6bd58-b922-484e-99c4-77d1078c466e" alt="" class="gitbook-drawing">

{% hint style="warning" %}
Note: <mark style="color:red;">`@@`</mark> and <mark style="color:red;">`##`</mark> in the styles builder will be substituted with actual unique prefixes generated by SalesForce for Form and Form container. Do not replace them with hard-coded values because they are not constant.
{% endhint %}

* **Show Navigation Panel** - this allows to show/hide navigation panel which allows to navigate between forms if you redirect to other form from the current one.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FMAIcRrfVUJqECkZJE4ts%2Ffile.excalidraw.svg?alt=media&amp;token=51e1bdb6-1b6d-4c3e-af41-4b63be4244ac" alt="" class="gitbook-drawing">

* **Use Standard FLS Settings** - if checked Form will render sObject fields in accordance with Field Level Security settings for the current user's profile.

**Field behavior when "Use Standard FLS Settings" turned on:**

* If field is not visible for current Profile in FLS, it won't be displayed in Data Source Fields form builder section (so it could not be added to the form canvas) and in Form Renderer.
* If field was added to the form, and after that Profile got updated so that field is not visible for user, field will be displayed on the canvas in Form Builder, but won't be visible in Form Renderer.
* If field is visible but not editable for profile, Form Renderer will display field in read only mode.

### Buttons configuration

Allows to show/hide specified buttons in Edit/View mode of the form.&#x20;

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FZr61U4rwr6Uqbxw78dXL%2Ffile.excalidraw.svg?alt=media&amp;token=c0a11d83-f789-4fb2-98dd-74cd048e461f" alt="" class="gitbook-drawing">

Also you can customize each button Label.&#x20;

Select Settings icon next to the button to change the label. Some buttons allow to set additional functionality.

Also you can customize each button Label.&#x20;

Click Settings icon next to the button to change the label. Some buttons allow to set additional functionality.

**Save** - allows to add confirmation message on form Save. It allows to specify the following settings:

* Label - change text on the button.
* Show on edit layout - may be turned off on form that shown with editable fields. Is usable in situations when user wants to override standard Save function with custom actions.
* Confirmation message - allows to modify message that will be shown after form saving.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F0YeiKm0GVAVk0BbTUUiq%2Ffile.excalidraw.svg?alt=media&amp;token=a07081ae-2e67-4b9e-8f83-283a139f480e" alt="" class="gitbook-drawing">

* **Close** - just closes the form without saving changes. Has only Label and Show on edit layout options to configure.
* **Reset** - reverts form fields to values they got from server on from load. Has only Label and Show on edit layout options to configure.
* **Record View** - allows to Open the record which data form is displaying. Has these options to configure:
  * Label
  * Show on edit layout / Show on view layout - turn off if no need to show this button  on the form in edit/view mode.
  * Open in New Window - specify if record will be shown in new window or current.

{% hint style="info" %}
Note: If no record has been passed to the form, the Record View button will not be shown.
{% endhint %}

### Header configuration

Allows to set heading for the form in each mode. By default there are "New Form" texts, you can change it to any necessary. Merge fields are supported here:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FLcv1y5wvayKlyIsg3vk9%2Ffile.excalidraw.svg?alt=media&amp;token=772be088-bcde-42db-aa17-35e494895459" alt="" class="gitbook-drawing">

### Events

Allows to handle the form events.

Click "Add New" button to add event handler.

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FBE9AufZHxJtuxpDWkM7a%2Ffile.excalidraw.svg?alt=media&amp;token=deceddb6-ed23-41d5-afd9-cb0c4e65677a" alt="" class="gitbook-drawing">

Events can be executed in different cases:

* **OnLoad** - when the form is loaded
* **OnBeforeSave** - action will be executed when user clicks Save. It will run before the form is Saved.
* **OnAfterSave** - action will be executed when user clicks Save. It will run after the form is Saved.&#x20;
* **OnActivate** - action will be executed when user navigates between forms using links in Navigation Panel.&#x20;

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FNfiBbCgHfZo7OC1piIQB%2Ffile.excalidraw.svg?alt=media&amp;token=0808c6e5-e20b-4538-8033-a7b10004329e" alt="" class="gitbook-drawing">


# Working with Source Object fields

When Source Object is selected you can start working with its fields and with fields of related objects.

### Adding Fields to the Form

To add a new field to the form go to the "Data Source Fields" section of the left sidebar. Fields are sorted alphabetically and grouped in collapsible sections:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FEJ3OGJQpZMtGZCOyCC4k%2Ffile.excalidraw.svg?alt=media&amp;token=a720efe9-574f-4305-8060-a4916eb8e267" alt="" class="gitbook-drawing">

{% hint style="info" %}
Note! Before adding the field you need to add a Section. See more info for working with sections at [Section Component](/components/forms/components/option-section) article.
{% endhint %}

To add a field from related object in the "Selected source" field pick the related object you need and the list of available fields will be replaced with related object fields. Drag and drop the field to the Form Section:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FLeTtP46q0UnXOlzjm8fk%2Ffile.excalidraw.svg?alt=media&amp;token=0d35404e-64af-41ac-bdc9-7e35a1e9a3ca" alt="" class="gitbook-drawing">

### Working with fields

Each type of field has its icon:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F2MA4HPWJzakTQVHH3tks%2Ffile.excalidraw.svg?alt=media&amp;token=cc488d55-f2d4-47d6-aeb0-86e380771616" alt="" class="gitbook-drawing">

Click the field on Canvas to modify field properties. The field has standard list of properties (see [here](/components/forms/components/components-basic-properties)) and it's own list of properties:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2F5Y2F6YzI368AFPhSpMA2%2Ffile.excalidraw.svg?alt=media&amp;token=bdae0dae-d0fd-4b10-a5ae-2b1ac11caa1e" alt="" class="gitbook-drawing">

### Validation Rules

[Validation rule](/components/forms/components/components-validation-rules) allows to validate the field value before saving a record or by executing Validate form action.

Click "Add New" button at Validation Rules Section:&#x20;

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FeuF28kJKlaA43BzRankE%2Ffile.excalidraw.svg?alt=media&amp;token=d886131e-8d07-455a-9677-17d0d00084cc" alt="" class="gitbook-drawing">

Fill in Error Message, Validation Rules:

<img src="https://3097383375-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FK2dgObBO5ydOH2ZXDJLa%2Fuploads%2FqGX2U683kQ8Rl89mIwjr%2Ffile.excalidraw.svg?alt=media&amp;token=7822aea8-31f4-44b7-930a-f478df1cfb6e" alt="" class="gitbook-drawing">

{% hint style="info" %}
You can also add Conditions and the Validation will work only when the Condition is true.
{% endhint %}

### Conditional Styles

You can hide/show/disable/make required field conditionally. See more info at Using [Conditional Styling](/components/forms/basics/working-with-conditional-styles) for Form Fields .

### Events

You can add onChange Events for the field. See more info on working with [Events](/components/forms/tools/event).&#x20;




---

[Next Page](/llms-full.txt/1)

