> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ravenna.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Product Updates

> Track the latest 2026 Ravenna product updates, including new features, platform improvements, integration releases, and notable bug fixes.

export const ShippedBy = ({handles = [], size = 28}) => {
  const TEAM = {
    'ravenna-tom': {
      name: 'Tom',
      avatar: '/images/team/ravenna-tom.png'
    },
    kcoleman731: {
      name: 'Kevin',
      avatar: '/images/team/kcoleman731.png'
    },
    tayhalla: {
      name: 'Taylor',
      avatar: '/images/team/tayhalla.png'
    },
    ceolinwill: {
      name: 'Will',
      avatar: '/images/team/ceolinwill.png'
    },
    Vini98br: {
      name: 'Vinicius',
      avatar: '/images/team/vini98br.png'
    },
    TylerJackson: {
      name: 'Tyler',
      avatar: '/images/team/tylerjackson.png'
    },
    'niko-cxvedadze': {
      name: 'Niko',
      avatar: '/images/team/niko-cxvedadze.png'
    },
    pmalmgren: {
      name: 'Peter',
      avatar: '/images/team/pmalmgren.png'
    },
    kiranvargheseabraham: {
      name: 'Kiran',
      avatar: '/images/team/kiranvargheseabraham.png'
    },
    omkarpat: {
      name: 'Omkar',
      avatar: '/images/team/omkarpat.png'
    },
    paulonasc: {
      name: 'Paulo',
      avatar: '/images/team/paulonasc.png'
    },
    ishaans: {
      name: 'Ishaan',
      avatar: '/images/team/ishaans.png'
    },
    ericc59: {
      name: 'Eric',
      avatar: '/images/team/ericc59.png'
    },
    Ellween: {
      name: 'Alex',
      avatar: '/images/team/ellween.png'
    },
    AV6: {
      name: 'Avinash',
      avatar: '/images/team/av6.png'
    },
    CamdenClark: {
      name: 'Camden',
      avatar: '/images/team/camdenclark.png'
    },
    mplachter: {
      name: 'Matthew P',
      avatar: '/images/team/mplachter.png'
    },
    Jpsese: {
      name: 'John',
      avatar: '/images/team/jpsese.png'
    },
    ZzurabSiprashvili: {
      name: 'Zurab',
      avatar: '/images/team/zzurabsiprashvili.png'
    },
    damianrodrigues: {
      name: 'Damian',
      avatar: '/images/team/damianrodrigues.png'
    },
    vehidtr: {
      name: 'Vehid',
      avatar: '/images/team/vehidtr.png'
    },
    kailashnath: {
      name: 'Kailash',
      avatar: '/images/team/kailashnath.png'
    },
    'arun-is': {
      name: 'Arun',
      avatar: '/images/team/arun-is.png'
    },
    jayarjo: {
      name: 'Davit',
      avatar: '/images/team/jayarjo.png'
    },
    achogovadze: {
      name: 'Alexandre C',
      avatar: '/images/team/achogovadze.png'
    },
    jayantbh: {
      name: 'Jayant',
      avatar: '/images/team/jayantbh.png'
    },
    'lawson-n': {
      name: 'Lawson',
      avatar: '/images/team/lawson-n.png'
    },
    mzanini: {
      name: 'Marco',
      avatar: '/images/team/mzanini.png'
    },
    sl1pm4t: {
      name: 'Matt M',
      avatar: '/images/team/sl1pm4t.png'
    },
    raayyananan: {
      name: 'Rayyan',
      avatar: '/images/team/raayyananan.png'
    },
    mgorbatenko: {
      name: 'Michael',
      avatar: '/images/team/mgorbatenko.png'
    },
    'nth-chile': {
      name: 'Jared',
      avatar: '/images/team/nth-chile.png'
    },
    'batuhan-ravenna': {
      name: 'Batuhan',
      avatar: '/images/team/batuhan-ravenna.png'
    }
  };
  const [failed, setFailed] = useState({});
  const people = (Array.isArray(handles) ? handles : [handles]).map(handle => TEAM[handle]).filter(Boolean);
  if (people.length === 0) {
    return null;
  }
  const single = people.length === 1;
  const ShipBadge = label => <>
      <span className="dark:hidden">
        <Badge color="#269cbd" stroke>
          <Icon icon="ship" size={13} color="#269cbd" /> {label}
        </Badge>
      </span>
      <span className="hidden dark:inline-flex">
        <Badge color="#165d6e" stroke>
          <Icon icon="ship" size={13} color="#ffffff" /> {label}
        </Badge>
      </span>
    </>;
  const Avatar = (person, index) => failed[index] ? <span className="rav-shipped-avatar flex h-7 w-7 items-center justify-center rounded-full bg-gray-200 dark:bg-neutral-700 text-xs font-medium text-gray-600 dark:text-neutral-200 ring-2 ring-white dark:ring-neutral-900" style={{
    width: size,
    height: size
  }}>
        {person.name.charAt(0)}
      </span> : <img src={person.avatar} alt={person.name} loading="lazy" noZoom onError={() => setFailed(prev => ({
    ...prev,
    [index]: true
  }))} className="rav-shipped-avatar h-7 w-7 rounded-full object-cover ring-2 ring-white dark:ring-neutral-900" style={{
    width: size,
    height: size
  }} />;
  return <div className="rav-shipped flex items-center gap-2 mt-4 text-sm text-gray-500 dark:text-neutral-400">
      <style>{`
        .rav-shipped .rav-shipped-row { display: flex; align-items: center; line-height: 0; }
        .rav-shipped .rav-shipped-item {
          position: relative;
          display: inline-flex;
          width: ${size}px;
          height: ${size}px;
          line-height: 0;
          transition: transform 0.18s cubic-bezier(0.34, 1.56, 0.64, 1);
        }
        .rav-shipped .rav-shipped-item:not(:first-child) { margin-left: -8px; }
        /* Mintlify prose adds vertical margin to <img>; zero it so the item
           hugs the avatar and the tooltip anchors right above it. */
        .rav-shipped .rav-shipped-avatar {
          display: block;
          width: ${size}px;
          height: ${size}px;
          margin: 0;
          cursor: default;
        }
        /* Lift the hovered avatar and bring it above its neighbors. */
        .rav-shipped .rav-shipped-item:hover { transform: translateY(-4px); z-index: 20; }
        /* Tooltip bubble styled to match Mintlify's tooltip surface:
           light card with a hairline border, rounded corners, soft shadow,
           and secondary text. Hidden until its avatar is hovered. */
        .rav-shipped .rav-shipped-tip {
          position: absolute;
          bottom: 100%;
          left: 50%;
          transform: translate(-50%, 4px);
          margin-bottom: 6px;
          padding: 4px 10px;
          border-radius: 8px;
          background: #ffffff;
          color: #374151;
          border: 1px solid rgba(0, 0, 0, 0.08);
          box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.06);
          font-size: 12px;
          font-weight: 500;
          line-height: 1.4;
          white-space: nowrap;
          opacity: 0;
          pointer-events: none;
          transition: opacity 0.15s ease, transform 0.15s ease;
          z-index: 30;
        }
        /* Caret pointing down to the avatar. */
        .rav-shipped .rav-shipped-tip::after {
          content: "";
          position: absolute;
          top: 100%;
          left: 50%;
          transform: translateX(-50%);
          border: 5px solid transparent;
          border-top-color: #ffffff;
          filter: drop-shadow(0 1px 0 rgba(0, 0, 0, 0.08));
        }
        :is(.dark) .rav-shipped .rav-shipped-tip {
          background: #1a1c1c;
          color: #d1d5db;
          border-color: rgba(255, 255, 255, 0.1);
          box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.3);
        }
        :is(.dark) .rav-shipped .rav-shipped-tip::after { border-top-color: #1a1c1c; }
        .rav-shipped .rav-shipped-item:hover .rav-shipped-tip {
          opacity: 1;
          transform: translate(-50%, 0);
        }
      `}</style>

      {single ? <>
          <span className="rav-shipped-row">
            <span className="rav-shipped-item">{Avatar(people[0], 0)}</span>
          </span>
          {ShipBadge(`Shipped by ${people[0].name}`)}
        </> : <>
          {ShipBadge('Shipped by')}
          <span className="rav-shipped-row">
            {people.map((person, index) => <span key={index} className="rav-shipped-item">
                {Avatar(person, index)}
                <span className="rav-shipped-tip">{person.name}</span>
              </span>)}
          </span>
        </>}
    </div>;
};

<Update label="July 7, 2026" tags={["Tickets", "Foundry", "Access requests", "Organizations"]}>
  ## Use Cloudflare credentials in Foundry actions

  Foundry-generated actions can now call the Cloudflare API using your connected Cloudflare integration, without configuring a separate token. Selecting Cloudflare as an action integration signs each request with the stored API token and bakes your account ID into the base URL, so generated code just appends the API path. The Cloudflare connect modal now also asks for the required account ID up front, so submissions no longer silently fail.

  [Learn more →](/documentation/automate/foundry/integrations)

  ## Auto-close tickets when an access request is provisioned

  Tickets linked to an access request now move to a **Closed** status automatically when the request finishes provisioning. Ticket status stays in sync with what's actually happening in the connected app, so agents don't have to circle back and close the ticket by hand once access is granted.

  [Learn more →](/documentation/automate/workflows/triggers-actions)

  ## Filter directly from the Cmd-K command palette

  The global search palette (`Cmd/Ctrl+K`) now has a filter row above ticket results. Status and priority quick-filter buttons are always visible, and a **+ Filter** menu exposes the full field list with a guided operator → value flow. Active filters render as compact chips and carry through to the **See all results** page so you don't lose the query on the way to the full [table view](/documentation/tickets/organize/views).

  **Quality of life updates:**

  * The **Add sub-ticket** modal now supports multi-select, so you can attach several tickets as sub-tickets in one pass instead of adding them one at a time. Selected tickets stay pinned even if they fall out of the current search, and `Cmd/Ctrl+Enter` confirms the batch. See [ticket relations](/documentation/tickets/relations) for how the hierarchy works.
  * Organization admins can now invite members directly from **Organization Settings → Members**, picking the target workspace in the invite modal. Previously, invites had to be sent from each individual workspace.
  * The workflow editor now has a pencil icon next to the breadcrumb that opens the same rename dialog as the [workflow list](/documentation/automate/workflows/workflow-builder), so you can name a new workflow without leaving the editor. The button hides once the workflow is **Active**.
  * Ticket metadata chips are now interactive: click the assignee or priority chip to change it inline, click the ticket ID to copy it, and jump straight to the source Slack thread from the source chip. Tickets with no priority no longer render an empty chip.
  * The ticket action dock puts **Private note** ahead of **Mark as done**, and the **Undo mark as done** state uses a dedicated icon so the two actions are easier to tell apart at a glance.
  * The **Download all attachments** action from yesterday's release now also covers a ticket's own attachments. When a ticket has more than one attachment, an **Attachments (N)** header appears above the tiles with a **Download all** button that packages them into a single zip. See [ticket attachments](/documentation/tickets/attachments).
  * Chatlog filters for **Message**, **Sender**, and **Agent** now match in the database instead of scanning first-message content in application code, so chatlog queries return faster on large workspaces and skip the extra work entirely when no chatlog filter is set.
  * Analytics dashboards go back to the multi-hue categorical chart palette, restoring distinct colors per series after a brief monochrome-blue experiment.

  **Bug fixes:**

  * Fixed a data-scoping issue on chat log routes where a user with a chat log ID from another organization could read that org's events. Ticket event reads, updates, and deletes now enforce organization and workspace access on every request. No user action is required.
  * Adding a hyperlink in the ticket-create rich text editor no longer submits the underlying **Create ticket** form. Confirming or pressing **Enter** in the link popover now only applies the link.
  * Request-type composers with a **Requester** system field no longer show two **Requester** entries in the interpolation dropdown.
  * Renaming a system field (for example, **Description** → **Justification**) on a request type no longer trips the duplicate-label check when the same field is re-added, and drag-drop no longer appends a numeric suffix. The label edit modal now also notes that a rename only applies to the current form.
  * Deleting an approval round now soft-deletes it, so the ticket event history around the approval stays intact. Notifications only fire when an in-progress round is deleted.

  <ShippedBy handles={["sl1pm4t", "kailashnath", "niko-cxvedadze", "raayyananan", "kcoleman731", "jayantbh", "nth-chile", "Jpsese"]} />
</Update>

<Update label="July 6, 2026" tags={["Tickets", "Workflows", "Copilot", "Analytics", "Agents"]}>
  ## Automatically reopen resolved tickets when the requester replies

  Ravenna now reopens a ticket in a **Done** or **Closed** status group when the requester sends a new message that reads as a genuine request. Reopens work across every channel, including email, Slack, Microsoft Teams, the web app, and the customer portal. Bot senders and internal agent comments never trigger a reopen. When a reopen fires, Ravenna posts a private system note on the ticket explaining why it moved back to **Open**.

  The setting is on by default. Workspace admins can toggle it from the new **Re-Open Tickets** card under **Settings** → **Workspace** → **Automation**.

  [Learn more →](/documentation/platform/workspaces/settings#re-open-tickets)

  ## Lock shared table views and duplicate any view

  Shared [table views](/documentation/tickets/organize/views) now have an **Allow edits** toggle that controls who can promote personal changes back to the shared view. When it's off (the new default), non-owner, non-admin members no longer see the **Save for all** and **Save view options to view** actions, so their personal filter, column, sort, and display-mode tweaks stay scoped to them. Owners and workspace admins always bypass the lock. Every member can still customize the view for themselves through the existing personal overrides model.

  Any workspace member can also **Duplicate** a view from the sidebar's view menu. Duplicates are always created private, locked (**Allow edits** off), and owned by you. Each copy captures your *effective* view, layering your personal filter and display overrides on top of the shared configuration instead of cloning only the owner's saved definition.

  [Learn more →](/documentation/tickets/organize/views#lock-shared-views)

  ## Inline previews and download all for ticket attachments

  Ticket attachments now open in a redesigned preview with a header, filename, and one-click download. Inline previews cover PDFs, audio, and text files alongside images and video. Messages with more than one attachment get a **Download all attachments** action in the message menu that packages everything into a single zip.

  [Learn more →](/documentation/tickets/attachments)

  **Quality of life updates:**

  * The entitlement status [workflow trigger](/documentation/automate/workflows/triggers-actions) now accepts multiple statuses in one rule, so a single workflow can fan out on **Provisioned**, **Deprovision failed**, **Skipped provisioning**, and other outcomes together instead of duplicating the trigger.
  * LLM calls that power Copilot, agents, and the message classifier now fall back to a secondary provider on retryable errors, so a transient outage or rate limit at one provider no longer surfaces as a failed run.
  * The **SLAs** section on the ticket sidebar now starts collapsed when a ticket has no matching SLA targets, so the attribute panel stays focused on fields that apply.

  **Bug fixes:**

  * The workflow editor side panel no longer shows stale inputs after switching a step to a different action. The panel now re-renders cleanly when the selected action changes.
  * Message editor: pressing **Shift+Enter** at the end of a code fence now creates the code block instead of leaving raw backticks. Picking a language that isn't recognized falls back to plain text instead of throwing.
  * [Copilot analytics](/documentation/automate/copilot/everyday-tasks#analytics-and-reporting): grouped **average**, **sum**, **min**, **max**, and **percent of** queries no longer error out. Grouping by a time field (like created at or hour of day) now defaults to a daily bucket so the query runs without extra prompting.

  <ShippedBy handles={["Jpsese", "kcoleman731", "jayantbh", "ZzurabSiprashvili", "tayhalla", "mgorbatenko", "ravenna-tom", "mplachter"]} />
</Update>

<Update label="July 3, 2026" tags={["Foundry", "Slack", "Tickets", "Google Workspace"]}>
  ## Use Microsoft Entra credentials in Foundry actions

  Foundry-generated actions can now call the Microsoft Graph API using your connected Microsoft Entra integration, without registering a separate OAuth provider. When you select Microsoft Entra as an integration on an action, Foundry mints a short-lived Graph token at run time using the Entra app registration your org already trusts, and Copilot's code generation gets an Entra-specific hint that steers it toward the right Graph permissions.

  [Learn more →](/documentation/automate/foundry/integrations)

  **Quality of life updates:**

  * `/support` is now a Slack [slash command](/integrations/slack/slash-commands) alongside `/rav` and `/help`, giving teams that use "support" as their everyday word another discoverable entry point into ticket creation.
  * Foundry actions now let you configure a linked built-in integration inline from the **Integrations** panel, so admins can adjust scopes and native credential settings without leaving the action editor.
  * Ticket lists now sort by more [custom field types](/documentation/tickets/forms/custom-fields), including **Duration**, **Timezone**, and **Boolean** fields, so queues built on those columns stay in a consistent order.
  * [Google Workspace group sync](/integrations/google-workspace/workflows) now stores the group description alongside owners, managers, and settings, so descriptions stay in step with what's set in the Google Admin console.

  **Bug fixes:**

  * Imported Slack bot users are once again selectable as assignees, authors, approvers, and requesters when a workspace has bot users enabled, restoring parity with mention search.

  <ShippedBy handles={["sl1pm4t", "ravenna-tom", "niko-cxvedadze", "ZzurabSiprashvili", "mplachter"]} />
</Update>

<Update label="July 2, 2026" tags={["Copilot", "Tickets", "Okta", "Portal", "Foundry", "Knowledge", "Slack"]}>
  ## Inline-edit dates and custom fields in the tickets table

  You can now edit date columns and custom field columns directly from the tickets table, without opening each ticket. Click a cell to update a due date, single- or multi-select tag, or text value in place and move on to the next row.

  [Learn more →](/documentation/tickets/organize/views)

  ## Resolution path metric on ticket analytics

  The Tickets dashboard now includes a **Resolution path** breakdown that classifies every resolved ticket as **human touched**, **AI resolved**, **workflow only**, or **unclassified**. Group any Tickets widget by **Resolution path** to see the mix over time, and use the new **No Human Touch** percent-of field to track the share of resolved volume that closed without an agent stepping in.

  [Learn more →](/documentation/measure/analytics)

  **Quality of life updates:**

  * The [Okta requester card](/integrations/okta/cards) now shows the user's **Status** and **Last login**, so you can spot deactivated or stale accounts at a glance.
  * The customer portal home now lists workspaces you belong to but haven't opted into as a portal user, so members can jump straight into those teams instead of hitting a dead end.
  * The [agents editor](/documentation/automate/agents/configure) tool list has a cleaner header with an inline **Add** button, a lighter tool row layout, and tidier @mention chips.
  * The [OAuth provider dialog](/documentation/automate/foundry/integrations) groups fields under **Basic**, **Authorization**, and **Token exchange** headings, adds a grant type control that hides irrelevant fields, and cleans up the **Advanced settings** section.
  * The **Connect fields** tab in the OAuth provider dialog is now hidden for org-scoped providers, since connect fields only apply to global provider templates.
  * When [Foundry action research](/documentation/automate/foundry/actions) hits an unhelpful cached page, it can now skip the cache, exclude URLs it has already tried, and fetch a direct URL you paste in, so iterating on doc discovery is faster.

  **Bug fixes:**

  * Foundry agent tools now route through the same approval and confirmation gates as other agent actions, so guardrails you configured on an integration apply everywhere.
  * Foundry OAuth integrations using the **Client Credentials** grant type now refresh their tokens correctly instead of failing once the initial token expires.
  * SharePoint knowledge base citations now open in the SharePoint browser viewer instead of forcing a file download.
  * Knowledge base resyncs now patch source URLs on existing documents, so links stay current when a source changes how it exposes URLs (for example, SharePoint's viewer URLs).
  * Google Drive knowledge sources now resolve file IDs from the correct field, fixing metadata fetches for documents added after the recent knowledge source refactor.
  * @mentions in Slack messages used with **Rapid ticket creation** now convert to plain names in the ticket description instead of leaving raw Slack IDs.

  <ShippedBy handles={["ravenna-tom", "Jpsese", "jayantbh", "raayyananan", "sl1pm4t", "mplachter", "tayhalla", "mzanini", "niko-cxvedadze"]} />
</Update>

<Update label="July 1, 2026" tags={["Okta", "Foundry", "Analytics", "Slack", "Tickets", "Knowledge"]}>
  ## Configure your Okta requester card

  The Okta card on the ticket sidebar is now driven by a field configuration you control, so you can show the identity attributes your agents actually need and hide the rest. Field visibility persists per workspace and applies to every ticket where the requester resolves to an Okta user.

  [Learn more →](/integrations/okta/cards)

  ## Client Credentials OAuth providers in Foundry

  Register a Foundry OAuth provider with the **Client Credentials** grant type for server-to-server APIs that authenticate the whole org with a single machine credential. A new **Connect fields** builder lets you collect per-org values (like a tenant ID or account slug) during connect and interpolate them into the token URL, so one provider template covers customers with different endpoints.

  [Learn more →](/documentation/automate/foundry/integrations#grant-types)

  **Quality of life updates:**

  * You can now [sort ticket lists by a single-select custom field](/documentation/tickets/forms/custom-fields), so queues built on tags like tier, environment, or region stay in a consistent order.
  * SLA over-time analytics widgets now [include tickets with no priority](/documentation/measure/analytics), so at-risk and breached counts match what you see in the ticket list.
  * The Okta password reset and MFA reset agent tools are now separate actions, so agents pick the exact remediation instead of running both. See the [Okta workflows](/integrations/okta/workflows) reference.
  * When an AI agent hits its tool-call limit, it now posts a short summary of what it got done instead of leaving the conversation in a "thinking" state, in Slack, on tickets, and in the customer portal.
  * Slack message edits now sync attachment additions and deletions to the linked ticket, keeping the ticket file list in step with the source message.
  * Consecutive SLA events on a ticket are grouped in the activity timeline, so long-running tickets read more like a summary and less like a wall of events.
  * The knowledge base document picker now reuses an existing Google Drive connection when one is already set up, so you skip the reconnect step when adding new folders.
  * Knowledge sources whose documents are all archived are now hidden from the ingestion queue, so status views only surface sources with real work to do.
  * The SharePoint integration tile now uses the SharePoint logo.

  **Bug fixes:**

  * The SLA tag filter now displays the tags you've selected instead of showing an empty chip.
  * Synced groups from identity providers now appear on the **Application → Groups** tab again.
  * Reminders on tickets now cancel correctly when the ticket status changes to a state that shouldn't carry a reminder.
  * The escalation banner in Slack no longer renders with a broken border.
  * Time to Resolution and Time to Close widgets no longer show negative durations when a ticket is reopened and closed again.
  * The knowledge source picker modal no longer clips its content on smaller screens and scrolls the full list.
  * Notion knowledge sources refreshed right after a re-auth now wait for the index to catch up, so documents no longer briefly disappear.
  * Reconnecting a Freshservice knowledge base no longer duplicates or orphans source records.
  * Foundry OAuth providers now free their slug on delete, so you can recreate a provider with the same name. Connecting a Client Credentials provider from **Settings → Integrations** now works on the first click.
  * The Foundry OAuth **Connected** badge now shows immediately after a successful connect instead of only after a page refresh.

  <ShippedBy handles={["tayhalla", "sl1pm4t", "niko-cxvedadze", "nth-chile", "Jpsese", "jayantbh", "ravenna-tom", "ZzurabSiprashvili", "mzanini"]} />
</Update>

<Update label="June 30, 2026" tags={["Copilot", "MCP", "Analytics", "Tickets", "Forms", "Foundry"]}>
  ## Chart analytics from Copilot and MCP

  Ask Copilot to count, chart, or trend data over tickets, ticket messages, knowledge base documents, or workflow runs. Copilot picks the right card type, renders it inline, and offers to save it as a widget on a new or existing dashboard. The same tools are exposed over the MCP server, so any connected AI client can query analytics, list and read dashboards, and add or update widgets without leaving the conversation.

  [Learn more →](/documentation/automate/copilot/everyday-tasks)

  ## Slack DMs for @mentions in private notes

  @mention a workspace member in a [private note](/documentation/tickets/private-notes) and they get a Slack DM about the callout. The DM includes who mentioned them, the ticket title, an excerpt of the note, and buttons to open the ticket in Ravenna or jump to the matching Slack thread. Because private notes never appear in request or DM threads, this DM is the only way a mentioned teammate is alerted.

  [Learn more →](/documentation/tickets/private-notes)

  **Quality of life updates:**

  * [Deflection rate as a percentage aggregation](/documentation/measure/analytics) is now available on analytics widgets, so you can chart the share of tickets resolved by AI without pre-computing the math.
  * [Deflection and automation status filters on analytics widgets](/documentation/measure/analytics) let you scope any chart to deflected, agent-assisted, or human-handled tickets, and to automated, automatable, or non-automatable resolutions.
  * Foundry skips the initial clarifying questions when you describe a new function and preserves your existing code as it iterates, so you spend less time re-confirming intent and re-pasting work.
  * Foundry iteration prompts now include test run results and the identity behind each change, so follow-up edits stay grounded in what actually happened on the last run.
  * The inline **Create new tag** row is back in the tag picker, so you can add a missing tag without leaving the dropdown.
  * The role editor hides the **Guest** role for non-guest members, so you no longer have to scroll past an option that does not apply.

  **Bug fixes:**

  * AI-generated ticket titles and descriptions no longer pull content from private notes, keeping internal context out of customer-visible fields.
  * Ticket cards and form submission cards render correctly in the [customer portal chat](/documentation/platform/portal/requesters) when the ticket lives in a different workspace, instead of failing to load.
  * The parent ticket link in the ticket detail metadata chips is clickable again, so you can jump from a sub-ticket to its parent in one click.
  * Slack form submission attachments are scoped to the submitter's request, so files uploaded through one form no longer surface in unrelated Slack ticket threads.
  * Drag-and-drop reordering of [request type custom fields](/documentation/tickets/forms/overview) saves the new order reliably instead of snapping back.
  * Switching between Copilot agents mid-conversation no longer leaves the chat wired to the previous agent.

  <ShippedBy handles={["mplachter", "Jpsese", "nth-chile", "jayantbh", "tayhalla", "niko-cxvedadze"]} />
</Update>

<Update label="June 29, 2026" tags={["Forms", "Tickets", "Integrations", "Knowledge", "Analytics", "Workflows"]}>
  ## Share form links anywhere, including Slack

  <Frame>
    <img src="https://mintcdn.com/ravenna/ilqfR_GjD5oBVmvY/images/changelog/2026/form_unfurl_slack.png?fit=max&auto=format&n=ilqfR_GjD5oBVmvY&q=85&s=d357a47dc14e82db4a8fe42034a0e2f6" alt="Slack Form Unfurl" width="1200" height="800" data-path="images/changelog/2026/form_unfurl_slack.png" />
  </Frame>

  Copy a direct customer portal URL to any form from the forms list or form detail page, then drop it into a Slack channel, DM, or thread. The link unfurls as a card with an **Open Form** button that launches the form as a Slack modal, so requesters can submit without leaving Slack or hunting through screenshots.

  [Learn more →](/documentation/tickets/forms/overview)

  **Quality of life updates:**

  * [Notion and GitHub knowledge source picker](/documentation/automate/knowledge/overview) now lets you both add new sources and remove already-imported ones in the same dialog, with the list staying in sync as you edit.
  * [Confluence panels import as GitHub-style alerts](/integrations/confluence/knowledge) so info, note, tip, warning, and error panels keep their callout styling when synced into Ravenna knowledge instead of flattening to plain paragraphs.
  * [Percent of distribution mode for analytics](/documentation/measure/analytics) adds a new behavior to the **Percent of** aggregation. Pair it with a **Group by** dimension and leave **Field to Aggregate** empty to chart each group's share of the total as percentages that sum to 100%.
  * Applying an approval template to a ticket runs noticeably faster, so large templates with many approver groups no longer stall the ticket while the rounds are built.

  **Bug fixes:**

  * Workflow step input filters: **Channel**, **Source**, **Provisioning Method**, and **Access Level** options now populate reliably in ticket filter conditions, even when those fields aren't referenced elsewhere in the workflow.
  * Outbound ticket emails skip bot accounts when resolving recipients, so SES no longer rejects messages addressed to non-mailable system users and email-sourced tickets thread cleanly.
  * Ticket due dates fail fast on malformed input instead of silently parsing to an unintended date, so an invalid value is rejected rather than saved as the wrong day.
  * The **Static Webpage** icon inverts correctly in dark mode in the knowledge document tables, matching the other source icons.
  * Response-time analytics no longer count bot replies when setting a ticket's first responded-at timestamp, so first-response metrics reflect human agent activity.

  <ShippedBy handles={["raayyananan", "kcoleman731", "Jpsese", "niko-cxvedadze", "mgorbatenko", "mzanini", "kailashnath"]} />
</Update>

<Update label="June 26, 2026" tags={["MCP", "Copilot", "Tickets", "Integrations"]}>
  ## Form tools for the Copilot MCP server

  Ravenna's Copilot now exposes its form-building tools over MCP. Any connected AI client can create and update forms, add and edit fields, and inspect form collections without leaving the conversation. Teams configuring intake for IT requests, HR onboarding, or RevOps approval flows can describe the form they want, let the assistant assemble it, then iterate on field types and validation in place.

  [Learn more →](/documentation/automate/mcp/tools)

  **Other updates:**

  * [Change assignee from a Kanban ticket card](/documentation/tickets/organize/views) without opening the ticket, so triage and standups stay on the board
  * [Cleaner Slack form rendering](/integrations/slack/creating-tickets) keeps form titles, icons, and field layout consistent across light and dark Slack themes

  **Bug fixes:**

  * Ticket card tooltips in the Ravenna AI chat no longer crash the app on hover
  * The date-edit trigger is back in the ticket Dates section so due dates and other dates can be edited inline again
  * New-ticket drafts persist correctly when the create-ticket modal is closed and reopened, so in-progress requests are not lost

  <ShippedBy handles={["lawson-n", "jayantbh", "nth-chile", "Jpsese"]} />
</Update>

<Update label="June 25, 2026" tags={["Analytics", "Knowledge", "Automation", "Integrations"]}>
  ## Table widgets on analytics dashboards

  <Frame>
    <img src="https://mintcdn.com/ravenna/FCZX3t3uJM9PeUsb/images/changelog/2026/table-widgets.png?fit=max&auto=format&n=FCZX3t3uJM9PeUsb&q=85&s=00574b6dba3b3120153a30fc535cbfba" alt="A Table widget listing open access requests alongside dashboard charts" width="1200" height="800" data-path="images/changelog/2026/table-widgets.png" />
  </Frame>

  A new **Table** widget type joins metric, grouped, and trend visualizations on analytics dashboards. Pick the columns you want, sort and search inline, and surface the underlying ticket rows next to the charts that summarize them, useful for ops reviews, backlog standups, or any moment where the dashboard answer is "show me the list."

  [Learn more →](/documentation/measure/analytics)

  ## Drill into any chart value

  Click a bar, slice, or data point on any Tickets-powered chart to open a drill-down modal listing the individual tickets behind that value. The chart's filters, group, and date range carry over, and you can search and sort inside the modal. A one-click handoff opens the same result set in the full tickets list for bulk actions or export, so you can investigate spikes without losing your place on the dashboard.

  [Learn more →](/documentation/measure/analytics#drilling-into-chart-values)

  ## Filters on reminder policies

  Approval and assignment reminder policies now accept ticket condition filters, so a single workspace policy can target only the tickets that should be nudged. Scope reminders to a specific queue, priority, requester group, or any combination of ticket attributes. For example, escalate access-review approvals after one business day while leaving low-priority requests alone.

  [Learn more →](/documentation/tickets/reminders)

  ## Search across knowledge folders

  Knowledge now supports root-level search from the **Folders** tab. One query matches both folder names and document titles across every folder in the workspace, with each result tagged by type and parent folder. Jump straight to a specific runbook or policy without remembering which folder owns it.

  [Learn more →](/documentation/automate/knowledge/overview#searching-across-folders)

  ## Opt-in streaming for the Ravenna copilot

  The Ravenna copilot can now stream responses progressively as they are generated. Long answers, like multi-paragraph troubleshooting or summaries of a ticket thread, start appearing immediately instead of arriving as one block, making the copilot feel faster across IT, HR, and support work.

  **Other updates:**

  * [Approvers and Approved At columns are back in ticket exports](/documentation/tickets/organize/views#export-tickets) so audit-ready CSVs include who approved a ticket and when
  * [Business schedule archive guardrails](/documentation/platform/workspaces/settings) block archiving or deleting a schedule that still has SLAs attached, and show you exactly how many SLAs to move first
  * Microsoft Teams connections now reject linking the same Teams tenant to more than one Ravenna organization, so admins get a clear error instead of a half-connected workspace
  * [Foundry OAuth provider test connection](/documentation/automate/foundry/integrations#oauth-providers) now flags a reachable token endpoint that rejects `client_credentials` as a warning, so you can save providers that only verify through the authorization code flow
  * Group sync from HRIS and identity providers now processes large directories in batches, so workspaces with thousands of groups complete a sync without timing out

  **Bug fixes:**

  * Analytics donut charts hold a consistent gap between slices instead of widening as values shift
  * Jira's assignable-user picker paginates through every project member instead of stopping at the first page
  * The customer portal workspace picker only lists workspaces that actually have the portal turned on
  * Ticket detail polish: approval rounds, message cards, and the side scrollbar render cleanly on long tickets
  * Ticket due dates persist correctly across edits
  * Large group syncs from identity providers process in batches so workspaces with thousands of groups complete reliably without database timeouts

  <ShippedBy handles={["kcoleman731", "Jpsese", "raayyananan", "mgorbatenko", "jayantbh", "ZzurabSiprashvili", "niko-cxvedadze", "kailashnath", "ravenna-tom", "mzanini", "lawson-n", "tayhalla"]} />
</Update>

<Update label="June 24, 2026" tags={["Tickets", "Approvals", "Platform"]}>
  ## Snippets for reusable replies

  <Frame>
    <img src="https://mintcdn.com/ravenna/UBIVsWeKzLh3Fd-Q/images/changelog/2026/snippets.png?fit=max&auto=format&n=UBIVsWeKzLh3Fd-Q&q=85&s=a9e5b6bcff585271570c9b60b526d735" alt="Snippets" width="1200" height="800" data-path="images/changelog/2026/snippets.png" />
  </Frame>

  Save frequently used responses as snippets at the workspace level and insert them into any ticket reply to keep tone, formatting, and policy language consistent. Snippets are available through the Ravenna API and as MCP tools, so agents and external tools can drop in approved wording without retyping.

  [Learn more →](/documentation/tickets/snippets)

  ## Approval and assignment reminders

  Two new reminder types keep work moving without manual nudging. [Approval reminders](/documentation/tickets/reminders#approval-reminders) re-ping approvers on a configurable cadence until an approval round completes, and [assignment reminders](/documentation/tickets/reminders#assignment-reminders) prompt assignees on tickets that have gone quiet. Both honor the workspace's default business schedule so reminders fire only during working hours, and a new **Reminder Expired** workflow trigger lets you escalate or reassign when a reminder cycle runs out.

  ## Conditions for reminder policies

  Approval and assignment [reminder policies](/documentation/tickets/reminders) now support **conditions**. Add one or more filter groups to a policy and reminders only fire for tickets that match. For example, only nudge approvers on `High` and `Urgent` priority tickets, or only chase assignees in a specific queue. Leave conditions empty to keep reminding on every ticket, as before.

  Conditions are re-evaluated every time a reminder is about to fire. A ticket that moves out of scope is silently skipped without burning a slot against your **Maximum reminders** cap, and resumes nudging if it moves back into scope. To keep things bounded, a reminder chain stops on its own after 30 days if a ticket never matches.

  [Learn more →](/documentation/tickets/reminders#conditions)

  ## Workspace Automation settings

  A new Automation section in workspace settings consolidates assignment reminders, agent escalation defaults, and related routing toggles in one place instead of spreading them across feature pages. Workspace admins can audit and tune automation behavior without hunting through individual workflows or queues.

  [Learn more →](/documentation/platform/workspaces/settings)

  **Other updates:**

  * [Workflow duplication and cross-workspace copy](/documentation/automate/workflows/triggers-actions) clone a workflow into the same workspace or a different one, with collection placement preserved
  * [Foundry Dry Run mode](/documentation/automate/foundry/using-actions) executes a Foundry action against the live API but rolls back side effects, so you can validate request shape and auth without changing data
  * [AI deflection status on the tickets dashboard](/documentation/measure/analytics) breaks resolved tickets into deflected, agent-assisted, and human-handled so you can size automation impact at a glance
  * [Explain in Agents Chat Logs](/documentation/automate/agents/customize) surfaces the reasoning, rule match, and tool calls behind any agent response from the chat log timeline
  * [Agent version upgrades](/documentation/automate/agents/configure) move an agent from V2 to V3 in place, preserving rules, knowledge, and history
  * [Ticket Created notification group for requesters](/documentation/platform/notifications) controls whether requesters get a confirmation message when their ticket is created
  * [Inbound email block list and subdomain matching](/integrations/email/overview) reject mail from specific senders or whole domains before a ticket is created, with explicit subdomain semantics
  * [CSV export for the Applications list](/documentation/manage-access/applications) exports the current filtered view for access reviews and audits
  * [Short ID and ID filters for ticket views](/documentation/tickets/organize/views) filter by the ticket ID or short ID shown in the UI, including ranges and "in" sets
  * [Create Application and Access Levels MCP tools](/documentation/automate/mcp/tools) plus approval template tools let AI assistants stand up new applications and approval flows end to end

  **Quality of life updates:**

  * Manager approver resolution clearly documents the lookup order across HRIS, identity providers, and manually set managers
  * Freshservice knowledge base sync respects the category you select instead of pulling every Solutions article
  * Slack emoji actions show a clear notice when a non-member triggers them on a private ticket
  * Confluence sync resolves `@mentions` to the underlying Ravenna user when an email match exists
  * Notion page fetches in the knowledge selector now stream asynchronously so large workspaces stop timing out
  * Reminders, SLAs, and other timer-based features all default to the workspace's business schedule so weekend hours are handled consistently

  <ShippedBy handles={["kcoleman731", "ravenna-tom", "tayhalla", "mzanini", "niko-cxvedadze", "lawson-n", "jayantbh", "Jpsese", "mplachter"]} />
</Update>

<Update label="June 5, 2026" tags={["Integrations", "Knowledge", "Workflows"]}>
  ## Freshservice ticket replication

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/freshservice.jpg?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=f923343ce53e2f67ff59c38ddc15a81c" alt="Freshservice tickets syncing with Ravenna" width="1200" height="800" data-path="images/changelog/freshservice.jpg" />
  </Frame>

  Connect Freshservice for full bidirectional ticket replication. Tickets, comments, custom fields, and status changes sync in real time over webhooks, author attribution is preserved across both systems, and private comments stay private. Freshservice Solutions articles can also sync as a knowledge source so your agent answers from your existing support content.

  [Learn more →](/integrations/freshservice/ticket-replication)

  <ShippedBy handles={["ZzurabSiprashvili", "tayhalla"]} />
</Update>

<Update label="June 5, 2026" tags={["Integrations", "Knowledge"]}>
  ## GitHub repositories as a knowledge source

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/github.jpg?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=2841505ee398b8071077ffad98c0fe69" alt="Selecting GitHub repositories to sync as knowledge" width="1200" height="800" data-path="images/changelog/github.jpg" />
  </Frame>

  Connect GitHub repositories so your agent can answer from documentation you already maintain. Pick which repos to sync and Ravenna pulls in Markdown, text, and documentation files, preserves your folder structure, and stays current as you push changes.

  [Learn more →](/integrations/github/knowledge)

  <ShippedBy handles={["mzanini", "kcoleman731"]} />
</Update>

<Update label="June 5, 2026" tags={["SLAs", "Workflows", "Platform"]}>
  ## Business schedules for SLAs

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/business-schedules.jpg?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=7e6f09c20b78a782364bc484bf56cb75" alt="Configuring a business schedule with working hours and holidays" width="1200" height="800" data-path="images/changelog/business-schedules.jpg" />
  </Frame>

  SLA targets can now follow your team's actual working hours. Define a business schedule with a timezone, weekly hours, and holidays, then attach it to any SLA policy. Targets pause outside business hours and resume when your team is back online.

  [Learn more →](/documentation/automate/slas)

  ## Redesigned cron trigger

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/cron-trigger.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=cf4c834a4150be12895a7cdfcfd0b6d7" alt="Scheduled workflow trigger using a cron expression" width="1200" height="800" data-path="images/changelog/cron-trigger.png" />
  </Frame>

  The scheduled workflow trigger now uses standard cron expressions and any timezone, so recurring workflows no longer depend on UTC offsets or rigid dropdowns. Existing schedules migrate automatically.

  [Learn more →](/documentation/automate/workflows/triggers-actions)

  **Other updates:**

  * [MCP OAuth sign-in](/documentation/automate/mcp/overview) lets you log in once and reach every workspace from a single session, with no per-workspace API keys

  * [Settings home](/documentation/platform/workspaces/settings) is a searchable landing page that surfaces every organization, workspace, and personal setting as a card

  * [Sort tickets by custom fields](/documentation/tickets/organize/views) sorts a ticket table by date, number, text, or dropdown values

  * [Personal view overrides](/documentation/tickets/organize/views) let you adjust filters and display on a shared view without affecting teammates

  * [User groups for app owners and approvers](/documentation/manage-access/applications) assign a team instead of a single person so coverage continues when individuals are out

  * [Copilot conditional fields and form deletion](/documentation/automate/copilot/configure-workspace) build show/hide dependencies, restrict picker options, or delete forms in natural language

  * [Agent form-link emails](/integrations/email/overview) send the requester a direct link to a prefilled portal form during an email conversation

  * [Search Users action](/documentation/automate/workflows/triggers-actions) looks up users by criteria and feeds results into downstream steps

  * [Arrow key ticket navigation](/documentation/get-started/shortcuts) moves between tickets without returning to the list

    **Quality of life updates:**

  * Approval descriptions appear inline so you can review and act without opening a separate view

  * Guest user navigation hides Command K and search for external guests

  * Forwarded emails identify the original sender instead of the forwarding service

  * Column visibility and reorder changes on custom views save and reset reliably

  * Slack form modals no longer fail when an agent prefills a multi-select field

      <ShippedBy handles={["niko-cxvedadze", "ravenna-tom", "ZzurabSiprashvili", "kcoleman731", "kailashnath", "mzanini", "lawson-n", "mgorbatenko", "raayyananan", "tayhalla", "jayantbh"]} />
</Update>

<Update label="May 26, 2026" tags={["Agents", "Workflows"]}>
  ## Approval-gated agent tools

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/workflow-retries.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=d7fc9a290f30ded6f45260057a71fdd1" alt="Agent tool execution policies with approval gates" width="1200" height="800" data-path="images/changelog/workflow-retries.png" />
  </Frame>

  Agent rules now support per-tool execution policies. Configure each tool to auto-execute, require user confirmation, or require approval from a designated approver before running. Approval-gated tools batch into a single approval round per agent plan, so approvers review one consolidated request instead of many.

  [Learn more →](/documentation/automate/agents/configure)

  ## Retry failed workflow runs

  Retry a workflow run directly from the run history. Rerun from the beginning, retry against the latest published version, or resume from the failed step while reusing successful upstream outputs. The new run links back to the original for full traceability.

  [Learn more →](/documentation/automate/workflows/monitor)

  **Other updates:**

  * [Agent ticket ownership](/documentation/tickets/roles) separates AI agent work from human assignees so internal routing skips notifications, CSAT, and OOO delegation

  * [Named-assignee escalation](/documentation/automate/agents/configure) specifies which user a ticket is assigned to when it escalates to a human

  * [Wait for Approval timeout branch](/documentation/automate/workflows/triggers-actions) adds an On Timeout path so stalled requests can be escalated or auto-closed

  * [Application approver field](/documentation/manage-access/applications) designates a dedicated approver, separate from the application owner

  * [HiBob Get OOO Users](/integrations/hibob/overview) lists who is on vacation for a date range

  * [Compare previous period toggle](/documentation/measure/analytics) overlays the preceding period on trend cards

  * [/help Slack command](/integrations/slack/overview) adds a discoverable alias for /rav

    **Quality of life updates:**

  * Forms default to Draft on creation so you can configure before publishing

  * Task templates use inline editing instead of separate tabs

  * Externally-synced knowledge documents hide the Edit button with guidance to edit at the source

    **Bug fixes:**

  * Email rendering no longer freezes on large threads, and reply threading is fixed for forwarded chains

  * Form fields render correctly for non-workspace members

  * Multi-turn conversational form filling completes properly

  * Slack admin escalation works correctly for channel create and archive actions

      <ShippedBy handles={["kcoleman731", "niko-cxvedadze", "ZzurabSiprashvili", "mgorbatenko", "mzanini", "kailashnath", "lawson-n", "ravenna-tom", "Jpsese", "jayantbh"]} />
</Update>

<Update label="May 18, 2026" tags={["Workflows", "Approvals", "Agents", "Integrations"]}>
  ## Trigger workflows from external systems

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/skip-trigger-automate.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=88f3584b1a040b6d0a62ee9c9ed7653a" alt="Configuring an external webhook trigger for a workflow" width="1200" height="800" data-path="images/changelog/skip-trigger-automate.png" />
  </Frame>

  Trigger a workflow from any external system using a secure webhook URL. Each workflow gets a unique URL that third-party tools, automation platforms, or custom integrations can POST to, and the payload becomes available as workflow context. No API keys needed.

  [Learn more →](/documentation/automate/workflows/triggers-actions)

  ## Smart approval routing

  Approval rounds now support skip conditions based on requester attributes, ticket properties, or integration data. For example, skip "Manager approval" when no manager is set. If every round is skipped, the ticket auto-approves with no manual intervention.

  [Learn more →](/documentation/tickets/approvals/rounds)

  ## Smarter agents

  Your agent can now read files shared in Slack. PDFs, images, and documents are processed automatically and used to answer questions, prefill form fields, and route tickets. The agent also knows where a user is writing from, so it won't tell someone to post in a channel they're already in.

  [Learn more →](/documentation/automate/agents/customize)

  ## Time-off management with HiBob

  The HiBob integration adds two workflow actions. Get Time-off Balance retrieves an employee's remaining PTO across all policy types, and Request Time Off submits requests on their behalf with an optional approver and description.

  [Learn more →](/integrations/hibob/overview)

  **Other updates:**

  * [Assignee Group filter for SLAs and views](/documentation/automate/slas) targets policies and views to tickets where the assignee belongs to a specific group

  * [Google Workspace security group creation](/integrations/google-workspace/workflows) adds label support to the Create Group action

  * [Auto-populate ticket defaults from view filters](/documentation/tickets/organize/views) pre-fills assignee, status, priority, and tags from your active view

  * [Dynamic Wait Until dates](/documentation/automate/workflows/triggers-actions) accept dynamic values from triggers or upstream steps

  * [Email delivery status badges](/integrations/email/overview) show whether outbound emails were delivered, in the ticket timeline

  * [Workflow failure notifications for completed-with-errors](/documentation/automate/workflows/monitor) fire on partial errors, not just fully failed runs

    **Quality of life updates:**

  * Redesigned badges and chips with consistent sizing and cleaner dark mode colors

  * Breadcrumbs truncate long page names instead of wrapping

  * Custom field columns order before the actions column in ticket tables

  * Workflow runs pagination is visible without scrolling

  * Agents clearly explain why a blocked action was denied

    **Bug fixes:**

  * Slack agent tools resolve channels and users correctly on Enterprise Grid

  * Approval wait triggers resolve correctly after a ticket moves between queues

  * Foundry actions with stored credentials execute correctly inside workflows

  * Custom SELECT fields render as proper dropdowns in workflow conditions

      <ShippedBy handles={["ZzurabSiprashvili", "Jpsese", "niko-cxvedadze", "tayhalla", "ravenna-tom", "mplachter", "kailashnath", "jayantbh", "raayyananan", "sl1pm4t", "kcoleman731", "lawson-n"]} />
</Update>

<Update label="May 6, 2026" tags={["Platform", "Security", "Approvals", "Integrations"]}>
  ## Admin audit log

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/admin-audit-log.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=93738c57977bf985f76b70aad4ca6d65" alt="The admin audit log filtered by actor and event type" width="1200" height="800" data-path="images/changelog/admin-audit-log.png" />
  </Frame>

  Track every administrative change across your organization with a searchable audit log. The audit log in organization settings records actions on agents, integrations, knowledge bases, and forms with full before and after context. Filter by event type, actor, resource, or date range, group events for pattern analysis, and export to CSV for compliance reporting.

  [Learn more →](/documentation/platform/organizations/audit-log)

  ## Approval rounds

  Build multi-stage approval workflows with configurable policies per round. Each round can require any one approver, all approvers, or a custom threshold before advancing. Sequential execution keeps review structured and auditable for access requests and sensitive operations.

  [Learn more →](/documentation/tickets/approvals/rounds)

  ## Intune device management actions

  Six new workflow actions and agent tools for Microsoft Intune: Autopilot Reset, Retire Device, Sync Device, Rotate BitLocker Key, Wipe Device, and Assign Script. Automate endpoint lifecycle management from workflows and agent conversations without leaving Ravenna.

  [Learn more →](/integrations/intune/workflows)

  **Other updates:**

  * [Conditional KB routing in agent rules](/documentation/automate/knowledge/overview) directs knowledge lookups to specific folders based on the topic of the conversation

  * [Task template folders](/documentation/tickets/tasks) group task templates by department, workflow type, or any structure you choose

  * [Google Workspace temporary password generation](/integrations/google-workspace/workflows) adds a temporary password option to the Reset MFA/Password action

  * [JumpCloud workflow actions](/integrations/jumpcloud/overview) add user lifecycle management and group operations, reaching parity with Okta

  * [Allowlist cap removed for Slack dropdowns](/documentation/tickets/forms/custom-fields) supports more than 100 options using searchable external selects

  * Draft and archived forms are no longer presented to AI agents

    **Quality of life updates:**

  * Icons on form tabs and ticket type selectors add visual indicators to navigation

  * The full Lucide icon library is available within the platform

  * Form tabs remember your last selection across sessions

  * Agent table layout fixes alignment and spacing issues

    **Bug fixes:**

  * Fixed form submission errors in Slack

  * Fixed conditional form fields clearing descendant values when a parent changes

  * Fixed knowledge base document deletion silently failing

  * Fixed icon picker dark mode gradient and broken icon names

  * Fixed rich text editor color in dark mode

      <ShippedBy handles={["kcoleman731", "mzanini", "lawson-n", "Jpsese", "niko-cxvedadze"]} />
</Update>

<Update label="April 28, 2026" tags={["Analytics", "Workflows", "Integrations"]}>
  ## Workflow runs in analytics

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/workflow-insights.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=335f1416d90dd6103daeb205dcee0b52" alt="A custom dashboard tracking workflow run volume and success rates" width="1200" height="800" data-path="images/changelog/workflow-insights.png" />
  </Frame>

  Custom dashboards now support a Workflow Runs data source. Track execution volume, success rates, and failure patterns grouped by workflow name, run status, collection, or related ticket dimensions like channel, assignee, and priority.

  [Learn more →](/documentation/measure/analytics)

  ## Share ticket workflow action

  Keep a ticket in its original workspace and channel while creating a shared reference in another workspace. Share actions let teams collaborate across workspace boundaries without moving tickets or losing context.

  [Learn more →](/documentation/automate/workflows/triggers-actions)

  ## AI reasoning in workflow runs

  The AI's explanation now appears alongside its decision when AI Decision Maker and Custom Prompt steps execute, visible in the workflow run step details. It's easier to understand why the model chose a path or made a decision.

  [Learn more →](/documentation/automate/workflows/monitor)

  **Other updates:**

  * [Type and Multi-application custom fields](/documentation/tickets/forms/custom-fields) add two new field types for forms

  * [JumpCloud application sync](/integrations/jumpcloud/overview) pulls applications with status, logo, and metadata for access management

  * [JumpCloud manager sync](/integrations/jumpcloud/overview) syncs manager relationships for approval chains and routing

  * [Intune device app lookup](/integrations/intune/agent-tools) retrieves installed applications on managed devices via agent rules and workflows

  * [Conditional visibility for all field types](/documentation/tickets/forms/overview) extends show/hide rules to layout and system fields

  * [Auto-submit forms by default](/documentation/automate/agents/customize) skips the form UI when an agent has prefilled all required fields

  * [Members filter bar and inline editing](/documentation/platform/users/members) add filtering and inline owner editing to member tabs

  * Ravenna is now listed on the [JAMF Marketplace](https://marketplace.jamf.com/details/ravenna)

    **Quality of life updates:**

  * Stale Slack forms rebuild instead of showing an error

  * Slack messages respect configured custom field ordering

  * Agents check the knowledge base before triage so existing docs can resolve requests

  * User lookup resolves guests by searching the full organization

  * Applications table supports sorting by status, owner, and source

  * Browser tabs show readable form names instead of raw IDs

      <ShippedBy handles={["ZzurabSiprashvili", "lawson-n", "niko-cxvedadze", "kcoleman731", "kailashnath", "ravenna-tom", "mzanini", "mplachter", "tayhalla", "jayantbh"]} />
</Update>

<Update label="April 20, 2026" tags={["Forms", "Integrations", "Access"]}>
  ## Forms 2.0

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/forms-2-0.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=1e7b6099204602594c1b1a9607535ea0" alt="The Forms 2.0 builder with lifecycle stages and audience controls" width="1200" height="800" data-path="images/changelog/forms-2-0.png" />
  </Frame>

  Forms now support a full lifecycle with draft, published, and archived stages. Draft forms stay hidden from requesters until you publish them, and archived forms no longer appear for selection without being deleted. Audience controls let you restrict which forms appear for different groups: everyone, workspace members only, or specific user groups.

  [Learn more →](/documentation/tickets/forms/overview)

  ## JumpCloud, OneLogin, and Microsoft Intune integrations

  [JumpCloud](/integrations/jumpcloud/overview) and [OneLogin](/integrations/onelogin/overview) are now generally available with user provisioning, directory sync, and access management workflows. [Microsoft Intune](/integrations/intune/overview) is a new MDM integration that shows device compliance data in tickets and supports automated device management through agent tools and workflows.

  **Other updates:**

  * [Ticket Type field](/documentation/tickets/organize/types) assigns one of five categories to tickets: Service, Incident, Problem, Change, or Access

  * [User groups in approval rounds](/documentation/tickets/approvals/rounds) can be selected as approvers

  * [Settings-driven form filling](/documentation/automate/agents/customize) uses deterministic agent settings to control conversational form behavior

  * [Okta auto-provisioning](/integrations/okta/overview) creates Organization Guest accounts for external Okta users during directory sync

  * [Jira private comment sync](/integrations/jira/ticket-replication) syncs Jira Service Desk internal comments to Ravenna private notes, and vice versa

  * [Skip-invite toggle and bulk resend](/documentation/platform/users/members) skip invitation emails when adding members and resend pending invitations in bulk

    **Quality of life updates:**

  * Inline text filters save when you click away from the input

  * Form fields render in the correct sequence across all form contexts

  * Custom field labels and descriptions increased to 2,000 characters

  * Custom fields are hidden by default in table views, and Reset Columns restores the default

  * Bulk unarchive restores child tickets throughout the hierarchy

  * Linear status mapping applies when creating issues, not just during status updates

      <ShippedBy handles={["mzanini", "ravenna-tom", "sl1pm4t"]} />
</Update>

<Update label="April 13, 2026" tags={["Platform", "Security", "Workflows", "Tickets"]}>
  ## Secure API credentials with Vault

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/vault.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=e5831c1714a9797ad0d6c1fdc877e96f" alt="Vault storing encrypted API credentials for workflows" width="1200" height="800" data-path="images/changelog/vault.png" />
  </Frame>

  Workflows that call external APIs no longer need credentials hardcoded into individual steps. Vault provides encrypted, organization-level storage for API keys, tokens, and secrets. Admins create a credential once and any workflow references it at runtime through the HTTP Request action. Credentials are encrypted at rest and never displayed after creation.

  [Learn more →](/documentation/platform/organizations/vault)

  ## Smarter workflow auto-triggers

  Workflow auto-trigger detection now reads the intent behind an agent rule instead of scanning for keywords. If a rule's purpose is to run a workflow immediately, the agent skips the confirmation step, and it recognizes when a user has already confirmed in conversation.

  [Learn more →](/documentation/automate/workflows/triggers-actions)

  ## Send and resolve in one click

  The ticket composer now includes a Send and resolve option that combines replying and closing into a single action. Choose it once and it becomes the default for later messages in that ticket, with keyboard shortcut support.

  [Learn more →](/documentation/tickets/organize/statuses)

  **Other updates:**

  * [Email footer customization](/integrations/email/overview) appends rich text like disclaimers and contact info to outbound emails from a channel

  * [MCP assigned tasks](/documentation/automate/mcp/tools) lists assigned task items for the current user

  * [Google Create Group Managers role](/integrations/google-workspace/workflows) assigns the Managers role when provisioning groups

  * [Duplicate agent rules](/documentation/automate/agents/configure) clone a rule to the same agent or a different one

  * [Ticket create API requesterEmail](/api/overview) sets the requester by email instead of user ID

    **Quality of life updates:**

  * A public thread reply warning appears when users reply in the public request thread of a private ticket

  * Jira setup now specifies that a standard user account is required, not a managed service account

      <ShippedBy handles={["ravenna-tom", "mplachter", "kcoleman731"]} />
</Update>

<Update label="March 30, 2026" tags={["AI", "Agents", "Workflows"]}>
  ## Connect AI assistants to Ravenna with MCP

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/mcp.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=9d37aa1a324193945bd0cefa38e0a3e1" alt="An AI assistant managing Ravenna tickets through MCP" width="1200" height="800" data-path="images/changelog/mcp.png" />
  </Frame>

  The Ravenna MCP server opens your workspace to AI assistants like Claude, Cursor, and VS Code through the Model Context Protocol. Manage tickets, look up users, configure access policies, and more from a single conversation instead of switching between tools.

  [Learn more →](/documentation/automate/mcp/overview)

  ## Agents pick the single best matching rule

  When multiple agent rules could apply, the agent now selects the single most specific match instead of trying to satisfy several at once. The result is more predictable, focused responses when rules overlap.

  [Learn more →](/documentation/automate/agents/configure)

  **Other updates:**

  * [Group Lookup agent tool](/documentation/automate/agents/configure) searches for user groups by name during conversational form filling

  * [User group workspace scoping](/documentation/platform/users/groups) enforces workspace-aware visibility for manually created groups in select fields

  * [Slack thread link as workflow variable](/documentation/automate/workflows/workflow-builder) passes a clickable Slack thread URL to webhooks and downstream steps

  * [Workflow triggers show a confirmation button](/documentation/automate/workflows/triggers-actions) by default when triggered without a form

    **Quality of life updates:**

  * Workflow step management supports deleting individual steps or entire branches, with keyboard shortcuts

  * Workflow badge navigation opens the specific run in a new tab from ticket events

      <ShippedBy handles={["tayhalla", "jayantbh", "niko-cxvedadze"]} />
</Update>

<Update label="March 23, 2026" tags={["Workflows", "Integrations"]}>
  ## Push-based identity verification in workflows

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/verify-identity.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=3a1ce436ef18054565a16be6795e69ee" alt="A workflow step sending an Okta Verify push notification" width="1200" height="800" data-path="images/changelog/verify-identity.png" />
  </Frame>

  A new Verify Identity with Push action sends an Okta Verify push notification and waits for the user's response. The action supports if/else branching so workflows follow different paths depending on whether the user approves or denies, for example requiring step-up verification before granting access to a sensitive resource.

  [Learn more →](/integrations/okta/workflows)

  ## Bulk actions with workflow loops

  Workflows now support a Loop action that iterates through a collection, running contained actions for each item. Process lists of users, tickets, or other data returned by actions like Search Tickets or List Groups, then notify, update, or chain multi-step operations across the whole set.

  [Learn more →](/documentation/automate/workflows/triggers-actions)

  **Other updates:**

  * [Parent ticket support in Update Ticket](/documentation/automate/workflows/triggers-actions) organizes tickets into parent-child hierarchies through workflows
  * [Google Workspace Create User fields](/integrations/google-workspace/workflows) add department, job title, manager, organizational unit, and recovery contact info
  * [Google Workspace Get Group](/integrations/google-workspace/workflows) returns an isSuccess boolean and includes group owner and manager IDs
  * [Google Workspace user sync](/integrations/google-workspace/setup) excludes suspended and archived users to match your active roster

      <ShippedBy handles={["lawson-n", "ishaans", "kailashnath", "Jpsese", "kcoleman731"]} />
</Update>

<Update label="March 16, 2026" tags={["Workflows", "Forms", "Knowledge", "Analytics"]}>
  ## Relative date scheduling in workflows

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/relative-date-conditional-fields.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=62202bb33fc559e115b0d5a22ffb61b8" alt="Scheduling a workflow action relative to a target date" width="1200" height="800" data-path="images/changelog/relative-date-conditional-fields.png" />
  </Frame>

  A new Wait Until action pauses execution until a specific date or a date relative to a target. Set an offset to trigger actions before or after key dates, for example a reminder five days before an onboarding start date or a follow-up a week after a renewal.

  [Learn more →](/documentation/automate/workflows/triggers-actions)

  ## Conditional form fields

  The form builder now supports conditional field visibility. Fields show or hide based on the value of another field, so requesters only see what is relevant. Nest dependent fields, collapse groups to keep complex forms manageable, and rely on visibility rules that carry through to the ticket detail view.

  [Learn more →](/documentation/tickets/forms/overview)

  **Other updates:**

  * [Knowledge gaps tab](/documentation/automate/knowledge/overview) surfaces topics where agents could not find an answer, with frequency and example conversations

  * [Ticket automation status metric](/documentation/measure/analytics) classifies resolved tickets as automated, automatable, or non-automatable

  * [Access levels tab](/documentation/manage-access/applications) gives each application a dedicated tab with click-to-edit configuration

    **Quality of life updates:**

  * Auto-linked URLs in custom fields detect and linkify bare URLs in text fields

  * Slack thread reaction notices explain when emoji actions are used on thread replies

      <ShippedBy handles={["Jpsese", "jayantbh"]} />
</Update>

<Update label="March 9, 2026" tags={["Copilot", "Platform", "Workflows"]}>
  ## AI-powered assistance for everything in Ravenna

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/copilot.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=312cae6b3a9e045a8ba0878b9a660c0f" alt="The Copilot chat panel open in the Ravenna web app" width="1200" height="800" data-path="images/changelog/copilot.png" />
  </Frame>

  Copilot is an AI assistant built into the Ravenna web app that knows your workspace. It understands your tickets, workflows, knowledge base, and team configuration, so you can describe what you need instead of clicking through menus. Whether you're triaging a backlog, setting up an automation, or finding a company policy, Copilot works alongside you in a single chat panel.

  [Learn more →](/documentation/automate/copilot/overview)

  ## Manage tickets, build automations, and configure your workspace by chat

  Search and filter tickets, draft responses in context, and summarize long threads without leaving the chat. Describe a workflow and Copilot builds it with triggers, conditions, approvals, and branching, or edits an existing one using its history. Set up agents, channels, and forms by describing what you need, and Copilot suggests configurations that fit how your team works. Learn more about [everyday tasks](/documentation/automate/copilot/everyday-tasks), [building automations](/documentation/automate/copilot/build-automations), and [configuring your workspace](/documentation/automate/copilot/configure-workspace).

  **Other updates:**

  * [Real-time Slack status sync](/documentation/platform/users/settings) detects status changes instantly via Slack events instead of polling every 30 minutes
  * [Custom display names for synced applications](/documentation/manage-access/applications) rename applications from identity providers while keeping the original integration name
  * [Add Followers from user groups](/documentation/automate/workflows/triggers-actions) keep entire teams in the loop on relevant tickets at once

      <ShippedBy handles={["lawson-n", "CamdenClark", "jayantbh"]} />
</Update>

<Update label="March 2, 2026" tags={["Agents", "Integrations", "Platform"]}>
  ## Conversational form filling

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/conversational-forms.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=29d6772d7fe139bfdcb762790575c84f" alt="An agent collecting form fields through natural conversation" width="1200" height="800" data-path="images/changelog/conversational-forms.png" />
  </Frame>

  Agents now collect form field values through natural conversation instead of presenting a static form. When a request triggers a form, the agent asks for each field one at a time in chat and submits the completed form automatically. A configurable field threshold (default: 5 fields) controls when agents use conversational mode versus the standard form UI, so simple requests flow naturally while complex forms still present the full UI.

  [Learn more →](/documentation/automate/agents/customize)

  ## Google Drive file transfers for offboarding

  A new Transfer User Files workflow action moves Drive files and Calendar data between users during offboarding, with configurable scope for private, shared, or all files. The action runs asynchronously and returns a transfer ID for tracking.

  [Learn more →](/integrations/google-workspace/workflows)

  **Other updates:**

  * [User Lookup agent tool](/documentation/automate/agents/configure) searches for users by name or email to populate user selection fields in forms

  * [Direct SSO login URL](/integrations/sso/setup) provides one-click access from an identity provider portal

  * [Microsoft Entra manager syncing](/integrations/microsoft-entra/overview) displays manager relationships on user profiles automatically

  * [Workflow email replies bypass queue settings](/integrations/email/overview) so recipients can always respond to automated outreach

    **Quality of life updates:**

  * API key Last Used tracking helps you identify stale keys

  * Workspace description guidance helps you write descriptions that improve routing

  * Emoji reactions are clarified to work on channel-level messages only

      <ShippedBy handles={["mplachter", "lawson-n", "AV6", "sl1pm4t"]} />
</Update>

<Update label="February 24, 2026" tags={["Platform", "Integrations", "Tickets"]}>
  ## Out of office and ticket delegation

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/on-call-routing.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=99409625a17b4853c04c2e3407f176bb" alt="User settings for delegates and out of office status" width="1200" height="800" data-path="images/changelog/on-call-routing.png" />
  </Frame>

  A dedicated user settings page lets team members configure their profile, assign delegates, and manage out of office status. Delegates receive ticket assignments and approvals on your behalf, and OOO status can sync automatically from Slack, so tickets always route to an available teammate.

  [Learn more →](/documentation/platform/users/settings)

  ## On-call schedule routing with Incident.io

  The Incident.io integration supports on-call schedule routing. It retrieves everyone currently on-call for a schedule and matches them to Ravenna users by email, so you can auto-assign tickets, notify on-call engineers, or build dynamic routing rules.

  [Learn more →](/integrations/incident-io/workflows)

  ## Smart ticket link names

  Ticket links auto-populate with page titles when you paste a URL. Ravenna fetches the title from the linked site's metadata, or uses the ticket title for internal links, so you don't type link names by hand.

  [Learn more →](/documentation/tickets/links)

  **Other updates:**

  * [Iru Assign Blueprint](/integrations/iru/workflows) workflow action for device configuration management

  * [Configurable sync intervals](/integrations/jira/setup) for Jira, Freshservice, and Linear integrations

  * [Google Workspace Get Group](/integrations/google-workspace/workflows) now returns group manager IDs

    **Quality of life updates:**

  * Workspace settings expanded with General details, bot users, and Slack appearance tabs

  * Slack Create Ticket Thread action now creates or replaces request threads

  * Category column and custom field grouping in table views

      <ShippedBy handles={["niko-cxvedadze", "sl1pm4t", "kcoleman731"]} />
</Update>

<Update label="February 16, 2026" tags={["Agents", "Integrations", "Workflows"]}>
  ## Launch Week Winter 2026

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/launch-week-winter-2026.gif?s=aa312e918ccf51927270d72fefffa662" alt="Launch Week Winter 2026 product announcements" width="1200" height="800" data-path="images/changelog/launch-week-winter-2026.gif" />
  </Frame>

  Ravenna announced five major product launches during Launch Week Winter 2026.

  **Ravenna Agents** resolve employee requests autonomously using natural-language rules, knowledge base integration, and multi-turn conversations across Slack and email.

  [Learn more →](/documentation/automate/agents/overview)

  **Ticketing integrations** with [Jira Service Management](/integrations/jira/overview), [Freshservice](/integrations/freshservice/overview), and [Linear](/integrations/linear/overview) replicate tickets with sync of comments, status, assignments, and resolutions.

  **HRIS integrations** with [BambooHR](/integrations/bamboohr/overview), [HiBob](/integrations/hibob/overview), [Workday](/integrations/workday/overview), and [Rippling](/integrations/rippling/overview) bring employee context into Ravenna for personalized responses and routing.

  **MDM integrations** with [Jamf](/integrations/jamf/overview), [Fleet](/integrations/fleet/overview), and [Iru](/integrations/iru/overview) surface device diagnostics in tickets and enable automated device actions.

  **Workflow templates** provide pre-built automations for common operations like MFA resets, access requests, and channel provisioning. [Browse templates](/documentation/automate/workflows/workflow-builder).

  <ShippedBy handles={["mplachter", "CamdenClark", "ishaans"]} />
</Update>

<Update label="February 7, 2026" tags={["Platform", "Tickets", "Workflows"]}>
  ## A more configurable workspace

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/configurable-workspace.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=084f761eb85522ce577cc1ac3d11e029" alt="Workspace settings for ticket mirror field visibility" width="1200" height="800" data-path="images/changelog/configurable-workspace.png" />
  </Frame>

  Customize which fields appear on ticket mirrors across your workspace. Control visibility for status, priority, description, assignee, requester, approvers, source, and custom fields to keep Slack channels focused.

  [Learn more →](/documentation/platform/workspaces/settings)

  ## Wait for Message workflow action

  A new Wait for Message action pauses workflow execution until specific users send a message on a ticket. Set a timeout and optionally filter by message source to control when the workflow resumes, for example waiting on a customer response before continuing.

  [Learn more →](/documentation/automate/workflows/triggers-actions)

  **Other updates:**

  * [Automatic SSO redirect](/integrations/sso/overview) detects an organization's SSO from the email domain and redirects to authenticate
  * [Confluence archived pages](/integrations/confluence/knowledge) archive automatically in Ravenna to keep knowledge in sync
  * [Collapsible Kanban columns](/documentation/tickets/organize/views) focus the board on specific workflow stages, saved per view
  * Workflow actions that need a third-party integration show a Setup Required badge
  * Agent negative feedback creates support tickets by default

      <ShippedBy handles={["mzanini", "niko-cxvedadze"]} />
</Update>

<Update label="February 2, 2026" tags={["Workflows", "Email", "Knowledge"]}>
  ## Workflow versioning and in-flight controls

  Workflows gained versioning, pause and deactivate controls for in-flight runs, better timezone handling, and error alerts when a run fails.

  [Learn more →](/documentation/automate/workflows/overview)

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/feb02-workflows.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=af4a228c71e6706408fdb30e3d077085" alt="Workflow version controls in the workflow builder" width="1800" height="1320" data-path="images/changelog/feb02-workflows.png" />
  </Frame>

  ## Generate knowledge base articles from tickets

  Generate a knowledge base article from any ticket directly in the Ravenna web app, turning resolved requests into reusable documentation.

  [Learn more →](/documentation/automate/knowledge/overview)

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/feb02-kb-generation.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=db01471d3ac537de5c45692371aae92a" alt="Generating a knowledge base article from a ticket" width="1800" height="1320" data-path="images/changelog/feb02-kb-generation.png" />
  </Frame>

  **Other updates:**

  * Email support is fully integrated in workflows, with sending, receiving, attachments, and automatic CC followers
  * Bulk drag-and-drop reorganization moves Analytics, Workflows, and Form resources into and out of folders

      <ShippedBy handles={["ZzurabSiprashvili", "kailashnath", "niko-cxvedadze", "omkarpat"]} />
</Update>

<Update label="January 9, 2026" tags={["Integrations", "Access", "Workflows"]}>
  ## Cloudflare Access integration

  A new integration with Cloudflare Access automates access requests for Cloudflare-protected applications end to end. Connecting Cloudflare Access to Ravenna's request and approval workflows removes manual steps, keeps access decisions auditable, and aligns with Zero Trust architectures.

  [Learn more →](/integrations/overview)

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/jan09-cloudflare.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=3b5b3e1871744680c3dc0df880e5b275" alt="Cloudflare Access integration in Ravenna" width="1800" height="1494" data-path="images/changelog/jan09-cloudflare.png" />
  </Frame>

  ## Application provisioning methods

  Software access requests now support multiple provisioning methods, including group provisioning, application provisioning, and manual provisioning. Choose the method that fits how each application is managed, including tools that don't support SCIM.

  [Learn more →](/documentation/manage-access/applications)

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/jan09-provisioning.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=be1ec998840f6790f0cf868ccc556020" alt="Choosing an application provisioning method" width="1800" height="1152" data-path="images/changelog/jan09-provisioning.png" />
  </Frame>

  ## Workflow run insights

  New debug capabilities give clearer visibility into workflow runs and failures. When a run doesn't complete as expected, you can see detailed, actionable information about what went wrong and where, making troubleshooting faster.

  [Learn more →](/documentation/automate/workflows/monitor)

  <Frame>
    <img src="https://mintcdn.com/ravenna/FQA3mHrR8wc7llVt/images/changelog/jan09-workflow-insight.png?fit=max&auto=format&n=FQA3mHrR8wc7llVt&q=85&s=7fe76c300c2305e7594ecf9a6c3cb198" alt="Workflow run failure details" width="1800" height="1404" data-path="images/changelog/jan09-workflow-insight.png" />
  </Frame>

  <ShippedBy handles={["sl1pm4t", "niko-cxvedadze", "jayantbh"]} />
</Update>
