<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mortise Apps</title>
    <description>The latest articles on DEV Community by Mortise Apps (@mortiseapps).</description>
    <link>https://dev.to/mortiseapps</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4151652%2Fecc581ed-7297-494d-bf76-0b0aa4c371b9.png</url>
      <title>DEV Community: Mortise Apps</title>
      <link>https://dev.to/mortiseapps</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mortiseapps"/>
    <language>en</language>
    <item>
      <title>How do I put Jira reports in a Confluence page? Four native ways compared</title>
      <dc:creator>Mortise Apps</dc:creator>
      <pubDate>Tue, 13 Oct 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/mortiseapps/how-do-i-put-jira-reports-in-a-confluence-page-four-native-ways-compared-e6o</link>
      <guid>https://dev.to/mortiseapps/how-do-i-put-jira-reports-in-a-confluence-page-four-native-ways-compared-e6o</guid>
      <description>&lt;p&gt;Most weekly status pages in Confluence end up as screenshots of Jira, pasted on Monday and wrong by Wednesday. Confluence Cloud has four built-in ways to show live Jira data on a page instead, and they do quite different jobs. This page compares them side by side, says which report each one suits, and names the one gap none of them closes: totals per Atlassian team.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; Use the &lt;strong&gt;Jira Issues macro&lt;/strong&gt; for a list or a count from a JQL query, the &lt;strong&gt;Jira Chart macro&lt;/strong&gt; for a pie chart, a created-vs-resolved trend or a two-dimensional table by status, priority, assignee, fix version, component or issue type, and a &lt;strong&gt;Smart Link in embed view&lt;/strong&gt; when you want a whole Jira dashboard, a single gadget, or a board, backlog or timeline on the page. None of the four can group or total by the Atlassian Team field, because Jira's own charts and gadgets cannot use Team as a statistic type. For per-team reports you need one macro per team, or an app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checked 7 Oct 2026:&lt;/strong&gt; Atlassian's support pages for the Jira Issues macro, the Jira Chart macro, sharing Jira dashboards and boards in Confluence and Smart Links in Jira, plus three issues on Atlassian's public tracker (votes as read that day). We did not rebuild each option on a test site for this article; where Atlassian's pages are silent, we say so.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The four options at a glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;What it shows&lt;/th&gt;
&lt;th&gt;How you add it&lt;/th&gt;
&lt;th&gt;Groups or totals by Team?&lt;/th&gt;
&lt;th&gt;Notes from Atlassian's docs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Jira Issues macro ("Display Jira work items in a list")&lt;/td&gt;
&lt;td&gt;A table of work items, one item, or a count, from JQL, a filter or a Jira URL&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/Jira&lt;/code&gt; in the editor, then a query&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;You choose and reorder the columns; no group-by option is documented&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jira Chart macro&lt;/td&gt;
&lt;td&gt;Pie chart, created vs resolved, two-dimensional table&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/Jira chart&lt;/code&gt;, then a query&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Pie and 2D axes: Status, Priority, Assignee, Fix version, Component, Issue type&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Embedded Jira dashboard or gadget&lt;/td&gt;
&lt;td&gt;The dashboard (or one gadget) as it looks in Jira&lt;/td&gt;
&lt;td&gt;Copy the dashboard's or gadget's link in Jira, paste it on the page&lt;/td&gt;
&lt;td&gt;No (gadgets cannot use Team as a statistic type)&lt;/td&gt;
&lt;td&gt;Renders as a Smart Link in embed view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Embedded board, backlog, list or timeline&lt;/td&gt;
&lt;td&gt;The Jira view itself, interactive&lt;/td&gt;
&lt;td&gt;Copy the board's link, paste it on the page&lt;/td&gt;
&lt;td&gt;Only if the board itself filters to one team&lt;/td&gt;
&lt;td&gt;Viewers need access to the Jira space; filters reset when the page reloads&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  1. Jira Issues macro: lists and counts
&lt;/h2&gt;

&lt;p&gt;The Jira Issues macro (Atlassian's documentation now calls it "Display Jira work items in a list") takes a JQL query, a saved filter or a pasted Jira URL. It has three views: a list (the default), a single work item, and a count view that shows "just the number of work items". In the list you pick which columns appear and drag them into order.&lt;/p&gt;

&lt;p&gt;Use it for anything that is naturally a list: the open bugs in a release, everything in the current sprint, the work items flagged as blocked right now (&lt;code&gt;flagged is not EMPTY AND statusCategory != Done&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;What it does not do is break a list into groups or add up a column per value. A list of 60 work items with a Team column is still 60 rows. For a count per team, you need one macro in count view per team, each filtered on that team's ID (the JQL is &lt;code&gt;"Team[Team]" = &amp;lt;team id&amp;gt;&lt;/code&gt;). We walked through that setup in &lt;a href="https://www.mortiseapps.com/blog/jira-work-by-team-confluence-status-page/" rel="noopener noreferrer"&gt;how to show Jira work by team in a Confluence status page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Jira Chart macro: three chart types, six fields
&lt;/h2&gt;

&lt;p&gt;The Jira Chart macro draws three charts from a JQL query:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pie chart&lt;/strong&gt;, grouped by Status, Fix version, Assignee name, Priority, Component or Issue type.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Created vs resolved&lt;/strong&gt;, the number of work items created against resolved over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two-dimensional chart&lt;/strong&gt;, a matrix whose X and Y axes come from Status, Priority, Assignee, Fix version, Component and Issue type.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That covers "open work by status" and "bugs by priority and assignee" well. Team is not in either list. Atlassian's documentation also notes that if the query includes items anonymous users cannot see, viewers "will be prompted to authenticate to view charts".&lt;/p&gt;

&lt;h2&gt;
  
  
  3. An embedded Jira dashboard or a single gadget
&lt;/h2&gt;

&lt;p&gt;If the report already exists as a Jira dashboard, you can bring the whole thing into Confluence. In Jira, select the link icon at the top of the dashboard (or in the upper right corner of a single gadget) to copy its link, then paste the link into a page, blog post, whiteboard or database. Atlassian's page says it "will render as a Smart Link in embed view". The request for this, CONFCLOUD-70116 ("a macro that displays a Jira dashboard within the page"), is now closed as Fixed, with 572 votes on 7 October 2026.&lt;/p&gt;

&lt;p&gt;This is the closest thing to "put my Jira report in Confluence" that ships with the product: whatever gadgets you have built in Jira appear on the page. It also inherits the gadgets' limits. On Jira dashboards, the Team field cannot be used as the statistic type in the Pie Chart, Issue Statistics or Two Dimensional gadgets. Atlassian tracks that gap as JRACLOUD-87808, open since October 2020 and still "Gathering Interest", with 649 votes when we checked on 7 October 2026.&lt;/p&gt;

&lt;p&gt;Atlassian's dashboard-sharing page does not say what a viewer without access to the dashboard sees in the embed, so check that with a colleague's account before you send the page to stakeholders.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. An embedded board, backlog, list or timeline
&lt;/h2&gt;

&lt;p&gt;The same copy-and-paste works for a board or backlog: copy the link from the board's share icon, paste it, and it renders in embed view. Atlassian's Smart Links page says "users with access to the Jira space can view the Embed Smart Link of the board, list, timeline, calendar, or form", and that the embeds are interactive: viewers can change filters, create items inline (unless required fields block it) and adjust dates on a timeline.&lt;/p&gt;

&lt;p&gt;Two details matter on a status page. First, "when the page with the embedded link is reloaded, the view will reset to today's date and all filters will reset to those that were applied when the URL was originally pasted", so set the filters you want before you paste. Second, an open suggestion on Atlassian's tracker, CONFCLOUD-83256, reports that the board embed shows only Jira's default fields, not columns you added yourself (1 vote, Gathering Interest, 7 October 2026).&lt;/p&gt;

&lt;p&gt;A board embed is a good fit for a stand-up or a sprint review page. It is a view of the work, not a report: no totals, no trend.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which one for which report
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;You want&lt;/th&gt;
&lt;th&gt;Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A list of specific work items that stays current&lt;/td&gt;
&lt;td&gt;Jira Issues macro, list view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One number on the page (open bugs, items in review)&lt;/td&gt;
&lt;td&gt;Jira Issues macro, count view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open work by status, priority or assignee&lt;/td&gt;
&lt;td&gt;Jira Chart macro, pie or two-dimensional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Is the backlog growing?&lt;/td&gt;
&lt;td&gt;Jira Chart macro, created vs resolved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A dashboard you already maintain in Jira&lt;/td&gt;
&lt;td&gt;Embed the dashboard or one gadget&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The live board for a stand-up&lt;/td&gt;
&lt;td&gt;Embed the board&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open, blocked and overdue work &lt;strong&gt;per team&lt;/strong&gt;, velocity per team across boards, cross-team dependencies&lt;/td&gt;
&lt;td&gt;Not covered natively: one macro per team, or an app&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The gap: reports per Atlassian team
&lt;/h2&gt;

&lt;p&gt;All four native options group by the fields Jira's charts know about. The Atlassian Team field is not one of them, so a page that should answer "how is each team doing?" falls back on one Jira Issues macro per team and per number. Six teams times three numbers (open, blocked, overdue) is eighteen macros and eighteen hand-written queries with team IDs in them, and a new or renamed team means editing the page. The &lt;a href="https://www.mortiseapps.com/blog/jira-work-by-team-confluence-status-page/" rel="noopener noreferrer"&gt;step-by-step version of that workaround&lt;/a&gt; is still the best free option.&lt;/p&gt;

&lt;h2&gt;
  
  
  How TeamLens for Confluence fits
&lt;/h2&gt;

&lt;p&gt;We make TeamLens for Confluence, a Confluence macro that reads Jira work from the same Atlassian site and groups it by the Team field directly. It went live on the &lt;a href="https://marketplace.atlassian.com/apps/3524614564" rel="noopener noreferrer"&gt;Atlassian Marketplace&lt;/a&gt; on 7 October 2026. You insert it with &lt;code&gt;/TeamLens&lt;/code&gt;, choose a report and a scope (Jira projects or any JQL, such as &lt;code&gt;filter = 12345&lt;/code&gt;) and optionally some teams. The reports are Workload (to do, in progress, done in the last 30 days, blocked, overdue and open story points per team, with a "(no team)" row), Aging, Hygiene, Velocity across every board in the scope, and a who-waits-on-whom Dependencies matrix.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmj0lt1eo0qgbma85kgi2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmj0lt1eo0qgbma85kgi2.png" alt="TeamLens for Confluence workload report: open, blocked and overdue Jira work per Atlassian team on a Confluence page" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The limits, so you can rule it in or out quickly: it reads only the Jira on the same site, counts up to 3,000 work items per macro, needs Jira Software sprints for Velocity, shows a placeholder in PDF and Word exports, and viewers without Jira access see a "No access to Jira" message. Each viewer loads the report with their own Jira permissions; the app has one read-only scope (&lt;code&gt;read:jira-work&lt;/code&gt;), no backend and no storage. It is free for sites with up to 10 users, with paid tiers above that billed by Atlassian. Details: the &lt;a href="https://www.mortiseapps.com/teamlens-confluence/" rel="noopener noreferrer"&gt;TeamLens for Confluence page&lt;/a&gt; and the &lt;a href="https://www.mortiseapps.com/teamlens-confluence/docs/getting-started/" rel="noopener noreferrer"&gt;getting-started guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can I put a Jira velocity chart in a Confluence page?
&lt;/h3&gt;

&lt;p&gt;Not as a native macro: Atlassian's Jira macros are the list, count and chart macros described above, and the Jira Chart macro has no velocity chart. If your Jira dashboard has a gadget that shows what you need, copy that gadget's link and paste it into the page as an embed. For velocity per Atlassian team across several boards, see &lt;a href="https://www.mortiseapps.com/blog/team-velocity-across-boards-jira/" rel="noopener noreferrer"&gt;team velocity when teams do not match boards&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Are Jira macros in Confluence live or a snapshot?
&lt;/h3&gt;

&lt;p&gt;The macros query Jira and embeds show the Jira view, so they reflect Jira rather than the day you built the page. Viewers may be asked to log in to Jira first, and what each person sees depends on their Jira access. For a frozen record, such as end-of-sprint numbers, take a screenshot or copy the values into a table.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can the Jira Chart macro group by the Team field?
&lt;/h3&gt;

&lt;p&gt;No. Atlassian documents six fields for the pie chart and the two-dimensional chart axes (status, priority, assignee, fix version, component, issue type), and Team is not one of them. The same limit applies to Jira's own dashboard gadgets (JRACLOUD-87808).&lt;/p&gt;

&lt;h3&gt;
  
  
  Do people need a Jira licence to see these on a Confluence page?
&lt;/h3&gt;

&lt;p&gt;Atlassian's pages say viewers may be prompted to authenticate for the chart macro, and that users with access to the Jira space can view embedded boards. Plan for every reader of a Jira-backed status page to have Jira access; otherwise share a static copy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://support.atlassian.com/confluence-cloud/docs/insert-the-jira-issues-macro/" rel="noopener noreferrer"&gt;Display Jira work items in a list, Atlassian Support&lt;/a&gt; - list, single item and count views; choosing and reordering columns. Read 7 Oct 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.atlassian.com/confluence-cloud/docs/insert-the-jira-chart-macro/" rel="noopener noreferrer"&gt;Insert the Jira chart macro, Atlassian Support&lt;/a&gt; - the three chart types, the fields for pie and two-dimensional charts, the authentication prompt. Read 7 Oct 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.atlassian.com/jira-software-cloud/docs/share-jira-dashboards-in-confluence/" rel="noopener noreferrer"&gt;Share Jira dashboards in Confluence, Atlassian Support&lt;/a&gt; - copy a dashboard or gadget link, paste it, embed view. Read 7 Oct 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.atlassian.com/jira-software-cloud/docs/share-a-jira-board-in-confluence/" rel="noopener noreferrer"&gt;Share a Jira board or backlog in Confluence, Atlassian Support&lt;/a&gt; - board and backlog embeds. Read 7 Oct 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.atlassian.com/jira-software-cloud/docs/smart-links-in-jira-software" rel="noopener noreferrer"&gt;Smart Links in Jira, Atlassian Support&lt;/a&gt; - who can view embeds, interactivity, filters resetting on reload. Read 7 Oct 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jira.atlassian.com/browse/CONFCLOUD-70116" rel="noopener noreferrer"&gt;CONFCLOUD-70116, a macro that displays a Jira dashboard within the page&lt;/a&gt; - Closed, Fixed, 572 votes on 7 Oct 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jira.atlassian.com/browse/JRACLOUD-87808" rel="noopener noreferrer"&gt;JRACLOUD-87808, Team field not supported for sorting on gadgets, JQL or boards&lt;/a&gt; - Gathering Interest, 649 votes on 7 Oct 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jira.atlassian.com/browse/CONFCLOUD-83256" rel="noopener noreferrer"&gt;CONFCLOUD-83256, Smart Link (embed view) only displays default Jira fields&lt;/a&gt; - Gathering Interest, 1 vote on 7 Oct 2026.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.mortiseapps.com/blog/jira-reports-in-confluence-page-compared/" rel="noopener noreferrer"&gt;Mortise Apps blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>jira</category>
      <category>atlassian</category>
      <category>agile</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Can monday.com change a task's status automatically when the tasks it depends on are done?</title>
      <dc:creator>Mortise Apps</dc:creator>
      <pubDate>Mon, 12 Oct 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/mortiseapps/can-mondaycom-change-a-tasks-status-automatically-when-the-tasks-it-depends-on-are-done-2fjb</link>
      <guid>https://dev.to/mortiseapps/can-mondaycom-change-a-tasks-status-automatically-when-the-tasks-it-depends-on-are-done-2fjb</guid>
      <description>&lt;p&gt;A question that comes up on the monday.com community: when a task's predecessors are finished, can monday move the next task to "Working on it" and tell its owner? There is one pre-built recipe for this. You can't build your own version, because monday's automation builder doesn't support the Dependency column. Whether the recipe waits for &lt;em&gt;all&lt;/em&gt; predecessors is not documented.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; Yes, partly. In the automations center, searching "dependency" finds one pre-built template: &lt;strong&gt;"When a status changes to something, change the status of its dependency to something."&lt;/strong&gt; It has four blanks (the status column, the trigger value, the Dependency column and the new value) and no "only if" condition. You can't build anything else from scratch: monday's own automations guide lists the Dependency column among the column types "not supported in any automations, including in the mapping of an item". The Dependency column itself only moves dates, never statuses. Nothing in monday's documentation says whether the recipe waits until every predecessor is done, so test it on a copy of your board before you rely on it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The 60-second video version: &lt;a href="https://youtu.be/u7TguMqkzQI" rel="noopener noreferrer"&gt;Change status when dependencies are done (YouTube)&lt;/a&gt;. In 20 seconds each: &lt;a href="https://youtube.com/shorts/zQIwZyOIzps" rel="noopener noreferrer"&gt;dependencies move dates, not statuses&lt;/a&gt; and &lt;a href="https://youtube.com/shorts/bJzJJrsXkbI" rel="noopener noreferrer"&gt;hide done: what is ready to start&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Checked 6 Oct 2026:&lt;/strong&gt; monday's support articles "Dependencies on monday.com" (updated 22 Sep 2026) and "Get started with monday automations" (updated 29 Sep 2026), and the automations center on a test board in our monday developer account. There we found the template and set it up. We did not run it on items yet, so this article says nothing about how it behaves with several predecessors.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The question
&lt;/h2&gt;

&lt;p&gt;On the monday community, a user asked for an automation where, "when the status of a task (Predecessors) changes to 'Completed,' its (Successors) changes to 'Working on it' and notifies the assignee." An older thread ("Automations for Dependent Tasks") reached the same wall: the pre-built recipe "doesn't allow customization", and "you can't set up dependent column automations from scratch."&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Dependency column does on its own
&lt;/h2&gt;

&lt;p&gt;It moves dates. monday's support article describes the three dependency modes only in terms of dates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flexible:&lt;/strong&gt; "Ensures no overlap between the dates of items that are dependent on one another."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict:&lt;/strong&gt; "Adjusts an item's dates to reflect the exact time changes made based on the item it depends on."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No action:&lt;/strong&gt; "Items will not shift automatically; they will solely display dependency relationships."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of the three touches a Status column. A task whose predecessors are all done looks exactly as it did before, apart from its dates. Dependencies are "Available on Pro and Enterprise plans", and "You can only add one Dependency Column per board." (Our &lt;a href="https://www.mortiseapps.com/blog/monday-dependency-modes-flexible-strict-no-action/" rel="noopener noreferrer"&gt;dependency modes article&lt;/a&gt; compares the three modes in detail.)&lt;/p&gt;

&lt;h2&gt;
  
  
  The one recipe that changes a status
&lt;/h2&gt;

&lt;p&gt;In a board's automations center, a search for "dependency" returned one template on 6 Oct 2026, filed under "Connected &amp;amp; mirror columns":&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When &lt;strong&gt;a status&lt;/strong&gt; changes to &lt;strong&gt;something&lt;/strong&gt;, change the status of its &lt;strong&gt;dependency&lt;/strong&gt; to &lt;strong&gt;something&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Filled in on our test board, it read: "When Status changes to Done, change the status of its Depends on to Working on it." The editor labels it "This is a pre-built template", and it has exactly those four blanks. There is no "and only if" condition and no notify step to fill in.&lt;/p&gt;

&lt;p&gt;What that means in practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You can set the status, not who hears about it.&lt;/strong&gt; monday's automations guide lists Dependency among the columns "not supported in the 'notify' field of a notification automation". To tell the next task's owner, use a separate status-change automation on that task ("When Status changes to Working on it, notify Person"). The notification then follows from the status change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You can't add conditions.&lt;/strong&gt; That rules out "only for this group" or "only if the date has arrived", and in particular "only if all predecessors are done".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You can't build it yourself.&lt;/strong&gt; The same guide lists Dependency among the column types "not supported in any automations, including in the mapping of an item".&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The part monday doesn't document: several predecessors
&lt;/h2&gt;

&lt;p&gt;The question asked for the next task to start "when all dependencies are done". The template's wording doesn't say what happens when a task depends on two items and only one of them is finished. Neither of monday's support articles we read covers it. Before you rely on the recipe, test it on a copy of your board in two minutes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Give one task two predecessors in the Dependency column.&lt;/li&gt;
&lt;li&gt;Mark one predecessor Done and look at the task. Then mark the second one Done and look again.&lt;/li&gt;
&lt;li&gt;Also check which way it goes. Did the recipe change the task that waits (the successor), or the task it waits on?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the first Done already moves the task, the recipe answers "something finished", not "everything finished". Treat its status as a hint.&lt;/p&gt;

&lt;p&gt;Two more limits come up in monday community threads and feature requests: the recipe reportedly doesn't work on multi-level boards (there is an open feature request for it), and it can't be customised. We have not tested either.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to see which tasks are really ready
&lt;/h2&gt;

&lt;p&gt;When the automation can't express "all predecessors done", look at the dependencies instead. That is what we built &lt;a href="https://www.mortiseapps.com/linklens-monday/" rel="noopener noreferrer"&gt;LinkLens Dependency Map&lt;/a&gt; for: a board view that reads the Dependency column and draws every chain on the board in one graph. Turn on &lt;strong&gt;hide done&lt;/strong&gt; and every item whose status label counts as done drops out of the graph. A task with no blocker arrows left pointing at it is ready to start, however many predecessors it had. LinkLens doesn't change statuses itself; it shows you which ones are safe to change, and it is the quickest way to check what the recipe did. The app is in monday's marketplace review.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can monday.com automatically change status when a dependency is done?
&lt;/h3&gt;

&lt;p&gt;There is one pre-built template, "When a status changes to something, change the status of its dependency to something". It has no extra conditions, and the custom automation builder doesn't support the Dependency column.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can the monday.com automation wait until all predecessors are done?
&lt;/h3&gt;

&lt;p&gt;monday's documentation doesn't say, and the template has no condition you could add. Test it on a copy of your board with a task that has two predecessors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I notify someone through the Dependency column?
&lt;/h3&gt;

&lt;p&gt;Not directly. monday's automations guide lists Dependency among the columns not supported in the "notify" field. Notify on the status change of the next task instead.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do monday.com dependencies change statuses on their own?
&lt;/h3&gt;

&lt;p&gt;No. Flexible and Strict modes move dates, and No action changes nothing. Statuses only change through an automation or by hand.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does the Dependency column work in custom automations?
&lt;/h3&gt;

&lt;p&gt;No. As of 29 Sep 2026, monday's automations guide lists it among the column types "not supported in any automations, including in the mapping of an item".&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://community.monday.com/ask-the-com/post/set-up-an-automation-when-all-dependencies-are-done-change-status-to-xIfU1HSKTZxO6m2" rel="noopener noreferrer"&gt;Set up an automation: When all dependencies are done, change status to something, monday community&lt;/a&gt; - the question.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://community.monday.com/ask-the-com/post/automations-for-dependent-tasks-Drv2EgWe1OKq03X" rel="noopener noreferrer"&gt;Automations for Dependent Tasks, monday community&lt;/a&gt; - the recipe "doesn't allow customization".&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.monday.com/hc/en-us/articles/360007402599-Dependencies-on-monday-com" rel="noopener noreferrer"&gt;Dependencies on monday.com, monday support&lt;/a&gt; - the three modes move dates; plans; one Dependency column per board.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.monday.com/hc/en-us/articles/360001222900-Get-started-with-monday-automations" rel="noopener noreferrer"&gt;Get started with monday automations, monday support&lt;/a&gt; - Dependency not supported in the "notify" field, nor in any automations.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://community.monday.com/feature-requests/post/dependency-automation-for-multi-level-boards-xOq3e4UDqFY2Lqh" rel="noopener noreferrer"&gt;Dependency automation for multi-level boards, monday feature request&lt;/a&gt; - the recipe on multi-level boards.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>productivity</category>
      <category>projectmanagement</category>
      <category>automation</category>
      <category>monday</category>
    </item>
    <item>
      <title>Can monday.com subitems depend on items or on other subitems?</title>
      <dc:creator>Mortise Apps</dc:creator>
      <pubDate>Mon, 12 Oct 2026 04:48:01 +0000</pubDate>
      <link>https://dev.to/mortiseapps/can-mondaycom-subitems-depend-on-items-or-on-other-subitems-3pmh</link>
      <guid>https://dev.to/mortiseapps/can-mondaycom-subitems-depend-on-items-or-on-other-subitems-3pmh</guid>
      <description>&lt;p&gt;A monday.com feature request titled "Allow dependencies between subitems/items/groups" has 53 votes and 16 replies, and has sat at "Gathering Feedback" for about three years. Its complaint: "it's only possible to connect dependencies between same-level items". monday's own help centre now describes a way to do it, with two conditions that are easy to miss.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; Yes, on a &lt;strong&gt;multi-level board&lt;/strong&gt;. monday's support article on multiple levels of subitems says you can "set dependencies for subitems at any level" with the normal Dependent on column, "all the way down to level four", and see them on the Gantt chart. Two conditions: dependencies need the &lt;strong&gt;Pro or Enterprise&lt;/strong&gt; plan, and multi-level subitems "are only available on newly created boards". On a classic board with one level of subitems, monday's dependency article lists limits instead: subitem summary columns are not supported in the dependency settings, and batch dependencies "cannot connect parent items to their subitems" on regular project boards. Groups are not mentioned as a dependency target in either article.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The 76-second video version: &lt;a href="https://youtu.be/gGf9dHcRCDM" rel="noopener noreferrer"&gt;Can monday.com subitems depend on each other? (YouTube)&lt;/a&gt;. Two Shorts: &lt;a href="https://youtube.com/shorts/0VvLpeCZATU" rel="noopener noreferrer"&gt;subitem dependencies are here, with a catch&lt;/a&gt; and &lt;a href="https://youtube.com/shorts/wgeooS9HaSo" rel="noopener noreferrer"&gt;batch links go to the parent&lt;/a&gt; (both public 11 Oct).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Checked 10 Oct 2026:&lt;/strong&gt; monday's support articles "Multiple levels of subitems on monday.com" (updated 1 Oct 2026), "Dependencies on monday.com" (updated 22 Sep 2026), "All about subitems" (updated 15 Sep 2026) and "Cross-Project Dependencies" (updated 12 Aug 2026), plus the community request page. We have not built a multi-level board to test this; everything below is quoted from monday's documentation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Two kinds of board, two answers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Classic board (items + one level of subitems)&lt;/th&gt;
&lt;th&gt;Multi-level board (new boards only)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Item depends on item&lt;/td&gt;
&lt;td&gt;Yes, with the Dependency column (Pro and Enterprise)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subitem depends on subitem&lt;/td&gt;
&lt;td&gt;Not described in monday's dependency article&lt;/td&gt;
&lt;td&gt;Yes, "at any level", down to level four&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Parent linked to its own subitems&lt;/td&gt;
&lt;td&gt;"On regular project boards, batch dependencies cannot connect parent items to their subitems"&lt;/td&gt;
&lt;td&gt;Selecting several levels at once creates the link "at the highest level because subitems roll up to their parent items"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dependencies on the Gantt chart&lt;/td&gt;
&lt;td&gt;Yes, arrows between items&lt;/td&gt;
&lt;td&gt;Yes; "the chart mirrors the structure of your board", each level can be expanded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Groups as a dependency&lt;/td&gt;
&lt;td&gt;Not mentioned&lt;/td&gt;
&lt;td&gt;Not mentioned&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How it works on a multi-level board
&lt;/h2&gt;

&lt;p&gt;From monday's article on multiple levels of subitems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"You can add up to 4 levels of subitems". The parent item is level zero; the first subitem under it is level one, and so on.&lt;/li&gt;
&lt;li&gt;Dependencies: "Available on Pro and Enterprise plans". You "use the Dependent on column as you normally would", expand an item with the arrow next to its name, and keep expanding "until you find the task you want to link".&lt;/li&gt;
&lt;li&gt;"You can create dependencies all the way down to level four."&lt;/li&gt;
&lt;li&gt;On the Gantt chart, "the chart mirrors the structure of your board, allowing you to expand each level and view dependencies across your project timeline."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The catch is in the setup section: "Multi-level subitems are only available on newly created boards." The FAQ repeats it: the feature is "in gradual release" and "available on newly created boards only". An existing board does not gain extra levels; you create a new multi-level board (or, for portfolio users, a new project from the "Multi-level sub-tasks project by monday.com" template, where the article says the feature is for projects on the Enterprise plan).&lt;/p&gt;

&lt;p&gt;Other limits from the same article worth knowing before you move a plan over:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A level-zero item can have "up to 750 subitems total" across all levels, and a board holds up to 5,000 items including subitems.&lt;/li&gt;
&lt;li&gt;Parent values are rollups: "You can only edit the lowest-level subitems."&lt;/li&gt;
&lt;li&gt;"Mirror and Formula columns do not support roll up values", and granular permissions per subitem level are not supported.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What batch dependencies do across levels
&lt;/h2&gt;

&lt;p&gt;monday's dependency article (updated 22 Sep 2026) describes batch dependencies, which link up to 50 selected tasks in one go:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"On projects with multiple levels of subitems, batch dependencies run in Strict mode by design."&lt;/li&gt;
&lt;li&gt;"When you select items from several levels at once, the dependency is created at the highest level because subitems roll up to their parent items."&lt;/li&gt;
&lt;li&gt;"You can also select subitems at the same level on a multi-level project and use batch dependencies to connect the subitems to each other."&lt;/li&gt;
&lt;li&gt;"On regular project boards, batch dependencies cannot connect parent items to their subitems."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So batch linking across levels does not produce a subitem-to-item link; it lifts the link to the parent. To link one specific subitem to a task on another level, use the Dependent on column on that subitem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links to other boards
&lt;/h2&gt;

&lt;p&gt;Dependencies stay on one board. For links between projects, monday has Cross-Project Dependencies, "Available on Enterprise plan", which lets you "link tasks across multiple project boards" and shows them in the project's Gantt view. On other plans, a Connect boards column links items across boards but does not move dates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Seeing the chain
&lt;/h2&gt;

&lt;p&gt;Whether your links sit between items or subitems, the Dependency column and the Gantt chart show them one task at a time. We make &lt;a href="https://www.mortiseapps.com/linklens-monday/" rel="noopener noreferrer"&gt;LinkLens Dependency Map&lt;/a&gt;, a board view that reads a board's Dependency column (or a Connect boards column) and draws every chain on the board as one graph, blockers on the left and circular dependencies in red (&lt;a href="https://www.mortiseapps.com/blog/see-every-dependency-chain-monday-board/" rel="noopener noreferrer"&gt;walkthrough&lt;/a&gt;). To be clear about its scope today: it reads the board's items, not subitems, so links between subitems on a multi-level board do not appear in it. The app is in monday's marketplace review.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can a monday.com subitem depend on another subitem?
&lt;/h3&gt;

&lt;p&gt;Yes, on a multi-level board. monday's support article says you can set dependencies for subitems at any level, down to level four, with the Dependent on column. Multi-level subitems are only available on newly created boards, and dependencies need the Pro or Enterprise plan.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I add multi-level subitems to an existing monday.com board?
&lt;/h3&gt;

&lt;p&gt;monday's article says multi-level subitems "are only available on newly created boards" and are in gradual release. To use dependencies across levels, create a new multi-level board or project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can a monday.com item depend on a whole group?
&lt;/h3&gt;

&lt;p&gt;Neither of monday's articles on dependencies and multi-level subitems mentions groups as a dependency target. The documented links are between items and, on multi-level boards, subitems.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens if I batch-link tasks from different levels?
&lt;/h3&gt;

&lt;p&gt;monday creates the dependency at the highest level, because subitems roll up to their parent items, and on multi-level projects batch dependencies run in Strict mode. Subitems on the same level can be batch-linked to each other.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do monday.com dependencies work across boards?
&lt;/h3&gt;

&lt;p&gt;The Dependency column links items on one board. Cross-Project Dependencies, on the Enterprise plan, link tasks across project boards; a Connect boards column links items across boards on other plans but does not shift dates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://support.monday.com/hc/en-us/articles/29810815287570" rel="noopener noreferrer"&gt;Multiple levels of subitems on monday.com, monday support&lt;/a&gt; (updated 1 Oct 2026, read 10 Oct 2026) - four levels, dependencies at any level, new boards only, Gantt, limits.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.monday.com/hc/en-us/articles/360007402599" rel="noopener noreferrer"&gt;Dependencies on monday.com, monday support&lt;/a&gt; (updated 22 Sep 2026, read 10 Oct 2026) - plans, batch dependencies across levels, parent and subitem limit, subitem summary columns.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.monday.com/hc/en-us/articles/360011905480" rel="noopener noreferrer"&gt;All about subitems, monday support&lt;/a&gt; (updated 15 Sep 2026, read 10 Oct 2026) - subitem column structure.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.monday.com/hc/en-us/articles/24601183683474" rel="noopener noreferrer"&gt;Cross-Project Dependencies, monday support&lt;/a&gt; (updated 12 Aug 2026, read 10 Oct 2026) - Enterprise plan, links across project boards.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://community.monday.com/feature-requests/post/allow-dependencies-between-subitems-items-groups-khUUjxS1WvcwLhm" rel="noopener noreferrer"&gt;Allow dependencies between subitems/items/groups, monday community&lt;/a&gt; (53 votes, Gathering Feedback, read 10 Oct 2026).&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.mortiseapps.com/blog/monday-subitem-dependencies-across-levels/" rel="noopener noreferrer"&gt;Mortise Apps blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>projectmanagement</category>
      <category>productivity</category>
      <category>monday</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Jira 'blocks', 'is blocked by' or a custom 'depends on': which link type should you use for dependencies?</title>
      <dc:creator>Mortise Apps</dc:creator>
      <pubDate>Sun, 11 Oct 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/mortiseapps/jira-blocks-is-blocked-by-or-a-custom-depends-on-which-link-type-should-you-use-for-5413</link>
      <guid>https://dev.to/mortiseapps/jira-blocks-is-blocked-by-or-a-custom-depends-on-which-link-type-should-you-use-for-5413</guid>
      <description>&lt;p&gt;For dependencies in Jira Cloud, use the built-in &lt;strong&gt;Blocks&lt;/strong&gt; link type, and read it as "A blocks B: B cannot finish (or start) until A is done". "Blocks" and "is blocked by" are not two link types; they are the two directions of the same one. A custom "Depends on" type works for people reading the work item, but Jira's own planning views will not see it unless an admin adds it: the timeline in a software space shows only Blocks links, and Plans treats all links as Blocks unless the Dependencies settings say otherwise. One JQL quirk to know before you build filters: &lt;code&gt;issueLinkType = blocks&lt;/code&gt; cannot tell the blocking side from the blocked side.&lt;/p&gt;

&lt;h2&gt;
  
  
  One link type, two directions
&lt;/h2&gt;

&lt;p&gt;Every Jira link type has three properties: a name, an &lt;strong&gt;outward description&lt;/strong&gt; (how a work item affects others) and an &lt;strong&gt;inward description&lt;/strong&gt; (how it is affected). The default Blocks type has the outward description "blocks" and the inward description "is blocked by". When you link ABC-1 to ABC-2 with "blocks", Jira stores one link; ABC-1 shows "blocks ABC-2" and ABC-2 shows "is blocked by ABC-1".&lt;/p&gt;

&lt;p&gt;So the choice between "blocks" and "is blocked by" is only about which work item you are standing on when you add the link. The meaning to keep straight is the direction: the blocker is the one that has to happen first.&lt;/p&gt;

&lt;h2&gt;
  
  
  What each part of Jira does with link types
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Where&lt;/th&gt;
&lt;th&gt;What it reads&lt;/th&gt;
&lt;th&gt;What that means for a custom "Depends on" type&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Timeline in a software space&lt;/td&gt;
&lt;td&gt;Only the &lt;strong&gt;Blocks&lt;/strong&gt; link type, and only links between work items in the same space&lt;/td&gt;
&lt;td&gt;Not drawn on the timeline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plans (Premium and Enterprise)&lt;/td&gt;
&lt;td&gt;By default, all work item links are treated as &lt;strong&gt;Blocks&lt;/strong&gt;; a Jira admin can add other link types under Jira admin settings, Jira apps, Dependencies, with a Swap button to invert the direction&lt;/td&gt;
&lt;td&gt;Counted, but possibly in the wrong direction until an admin maps it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JQL &lt;code&gt;issueLinkType&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Matches the link type's name and both descriptions&lt;/td&gt;
&lt;td&gt;Searchable; give it a name different from its descriptions (below)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The work item view and board cards&lt;/td&gt;
&lt;td&gt;Any link type, with its own wording&lt;/td&gt;
&lt;td&gt;Readable by people&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The timeline and Plans facts come from Atlassian's own pages, read on 8 Oct 2026 (sources below). The practical rule that follows: if a dependency should show up on the timeline, it has to be a Blocks link. If your site already uses a custom type for dependencies, ask your Jira admin to add it in the Plans Dependencies settings and check the direction with Swap, or your plans will read your dependencies differently from your team.&lt;/p&gt;

&lt;h2&gt;
  
  
  The JQL catch with "blocks"
&lt;/h2&gt;

&lt;p&gt;Atlassian's documentation on link types says that JQL searches all three properties, the name and both descriptions, and that this makes it impossible to isolate one direction when the name equals one of the descriptions. That is exactly the case for the default Blocks type: its name is "Blocks" and its outward description is "blocks".&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Query&lt;/th&gt;
&lt;th&gt;What it returns on a default site&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;issueLinkType = "is blocked by"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Work items that are blocked by something (the inward side only)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;issueLinkType = blocks&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Work items with any Blocks link, in either direction, because "blocks" also matches the type's name&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you need a filter of blockers only, Atlassian's documented fix is to rename the link type (for example to "Blocking") so its name no longer equals the outward description. Their page warns that renaming can change what existing JQL filters return, so check saved filters, board filters and Automation rules that use the old name before you rename it.&lt;/p&gt;

&lt;p&gt;A custom "Depends on" type has the same trap if you name it "depends on" and use "depends on" as the outward description. Give the type a neutral name such as "Dependency", with "depends on" and "is a dependency of" as its two descriptions, and each direction stays searchable on its own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which should you use?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use Blocks&lt;/strong&gt; for anything that must finish before something else can, if you want it on the timeline and in Plans without extra configuration. This covers most teams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Relates&lt;/strong&gt; for "worth knowing about" connections with no ordering. Keeping them out of Blocks keeps your dependency views honest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use a custom type&lt;/strong&gt; only when you need a different meaning that Blocks would blur, for example a "Requires sign-off from" link for approvals. Name it so the name differs from both descriptions, and have your admin decide whether Plans should treat it as a dependency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be consistent about direction.&lt;/strong&gt; Write it down in your team's working agreement: "the blocker gets the blocks link". A link added from the wrong side reads backwards to everyone who opens the work item.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Seeing the chain once the links are right
&lt;/h2&gt;

&lt;p&gt;The work item view lists links one hop at a time, and the timeline shows only Blocks links inside one space. To read a whole chain across projects, LinkLens for Jira draws every link of the type you pick as a graph: choose Blocks, or your site's own custom type, from the &lt;strong&gt;Link type&lt;/strong&gt; list (it lists your site's link types with both their directions). Loops show up as red dashed arrows, and Hide Done drops finished work so only live blockers remain. Our earlier posts show &lt;a href="https://www.mortiseapps.com/blog/see-the-whole-blocker-chain-in-jira-dependency-graph/" rel="noopener noreferrer"&gt;the whole blocker chain in a graph&lt;/a&gt; and &lt;a href="https://www.mortiseapps.com/blog/circular-dependencies-in-jira-find-and-break-blocked-by-loops/" rel="noopener noreferrer"&gt;how to find circular blocks links&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is "is blocked by" a different link type from "blocks"?
&lt;/h3&gt;

&lt;p&gt;No. They are the inward and outward descriptions of the one default Blocks link type. A single link shows "blocks" on one work item and "is blocked by" on the other.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does Jira have a "depends on" link type?
&lt;/h3&gt;

&lt;p&gt;The default types described in Atlassian's link-type documentation include Blocks, Relates, Duplicates and the clone link types; "depends on" is something an admin adds as a custom type. If you add one, the timeline will not draw it and Plans needs to be told about it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why does &lt;code&gt;issueLinkType = blocks&lt;/code&gt; return blocked work too?
&lt;/h3&gt;

&lt;p&gt;JQL matches the link type's name as well as its descriptions, and the default type is named "Blocks" with the outward description "blocks". Atlassian's documented workaround is renaming the link type, for example to "Blocking".&lt;/p&gt;

&lt;h3&gt;
  
  
  Can the timeline show dependencies between projects?
&lt;/h3&gt;

&lt;p&gt;Not the timeline in a software space: Atlassian's page says it shows only Blocks links between work items in a single space.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which link type does LinkLens use?
&lt;/h3&gt;

&lt;p&gt;The one you choose. LinkLens lists every link type on your site, Blocks by default, and draws the chain for that type. It is read-only and does not change your links.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://support.atlassian.com/jira-cloud-administration/docs/configure-issue-linking/" rel="noopener noreferrer"&gt;Configure work item linking, Atlassian Support&lt;/a&gt; - name, outward and inward descriptions; JQL searches all three, so "blocks" cannot be isolated on the default Blocks type; renaming workaround and its warning. Read 8 Oct 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.atlassian.com/jira-software-cloud/docs/create-or-remove-dependencies-on-your-timeline/" rel="noopener noreferrer"&gt;Create or remove dependencies on your timeline, Atlassian Support&lt;/a&gt; - the timeline shows only the Blocks link type, between work items of a single space. Read 8 Oct 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.atlassian.com/jira-software-cloud/docs/configure-dependencies-in-jira-for-advanced-roadmaps/" rel="noopener noreferrer"&gt;Configure Dependencies in Jira for your plan, Atlassian Support&lt;/a&gt; - Plans treats all links as Blocks by default; admins add link types under Dependencies, with Swap to invert. Read 8 Oct 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.atlassian.com/jira-software-cloud/docs/link-issues/" rel="noopener noreferrer"&gt;Link work items, Atlassian Support&lt;/a&gt; - how links are added and shown on cards. Read 8 Oct 2026.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.mortiseapps.com/blog/jira-blocks-vs-is-blocked-by-vs-depends-on/" rel="noopener noreferrer"&gt;Mortise Apps blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>jira</category>
      <category>atlassian</category>
      <category>agile</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why free, docker stats and ps disagree about memory on your VPS (measured on a 1 GB box)</title>
      <dc:creator>Mortise Apps</dc:creator>
      <pubDate>Sat, 10 Oct 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/fewservers/why-free-docker-stats-and-ps-disagree-about-memory-on-your-vps-measured-on-a-1-gb-box-1877</link>
      <guid>https://dev.to/fewservers/why-free-docker-stats-and-ps-disagree-about-memory-on-your-vps-measured-on-a-1-gb-box-1877</guid>
      <description>&lt;p&gt;You log in to a small server to see how much memory is left, and every tool gives a different answer. We ran the usual ones on our 1 GB test server within a minute of each other and wrote down what each said.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; They count different things. &lt;code&gt;free&lt;/code&gt; reports the whole machine, and its &lt;strong&gt;available&lt;/strong&gt; column (192 MB here) is the one that tells you how close you are to trouble. &lt;code&gt;docker stats&lt;/code&gt; added up to only 343 MB because it leaves out swap and the cache the kernel can drop: n8n showed 24.6 MiB while another 195 MB of it sat in swap. Adding up &lt;code&gt;ps&lt;/code&gt; RSS gave 904 MB, more than the 769 MB &lt;code&gt;free&lt;/code&gt; called used, because pages shared between processes are counted once per process. For "am I running out", read &lt;code&gt;free&lt;/code&gt;'s available and the swap line; for "who is using it", read each container's cgroup files, swap included.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Measured 8 Oct 2026, 05:15 UTC&lt;/strong&gt;, over SSH on our test droplet &lt;code&gt;coolify-test&lt;/code&gt; (DigitalOcean FRA1, $6 Basic, 1 vCPU, 1 GB RAM, Ubuntu 24.04.5, kernel 6.8, Docker 29.8.2), up 6 days 15 hours. Twelve containers: Coolify 4.3.23 and its services, n8n 2.10.2 with Postgres, Uptime Kuma 2, a small Node app. Commands: &lt;code&gt;free -m&lt;/code&gt;, &lt;code&gt;/proc/meminfo&lt;/code&gt;, &lt;code&gt;docker stats --no-stream&lt;/code&gt;, each container's cgroup &lt;code&gt;memory.current&lt;/code&gt;, &lt;code&gt;memory.swap.current&lt;/code&gt; and &lt;code&gt;memory.stat&lt;/code&gt;, every process's &lt;code&gt;/proc/&amp;lt;pid&amp;gt;/smaps_rollup&lt;/code&gt;, and &lt;code&gt;vmstat 1 5&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The four answers, one minute apart
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it said&lt;/th&gt;
&lt;th&gt;What it counts&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;free -m&lt;/code&gt;, used&lt;/td&gt;
&lt;td&gt;769 MB of 961 MB&lt;/td&gt;
&lt;td&gt;All RAM that is not free and not cache the kernel can reclaim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;free -m&lt;/code&gt;, available&lt;/td&gt;
&lt;td&gt;192 MB&lt;/td&gt;
&lt;td&gt;What new programs can still get without swapping, by the kernel's own estimate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;free -m&lt;/code&gt;, swap used&lt;/td&gt;
&lt;td&gt;972 MB of 2,047 MB&lt;/td&gt;
&lt;td&gt;Pages pushed out of RAM to the swap file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;docker stats&lt;/code&gt;, all 12 containers added up&lt;/td&gt;
&lt;td&gt;343 MiB&lt;/td&gt;
&lt;td&gt;Each container's RAM minus its inactive file cache; no swap&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;ps&lt;/code&gt; / &lt;code&gt;smaps_rollup&lt;/code&gt;, RSS of every process added up&lt;/td&gt;
&lt;td&gt;904 MB&lt;/td&gt;
&lt;td&gt;RAM pages each process can see, shared pages counted again for every process that maps them&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;smaps_rollup&lt;/code&gt;, PSS of every process added up&lt;/td&gt;
&lt;td&gt;531 MB&lt;/td&gt;
&lt;td&gt;The same pages, with each shared page split between the processes sharing it&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Nothing here is wrong. Each line answers a different question, and the gaps between them are where people misread a server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why docker stats looks so small
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;docker stats&lt;/code&gt; takes the container's cgroup memory and subtracts the inactive file cache. For Coolify's main container the cgroup said 164 MB in use with 12 MB of inactive cache, and &lt;code&gt;docker stats&lt;/code&gt; showed 152 MiB: the same number with the cache taken off.&lt;/p&gt;

&lt;p&gt;What it never shows is swap. On a box that swaps, that is most of the picture (the cgroup files were read 17 seconds after &lt;code&gt;docker stats&lt;/code&gt;, so small differences between the first two columns are memory moving in between):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Container&lt;/th&gt;
&lt;th&gt;docker stats&lt;/th&gt;
&lt;th&gt;In RAM (cgroup)&lt;/th&gt;
&lt;th&gt;In swap (cgroup)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Coolify (app)&lt;/td&gt;
&lt;td&gt;152 MiB&lt;/td&gt;
&lt;td&gt;164 MB&lt;/td&gt;
&lt;td&gt;242 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n8n&lt;/td&gt;
&lt;td&gt;24.6 MiB&lt;/td&gt;
&lt;td&gt;29 MB&lt;/td&gt;
&lt;td&gt;195 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Uptime Kuma&lt;/td&gt;
&lt;td&gt;45.6 MiB&lt;/td&gt;
&lt;td&gt;47 MB&lt;/td&gt;
&lt;td&gt;110 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BuildKit (left over from a build)&lt;/td&gt;
&lt;td&gt;36.9 MiB&lt;/td&gt;
&lt;td&gt;19 MB&lt;/td&gt;
&lt;td&gt;62 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coolify realtime&lt;/td&gt;
&lt;td&gt;17.1 MiB&lt;/td&gt;
&lt;td&gt;18 MB&lt;/td&gt;
&lt;td&gt;51 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coolify Postgres&lt;/td&gt;
&lt;td&gt;19.0 MiB&lt;/td&gt;
&lt;td&gt;26 MB&lt;/td&gt;
&lt;td&gt;30 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sample Node app&lt;/td&gt;
&lt;td&gt;5.5 MiB&lt;/td&gt;
&lt;td&gt;10 MB&lt;/td&gt;
&lt;td&gt;29 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n8n Postgres&lt;/td&gt;
&lt;td&gt;13.2 MiB&lt;/td&gt;
&lt;td&gt;17 MB&lt;/td&gt;
&lt;td&gt;26 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Judged by &lt;code&gt;docker stats&lt;/code&gt;, n8n is a 25 MB app. Counting its swap, it is about 220 MB, nine times more. If you size a server from &lt;code&gt;docker stats&lt;/code&gt; on a machine that is already swapping, you will undersize it.&lt;/p&gt;

&lt;p&gt;To read both numbers for one container on Ubuntu 24.04 (cgroup v2), use the full container id:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;docker inspect &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s1"&gt;'{{.Id}}'&lt;/span&gt; n8n-container-name&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; /sys/fs/cgroup/system.slice/docker-&lt;span class="nv"&gt;$id&lt;/span&gt;.scope/memory.current       &lt;span class="c"&gt;# bytes in RAM&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; /sys/fs/cgroup/system.slice/docker-&lt;span class="nv"&gt;$id&lt;/span&gt;.scope/memory.swap.current  &lt;span class="c"&gt;# bytes in swap&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why adding up ps gives too much
&lt;/h2&gt;

&lt;p&gt;RSS is every page a process has in RAM, including pages it shares with others: libraries, and memory a parent process shares with its workers. Coolify runs PHP-FPM workers, and each one reported about 25-28 MB of RSS, but only 4.6-6.3 MB of PSS, its fair share once the shared pages are split. Add up the RSS of several such workers and you count the same shared memory once for each of them.&lt;/p&gt;

&lt;p&gt;Across the whole machine, RSS added up to 904 MB and PSS to 531 MB. PSS is the better number for "how much does this group of processes cost"; RSS is the right number only for a single process on its own.&lt;/p&gt;

&lt;p&gt;Per-process swap has the same trap. The &lt;code&gt;Swap:&lt;/code&gt; lines in &lt;code&gt;smaps_rollup&lt;/code&gt; added up to 1,583 MB, while the machine only had 972 MB in swap. Shared pages that were swapped out show up in every process that maps them. The biggest single entries were still useful for ranking: n8n's Node.js process (it appears as &lt;code&gt;MainThread&lt;/code&gt;) with 187 MB, then &lt;code&gt;uptime-kuma&lt;/code&gt; with 100 MB. Use per-process numbers to find the biggest users, not to add up a total.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why free's used is not the number to watch
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;free&lt;/code&gt; called 769 MB used and 69 MB free, which looks alarming on a 961 MB machine. Linux keeps file cache in RAM until something needs the space, so free memory on a busy server is always low. The kernel's own estimate of what is still usable, MemAvailable, was 192 MB, and that is what &lt;code&gt;free&lt;/code&gt; prints as &lt;strong&gt;available&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The swap line matters more on a small box: 972 MB of pages did not fit in RAM. &lt;code&gt;vmstat 1 5&lt;/code&gt; showed the kernel reading up to 180 KB per second back from swap in the one-second samples (0, 152, 128 and 180 KB/s; the first line, 464 KB/s, is the average since boot). Swap that sits still is harmless; swap that is read back all the time means the working set does not fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which number to use for what
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Am I about to run out?&lt;/strong&gt; &lt;code&gt;free -m&lt;/code&gt;: the &lt;strong&gt;available&lt;/strong&gt; column, then the swap line. Low available plus a busy &lt;code&gt;si&lt;/code&gt; column in &lt;code&gt;vmstat 5&lt;/code&gt; means it is time for more RAM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which container is the problem?&lt;/strong&gt; The cgroup files above, RAM plus swap. &lt;code&gt;docker stats&lt;/code&gt; alone hides swap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which process is the problem?&lt;/strong&gt; Per-process RSS or swap, to rank them. Do not add them up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What does a group of processes really cost?&lt;/strong&gt; PSS, from &lt;code&gt;/proc/&amp;lt;pid&amp;gt;/smaps_rollup&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The commands for the swap ranking are on our one-page checklist: &lt;a href="https://www.fewservers.com/g/memory/" rel="noopener noreferrer"&gt;find what is using memory and swap&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this box should be
&lt;/h2&gt;

&lt;p&gt;This is the same server we watched for &lt;a href="https://www.fewservers.com/posts/n8n-uptime-kuma-1gb-vps-5-days/" rel="noopener noreferrer"&gt;5 days with Coolify, n8n and Uptime Kuma&lt;/a&gt;. Six days in, it still runs, with about 1.7 GB of demand on 1 GB of RAM. The numbers above are why we would not judge it from &lt;code&gt;docker stats&lt;/code&gt;: that view says 343 MiB and suggests plenty of room, while the machine is a gigabyte into swap.&lt;/p&gt;

&lt;p&gt;If you are choosing a size for a similar stack, prices read on 7 Oct 2026: a &lt;a href="https://www.fewservers.com/go/digitalocean/" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt; Basic droplet with 2 GB is $12 a month and 4 GB is $24; &lt;a href="https://www.fewservers.com/go/databasemart/" rel="noopener noreferrer"&gt;Database Mart&lt;/a&gt;'s Express Linux VPS has 4 GB for $5.99 with a shared IP address and US data centres only (details in &lt;a href="https://www.fewservers.com/posts/database-mart-vps-pricing-explained/" rel="noopener noreferrer"&gt;Database Mart VPS pricing explained&lt;/a&gt;). We measured only the 1 GB droplet in this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why does docker stats show less memory than free?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;docker stats&lt;/code&gt; leaves out swap and subtracts the cache the kernel can drop, and it only covers containers, not Docker itself, the system services or the kernel. On our server the 12 containers added up to 343 MiB in &lt;code&gt;docker stats&lt;/code&gt; while &lt;code&gt;free&lt;/code&gt; said 769 MB used and 972 MB in swap.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does docker stats include swap?
&lt;/h3&gt;

&lt;p&gt;No. On our server n8n showed 24.6 MiB in &lt;code&gt;docker stats&lt;/code&gt; and had 195 MB in swap at the same moment, according to its cgroup's &lt;code&gt;memory.swap.current&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the difference between RSS and PSS?
&lt;/h3&gt;

&lt;p&gt;RSS counts every page a process has in RAM, including pages shared with other processes. PSS splits each shared page between the processes that share it. Our PHP-FPM workers had about 25 MB of RSS each but 5 MB of PSS. Adding up RSS over-counts; adding up PSS does not.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which free column should I watch?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;available&lt;/strong&gt;. It is the kernel's estimate of memory that new programs can use without swapping. &lt;strong&gt;free&lt;/strong&gt; is always low on a busy server because Linux fills spare RAM with cache.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why do the per-process swap numbers add up to more than the swap in use?
&lt;/h3&gt;

&lt;p&gt;Swapped-out shared pages are reported by every process that maps them. Ours added up to 1,583 MB with only 972 MB of swap in use. Use the per-process numbers to rank, and &lt;code&gt;free&lt;/code&gt; for the total.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://www.fewservers.com/posts/free-vs-docker-stats-vs-ps-memory/" rel="noopener noreferrer"&gt;Few Servers&lt;/a&gt;. Some links there are affiliate links; we only cover what we measured.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>linux</category>
      <category>selfhosted</category>
      <category>devops</category>
    </item>
    <item>
      <title>The best MCP servers for Claude Code that need no API key: the 5 we ran</title>
      <dc:creator>Mortise Apps</dc:creator>
      <pubDate>Fri, 09 Oct 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/fewservers/the-best-mcp-servers-for-claude-code-that-need-no-api-key-the-5-we-ran-2ip7</link>
      <guid>https://dev.to/fewservers/the-best-mcp-servers-for-claude-code-that-need-no-api-key-the-5-we-ran-2ip7</guid>
      <description>&lt;p&gt;Most "best MCP servers" lists are a page of logos. This one has five servers, and we ran every one on 6 October 2026. None of them needs an account, a card or an API key. For each server we counted its tools, timed it and noted what to watch for.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; These five work in Claude Code with nothing but a terminal command: &lt;strong&gt;Context7&lt;/strong&gt; (current library docs, 2 tools), &lt;strong&gt;Playwright MCP&lt;/strong&gt; (drives a real browser, 25 tools), &lt;strong&gt;Microsoft Learn&lt;/strong&gt; (Microsoft and Azure docs, 3 tools, remote, nothing to install), &lt;strong&gt;Fetch&lt;/strong&gt; (reads any web page as markdown, 1 tool) and &lt;strong&gt;Git&lt;/strong&gt; (reads and writes a local repository, 12 tools). All five showed "Connected" in &lt;code&gt;claude mcp list&lt;/code&gt;, and every test call worked. Playwright MCP is the heavy one: about 780 MB of memory with one page open, and 55% of the tool definitions in this list. Fetch can read internal URLs and Git can commit and reset, so add those two deliberately.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The 3-minute video version: &lt;a href="https://youtu.be/DpVl38mr15Y" rel="noopener noreferrer"&gt;5 MCP servers for Claude Code with no API key (YouTube)&lt;/a&gt;. In 30 seconds each: &lt;a href="https://youtube.com/shorts/f3ZNvcjNhSA" rel="noopener noreferrer"&gt;the five, with their tool counts&lt;/a&gt; and &lt;a href="https://youtube.com/shorts/4PN0DVz3VQM" rel="noopener noreferrer"&gt;what to know about the Fetch server&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tested 6 Oct 2026, 04:38 to 04:45 UTC:&lt;/strong&gt; a MacBook (Apple silicon) with Node.js 20.19.4, Python 3.12 and uv 0.12.23; Claude Code 2.1.284. Each local server was started with the same command Claude Code uses. We then recorded its handshake, its &lt;code&gt;tools/list&lt;/code&gt; reply and one or two real calls with a small MCP client of our own, measuring memory with &lt;code&gt;ps&lt;/code&gt;. Then we added all five to Claude Code in a scratch project with the commands below and ran &lt;code&gt;claude mcp list&lt;/code&gt;. No API keys or accounts were used anywhere.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The five, side by side
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Server&lt;/th&gt;
&lt;th&gt;What it gives Claude Code&lt;/th&gt;
&lt;th&gt;Tools&lt;/th&gt;
&lt;th&gt;Key or account&lt;/th&gt;
&lt;th&gt;Started in (first run / again)&lt;/th&gt;
&lt;th&gt;Memory&lt;/th&gt;
&lt;th&gt;Version we ran&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.fewservers.com/posts/context7-mcp-explained-tested/" rel="noopener noreferrer"&gt;Context7&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Current documentation for libraries and frameworks&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;None (optional key for higher rate limits)&lt;/td&gt;
&lt;td&gt;6.8 s / 1.7 s&lt;/td&gt;
&lt;td&gt;195 to 341 MB&lt;/td&gt;
&lt;td&gt;4.1.1 (npm, MIT)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.fewservers.com/posts/playwright-mcp-explained-tested/" rel="noopener noreferrer"&gt;Playwright MCP&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A real browser it can open, read and click&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;3.8 s / 1.5 s&lt;/td&gt;
&lt;td&gt;332 MB, 778 MB with a page open&lt;/td&gt;
&lt;td&gt;0.0.83 (npm, Apache-2.0)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft Learn&lt;/td&gt;
&lt;td&gt;Search and fetch over Microsoft and Azure docs&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;0.5 s (remote)&lt;/td&gt;
&lt;td&gt;none on your machine&lt;/td&gt;
&lt;td&gt;server 1.0.0 (hosted by Microsoft)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fetch&lt;/td&gt;
&lt;td&gt;Any URL as markdown&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;10.8 s / 0.7 s&lt;/td&gt;
&lt;td&gt;61 to 158 MB&lt;/td&gt;
&lt;td&gt;2026.8.18 (PyPI, MIT)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Git&lt;/td&gt;
&lt;td&gt;Log, diff, status, and also commit, branch and reset&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;4.3 s / 0.7 s&lt;/td&gt;
&lt;td&gt;95 to 133 MB&lt;/td&gt;
&lt;td&gt;2026.8.18 (PyPI, MIT)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;"First run" includes &lt;code&gt;npx&lt;/code&gt; or &lt;code&gt;uvx&lt;/code&gt; downloading the package; "again" is the second start with the package cached. Memory is the server and its child processes, read with &lt;code&gt;ps&lt;/code&gt; after the tool list (and, for Playwright, after opening a page).&lt;/p&gt;

&lt;h2&gt;
  
  
  The commands
&lt;/h2&gt;

&lt;p&gt;Each line is the one we ran, in the form the project's own README gives for Claude Code (or, where it gives none, the standard &lt;code&gt;claude mcp add&lt;/code&gt; form). They add the server to the current project only; add &lt;code&gt;--scope user&lt;/code&gt; to make one available in every project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add context7 &lt;span class="nt"&gt;--&lt;/span&gt; npx &lt;span class="nt"&gt;-y&lt;/span&gt; @upstash/context7-mcp
claude mcp add playwright npx @playwright/mcp@latest
claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http microsoft-learn https://learn.microsoft.com/api/mcp
claude mcp add fetch &lt;span class="nt"&gt;--&lt;/span&gt; uvx mcp-server-fetch
claude mcp add git &lt;span class="nt"&gt;--&lt;/span&gt; uvx mcp-server-git &lt;span class="nt"&gt;--repository&lt;/span&gt; /path/to/your/repo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fetch and Git are Python packages run with &lt;code&gt;uvx&lt;/code&gt;, so you need &lt;a href="https://docs.astral.sh/uv/" rel="noopener noreferrer"&gt;uv&lt;/a&gt; installed. Context7 and Playwright need Node.js. Microsoft Learn needs nothing local: Claude Code talks to Microsoft's server over HTTPS.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Context7: library docs that are not two versions old
&lt;/h2&gt;

&lt;p&gt;What it does: two tools. One finds the library you mean, the other returns documentation snippets for your question. We asked it to resolve "fastapi" for the question "How do I add a background task in FastAPI?". In 2.5 seconds it returned five candidate sources with their snippet counts, the top one FastAPI's own site with 3,457 snippets.&lt;/p&gt;

&lt;p&gt;Without a key it worked for everything we tried. Its README says a key gives "higher rate limits and private repositories", and its API guide describes the no-key tier as "Low rate limits and no custom configuration" without giving a number (&lt;a href="https://context7.com/docs/api-guide" rel="noopener noreferrer"&gt;Context7 API guide&lt;/a&gt;, read 6 Oct 2026). We did not hit a limit in a handful of calls. Our &lt;a href="https://www.fewservers.com/posts/context7-mcp-explained-tested/" rel="noopener noreferrer"&gt;full Context7 test&lt;/a&gt; graded three of its answers against ones we had checked by hand: two right, one incomplete.&lt;/p&gt;

&lt;p&gt;Cost of keeping it connected: 4,937 bytes of tool definitions, about a quarter of Playwright MCP's.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Playwright MCP: a browser your agent can use
&lt;/h2&gt;

&lt;p&gt;What it does: 25 tools that open pages, read them, click, type, fill forms, take screenshots and read the console and network. We opened fewservers.com/g/ and asked for a snapshot: the page loaded in 8.9 seconds (that includes starting headless Chromium) and the snapshot was 6,916 characters.&lt;/p&gt;

&lt;p&gt;What to watch: it is the heavy one. With one page open, the server and its browser processes took 778 MB. Its 25 tool definitions are 21,332 bytes, more than the other four servers together. Our &lt;a href="https://www.fewservers.com/posts/playwright-mcp-explained-tested/" rel="noopener noreferrer"&gt;Playwright MCP test&lt;/a&gt; has the details, including the 32,732-character snapshot of a longer page and the find tool that keeps snapshots small.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Microsoft Learn: the remote one
&lt;/h2&gt;

&lt;p&gt;What it does: three tools, &lt;code&gt;microsoft_docs_search&lt;/code&gt;, &lt;code&gt;microsoft_code_sample_search&lt;/code&gt; and &lt;code&gt;microsoft_docs_fetch&lt;/code&gt;, over Microsoft's documentation. It runs on Microsoft's servers, so nothing is installed and nothing uses your memory. The handshake took 0.5 seconds.&lt;/p&gt;

&lt;p&gt;We searched "Azure Functions Python timeout limit consumption plan". The answer came back in 1.2 seconds, 21,770 characters long. The first result was a Microsoft Q&amp;amp;A thread rather than a documentation page, so check which source an answer came from before relying on it. Use this one if you write code against Azure, .NET or Microsoft 365; skip it otherwise.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Fetch: any page as markdown
&lt;/h2&gt;

&lt;p&gt;What it does: one tool, &lt;code&gt;fetch&lt;/code&gt;, which downloads a URL and turns the HTML into markdown, in chunks if the page is long. Our article page came back in 3.4 seconds as clean markdown: breadcrumbs, intro, byline. A page that is mostly a form (our /g/ page) came back as two lines, because the extractor keeps the main text and drops forms.&lt;/p&gt;

&lt;p&gt;What to watch:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It quietly needs Node.js too.&lt;/strong&gt; When Node is installed, Fetch uses a JavaScript HTML simplifier and runs &lt;code&gt;npm install&lt;/code&gt; on the first fetch. On our machine that first fetch failed with an npm cache permission error ("returned non-zero exit status 1"). With a clean npm cache it took 6.0 seconds the first time and 1.9 seconds after that. If your first fetch fails, look at npm, not at the server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It can reach your internal network.&lt;/strong&gt; Its README warns that it "can access local/internal IP addresses". Do not add Fetch on a machine that can see admin panels or cloud metadata endpoints you don't want an agent reading.&lt;/li&gt;
&lt;li&gt;It obeys a site's robots.txt by default for requests the model makes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Git: your repository, including the write commands
&lt;/h2&gt;

&lt;p&gt;What it does: 12 tools. Seven only read: status, three kinds of diff, log, show and branch. Five change things: add, commit, create branch, checkout, and reset, which the server itself marks as destructive. On a three-commit test repository, &lt;code&gt;git_log&lt;/code&gt;, &lt;code&gt;git_status&lt;/code&gt; and &lt;code&gt;git_diff_unstaged&lt;/code&gt; each answered in 0.02 to 0.04 seconds.&lt;/p&gt;

&lt;p&gt;What to watch: Claude Code can already run &lt;code&gt;git&lt;/code&gt; in its shell, with your permission prompts. The difference is that this server's tools are separate MCP tools, and an "allow" you give them applies to commit and reset too if you allow the whole server. Pin it to one repository with &lt;code&gt;--repository&lt;/code&gt;, and allow the read tools only. Add it when you want git history in an agent that has no shell. In Claude Code itself it adds little. Its README also says it "is currently in early development" and that its tools may change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which ones to add
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Context7&lt;/strong&gt; if you write code against any library that changes often. It is light and needs no key.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Learn&lt;/strong&gt; if you work with Microsoft or Azure. It costs you nothing locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Playwright MCP&lt;/strong&gt; when the agent has to check a real page: a deploy, a form, a bug report with steps. Remove it when you don't need it: it is the largest tool list and the biggest memory user here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fetch&lt;/strong&gt; only if you need the agent to read pages as markdown in a client without web tools, and never on a machine with sensitive internal addresses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git&lt;/strong&gt; mainly for clients without a shell; in Claude Code, prefer plain &lt;code&gt;git&lt;/code&gt; with permission prompts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each server's tool definitions are loaded into Claude Code's context, and together these five come to about 39 KB. If you only need two of them, add two.&lt;/p&gt;

&lt;p&gt;All five are listed, with thousands of others, in our &lt;a href="https://www.fewservers.com/mcp/" rel="noopener noreferrer"&gt;MCP server directory&lt;/a&gt;, built from the official MCP Registry and refreshed daily.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Which MCP servers work in Claude Code without an API key?
&lt;/h3&gt;

&lt;p&gt;Context7, Playwright MCP, Microsoft Learn, Fetch and Git all worked with no key and no account when we ran them on 6 Oct 2026. Context7 accepts an optional key for higher rate limits.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I add an MCP server to Claude Code?
&lt;/h3&gt;

&lt;p&gt;Run &lt;code&gt;claude mcp add &amp;lt;name&amp;gt; -- &amp;lt;command&amp;gt;&lt;/code&gt; for a local server, or &lt;code&gt;claude mcp add --transport http &amp;lt;name&amp;gt; &amp;lt;url&amp;gt;&lt;/code&gt; for a remote one, then check it with &lt;code&gt;claude mcp list&lt;/code&gt;. Add &lt;code&gt;--scope user&lt;/code&gt; to use it in every project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which MCP server uses the most memory?
&lt;/h3&gt;

&lt;p&gt;Playwright MCP, because it runs a real browser: 778 MB with one page open in our test. The others used 61 to 341 MB, and Microsoft Learn none, because it runs on Microsoft's servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is the Fetch MCP server safe to use?
&lt;/h3&gt;

&lt;p&gt;Its own README warns that it can reach local and internal IP addresses. Use it on a machine where that is acceptable, and keep Claude Code's permission prompts on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do these servers slow Claude Code down?
&lt;/h3&gt;

&lt;p&gt;Each one adds its tool definitions to the context: from 1,161 bytes for Fetch to 21,332 bytes for Playwright MCP. Local servers also start with Claude Code, from under a second to about 11 seconds on a first run while the package downloads.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>claude</category>
      <category>devtools</category>
    </item>
    <item>
      <title>How do I set the Jira Team field automatically from the assignee?</title>
      <dc:creator>Mortise Apps</dc:creator>
      <pubDate>Thu, 08 Oct 2026 13:45:57 +0000</pubDate>
      <link>https://dev.to/mortiseapps/how-do-i-set-the-jira-team-field-automatically-from-the-assignee-18g4</link>
      <guid>https://dev.to/mortiseapps/how-do-i-set-the-jira-team-field-automatically-from-the-assignee-18g4</guid>
      <description>&lt;p&gt;A question that keeps coming up on the Atlassian Community: when someone is assigned a work item, can Jira fill in the Team field with that person's team? Yes, with an Automation rule, and since September 2026 without the JSON that Atlassian's own knowledge base article still shows. What Jira does not have is a single step that looks up "the assignee's team": the rule needs one branch per team, and a person who belongs to several teams has no obvious answer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; Build a Jira Automation rule with the trigger &lt;strong&gt;Field value changed&lt;/strong&gt; on Assignee, an &lt;strong&gt;If/else&lt;/strong&gt; block with one branch per team ("is the assignee in team A?"), and in each branch an &lt;strong&gt;Edit work item&lt;/strong&gt; action that sets Team to that team. Atlassian's knowledge base shows the action as advanced JSON (&lt;code&gt;{"fields": {"customfield_10001": "&amp;lt;team id&amp;gt;"}}&lt;/code&gt;); the native team picker that Atlassian started rolling out in the week of 21 September 2026 removes the JSON and the team ID lookups. There is no documented smart value that returns the assignee's team, so the rule cannot be written once for every team. Afterwards, check for assigned work the rule missed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The 60-second video version: &lt;a href="https://youtu.be/HkM1yX77xKc" rel="noopener noreferrer"&gt;Set the Jira Team field from the assignee (YouTube)&lt;/a&gt;. In 20 seconds: &lt;a href="https://youtube.com/shorts/RrgFPWUQByk" rel="noopener noreferrer"&gt;membersOf() works with teams, not by name&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Checked 5 Oct 2026:&lt;/strong&gt; Atlassian's knowledge base article on updating the Team field from the Assignee, the Atlassian Cloud changelog for 21 to 28 September 2026, Atlassian's Community article on Teams in Automation, and the JQL functions documentation. We have not built this rule on a test site yet; where the documentation is silent, the article says so.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The question
&lt;/h2&gt;

&lt;p&gt;On 6 September 2026 an Atlassian Community member asked whether automation could "find the first team of the user and assign the issue to this team", adding: "not hard coded I have many users." A month later the thread has no accepted answer. The two halves of that request get very different answers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Jira Automation can do
&lt;/h2&gt;

&lt;p&gt;Atlassian's knowledge base article "Automation: Update the Team field based on the Assignee field" describes the rule:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Trigger:&lt;/strong&gt; "Field value changed", to run when the Assignee field changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Condition:&lt;/strong&gt; "an If/else block to check the assignee field and set the Team field accordingly".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action:&lt;/strong&gt; "Edit issue" with advanced field editing in JSON:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"fields"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"customfield_10001"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PUT TEAM ID HERE"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;customfield_10001&lt;/code&gt; is the Team field's ID on many sites, but the article warns to "check the Team Custom field ID on your instance", and the value is the team's ID, not its name.&lt;/p&gt;

&lt;p&gt;Two newer changes make this easier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Atlassian's Community article on Teams in Automation lists &lt;strong&gt;Edit work item&lt;/strong&gt; setting a team, &lt;strong&gt;Field value changed&lt;/strong&gt; triggering on the Team field, and a &lt;strong&gt;Work item fields condition&lt;/strong&gt; that tests it ("If team field is Team Mobile...").&lt;/li&gt;
&lt;li&gt;The Atlassian Cloud changelog for 21 to 28 September 2026, under &lt;strong&gt;"Native Teams support in Jira automation"&lt;/strong&gt; (marked ROLLING OUT), says admins can "select teams directly in the Assign work item action and the User condition, removing the need for manual JSON workarounds or team ID lookups".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With the User condition taking a team, each branch reads naturally: &lt;em&gt;if the Assignee is in team Payments, set Team to Payments&lt;/em&gt;. Because the change is rolling out, your site may not have the team picker yet; the JSON version works in the meantime.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it cannot do
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;There is no "assignee's team" value.&lt;/strong&gt; We found no documented smart value that returns the team a user belongs to, so the rule cannot say "set Team to whatever team the assignee is in". Every team needs its own branch. For a handful of delivery teams that is manageable; for dozens it is a rule to maintain whenever teams change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;People in several teams.&lt;/strong&gt; Atlassian Teams are not exclusive: one person can be a member of several. "The first team" is not something Jira defines. Put the branches in the order you want to win (If/else stops at the first match), or keep people who sit in several teams out of the rule and set their work by hand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Changes to teams do not re-run it.&lt;/strong&gt; The rule fires when the assignee changes. If someone moves to another team, work already assigned to them keeps the old team until the assignee changes again or you bulk-edit it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check what the rule missed
&lt;/h2&gt;

&lt;p&gt;Two JQL searches tell you whether the rule is doing its job:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;assignee in membersOf("id:&amp;lt;teamId&amp;gt;") AND "Team[Team]" is EMPTY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Work assigned to a member of the team but with no team set. The JQL functions documentation says teams "don't currently work with team names" in &lt;code&gt;membersOf()&lt;/code&gt;: use the ID from the team's profile URL, with the &lt;code&gt;id:&lt;/code&gt; prefix.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;assignee is not EMPTY AND issue in noTeam() AND statusCategory != Done
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With TeamLens for Jira installed, &lt;code&gt;noTeam()&lt;/code&gt; lists every work item with an empty Team field, across teams, without IDs. Saved as a filter on a dashboard, it should fall towards zero once the rule is running. TeamLens does not set the Team field itself; it shows where it is missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  A rule that holds up
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;List the teams that own work, with their IDs from the team profile URLs.&lt;/li&gt;
&lt;li&gt;Build the rule in one project first: Field value changed (Assignee), If/else with one branch per team, Edit work item setting Team.&lt;/li&gt;
&lt;li&gt;Leave out a catch-all branch that clears the field: when no branch matches, the rule changes nothing, which is what you want for people outside the listed teams.&lt;/li&gt;
&lt;li&gt;Run it for a week, then compare the &lt;code&gt;noTeam()&lt;/code&gt; count before and after.&lt;/li&gt;
&lt;li&gt;Note the rule in your team clean-up checklist: &lt;a href="https://www.mortiseapps.com/blog/merge-archive-delete-atlassian-team-jira/" rel="noopener noreferrer"&gt;merging, archiving or deleting a team&lt;/a&gt; changes what each branch points at.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How TeamLens fits
&lt;/h2&gt;

&lt;p&gt;TeamLens for Jira adds &lt;code&gt;teamIn()&lt;/code&gt; and &lt;code&gt;noTeam()&lt;/code&gt; to JQL, so the follow-up searches use team names instead of IDs (&lt;a href="https://www.mortiseapps.com/blog/search-jira-by-team-name-teamin-noteam-jql/" rel="noopener noreferrer"&gt;how they work&lt;/a&gt;). Its Team Statistics gadget has a "(no team)" row, which is the quickest way to see whether automation is keeping the Team field filled. It reads teams and work items; it does not change them.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can Jira set the Team field automatically?
&lt;/h3&gt;

&lt;p&gt;Yes, with Jira Automation: trigger on the Assignee changing, check which team the assignee is in, and set the Team field with Edit work item. There is one branch per team.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is there a smart value for the assignee's team?
&lt;/h3&gt;

&lt;p&gt;Not that we could find in Atlassian's documentation on 5 Oct 2026. The rule has to check each team in its own branch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I still need JSON and team IDs?
&lt;/h3&gt;

&lt;p&gt;Not once the native team support reaches your site: Atlassian's changelog for the week of 21 September 2026 adds a team picker to the User condition and the Assign work item action. Until then, the knowledge base's JSON action with the team ID works.&lt;/p&gt;

&lt;h3&gt;
  
  
  What if a user is in more than one team?
&lt;/h3&gt;

&lt;p&gt;Jira does not pick one. In an If/else block the first matching branch wins, so order the branches deliberately, or leave those users out of the rule.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I find work with no team?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;"Team[Team]" is EMPTY&lt;/code&gt; in plain JQL, or &lt;code&gt;issue in noTeam()&lt;/code&gt; with TeamLens for Jira. Combine it with &lt;code&gt;assignee is not EMPTY&lt;/code&gt; to see assigned work the rule missed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://community.atlassian.com/forums/discussion/3285021/can-i-auto-popluate-team-field-based-on-assignee-field" rel="noopener noreferrer"&gt;Can I auto populate team field based on assignee field?, Atlassian Community&lt;/a&gt; - the question, 6 Sep 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://confluence.atlassian.com/jirakb/automation-update-the-team-field-based-on-the-assignee-field-1540227585.html" rel="noopener noreferrer"&gt;Automation: Update the Team field based on the Assignee field, Atlassian knowledge base&lt;/a&gt; - trigger, If/else block, Edit issue with &lt;code&gt;customfield_10001&lt;/code&gt; JSON.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://confluence.atlassian.com/cloud/blog/2026/09/atlassian-cloud-changes-sep-21-to-sep-28-2026" rel="noopener noreferrer"&gt;Atlassian Cloud changes Sep 21 to Sep 28, 2026&lt;/a&gt; - "Native Teams support in Jira automation", rolling out.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://community.atlassian.com/forums/Jira-articles/Automate-your-workflows-with-Atlassian-Teams-in-automations/ba-p/3187149" rel="noopener noreferrer"&gt;Automate your workflows with Atlassian Teams in automations, Atlassian Community&lt;/a&gt; - Edit work item, Field value changed and Work item fields condition with teams.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.atlassian.com/jira-software-cloud/docs/jql-functions/" rel="noopener noreferrer"&gt;JQL functions, Atlassian Support&lt;/a&gt; - &lt;code&gt;membersOf()&lt;/code&gt; with teams needs the team ID; IN, NOT IN, WAS IN, WAS NOT IN.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.mortiseapps.com/blog/set-jira-team-field-from-assignee-automation/" rel="noopener noreferrer"&gt;Mortise Apps blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>jira</category>
      <category>atlassian</category>
      <category>agile</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Deploy Coolify on a $6 VPS in 15 minutes, timed step by step</title>
      <dc:creator>Mortise Apps</dc:creator>
      <pubDate>Sun, 04 Oct 2026 05:00:00 +0000</pubDate>
      <link>https://dev.to/fewservers/deploy-coolify-on-a-6-vps-in-15-minutes-timed-step-by-step-33m5</link>
      <guid>https://dev.to/fewservers/deploy-coolify-on-a-6-vps-in-15-minutes-timed-step-by-step-33m5</guid>
      <description>&lt;p&gt;Coolify is the self-hosted alternative to Heroku, Vercel and Netlify: one server, a web UI, push-to-deploy for anything that runs in Docker. The project's own docs say you need 2 CPUs and 2 GB of RAM. We wanted to know whether the &lt;strong&gt;$6 DigitalOcean droplet&lt;/strong&gt; (1 vCPU, 1 GB RAM, 25 GB SSD) is enough for a small team's side projects, so we installed it, timed every step and left it running.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; Yes, Coolify runs on DigitalOcean's $6 droplet (1 vCPU, 1 GB RAM) if you add a 2 GB swap file first. Measured on 1 Oct 2026: install script 172 s, first app deployed and answering in 210 s, build peak 720 MB RAM + 669 MB swap, idle footprint about 250 MB for Coolify itself. For more than two small apps, take the $12 plan.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Short version: it works, with one trick (a 2 GB swap file). The install script took &lt;strong&gt;172 seconds&lt;/strong&gt;, the first app was answering HTTP requests &lt;strong&gt;210 seconds&lt;/strong&gt; after clicking Deploy, and the measured steps from an empty account to a running app add up to just under 10 minutes (our wall clock said 23, because of a wrong base directory described below and a coffee). Memory after boot sat at &lt;strong&gt;618 MB used&lt;/strong&gt; with four containers healthy; the build peaked at 720 MB plus 669 MB of swap, which is why the swap file is not optional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Watch it instead
&lt;/h2&gt;

&lt;p&gt;The same steps as a 5-minute video, with the numbers on screen: &lt;a href="https://youtu.be/zyjQs_WvBkc" rel="noopener noreferrer"&gt;Deploy Coolify on a $6 VPS in 15 minutes (YouTube)&lt;/a&gt;. Two 30-second versions: &lt;a href="https://youtube.com/shorts/bnzzMjjuBqo" rel="noopener noreferrer"&gt;the one number that decides 1 GB&lt;/a&gt; and &lt;a href="https://youtube.com/shorts/lihj0TNT9ds" rel="noopener noreferrer"&gt;the deploy that said Success while restarting&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;a href="https://www.digitalocean.com/" rel="noopener noreferrer"&gt;DigitalOcean account&lt;/a&gt;. New accounts need a payment method before the first droplet; the droplet is billed hourly ($0.009/h), so a one-hour test costs a cent.&lt;/li&gt;
&lt;li&gt;An SSH key on your machine. If you do not have one: &lt;code&gt;ssh-keygen -t ed25519 -f ~/.ssh/coolify&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;About 15 minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: create the droplet (1 minute)
&lt;/h2&gt;

&lt;p&gt;In the DigitalOcean console choose &lt;strong&gt;Create → Droplets&lt;/strong&gt;. Pick the region closest to you, then &lt;strong&gt;Ubuntu 24.04 (LTS)&lt;/strong&gt; as the image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz06q8sjefsogsovkx2wd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz06q8sjefsogsovkx2wd.jpg" alt="DigitalOcean create droplet: region and Ubuntu 24.04 image selected" width="799" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under &lt;strong&gt;Choose a Droplet Plan&lt;/strong&gt; stay on &lt;em&gt;Basic → Regular&lt;/em&gt; and pick the &lt;strong&gt;$6.00/mo&lt;/strong&gt; plan: 1 vCPU, 1 GB RAM, 25 GB SSD, 1000 GB transfer. Skip the $4 plan: 512 MB is not enough for Coolify's four containers even with swap.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbhgvwfq8mgps0aygec18.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbhgvwfq8mgps0aygec18.jpg" alt="The $6 Basic plan: 1 vCPU, 1 GB RAM, 25 GB SSD" width="799" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under &lt;strong&gt;Authentication&lt;/strong&gt; choose &lt;em&gt;SSH Keys&lt;/em&gt; and add your public key. Do not use a root password; Coolify itself will later use SSH keys to talk to the server, and password logins are the first thing bots try.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fszwwigqaybn94li0arqh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fszwwigqaybn94li0arqh.jpg" alt="SSH key selected for authentication" width="799" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tick &lt;strong&gt;Improved Metrics and monitoring&lt;/strong&gt; (free), give the droplet a name, and click &lt;strong&gt;Create Droplet&lt;/strong&gt;. Ours showed a public IP after about 60 seconds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fek0sjzvnci5dgrixj4ur.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fek0sjzvnci5dgrixj4ur.jpg" alt="Droplet active with public IPv4 and the $6/month cost shown" width="799" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: add swap (30 seconds)
&lt;/h2&gt;

&lt;p&gt;This is the part that makes the 1 GB plan work. Log in and create a 2 GB swap file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh root@YOUR_DROPLET_IP
fallocate &lt;span class="nt"&gt;-l&lt;/span&gt; 2G /swapfile
&lt;span class="nb"&gt;chmod &lt;/span&gt;600 /swapfile
mkswap /swapfile
swapon /swapfile
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'/swapfile none swap sw 0 0'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; /etc/fstab
free &lt;span class="nt"&gt;-m&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without swap the install still completes, but the first &lt;code&gt;docker build&lt;/code&gt; of a real app pushes demand past 1 GB and the kernel kills a container. With swap the build gets slow instead of dying; we measured the peak below (669 MB of swap in use during the build).&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: run the Coolify installer (172 seconds)
&lt;/h2&gt;

&lt;p&gt;One command, from the official docs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://cdn.coollabs.io/coolify/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We timed it with &lt;code&gt;date&lt;/code&gt; before and after. On the $6 droplet in Frankfurt:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1-2&lt;/td&gt;
&lt;td&gt;OS check, apt packages (curl, wget, git, jq, openssl), SSH config&lt;/td&gt;
&lt;td&gt;6 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3-4&lt;/td&gt;
&lt;td&gt;Installs Docker 29 and configures the network pool&lt;/td&gt;
&lt;td&gt;57 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5-8&lt;/td&gt;
&lt;td&gt;Downloads compose files, writes &lt;code&gt;.env&lt;/code&gt;, creates the localhost SSH key&lt;/td&gt;
&lt;td&gt;under 1 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Pulls and starts Coolify, Postgres, Redis, the realtime server and the Traefik proxy&lt;/td&gt;
&lt;td&gt;109 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;172 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;When it finishes it prints &lt;code&gt;Your instance is ready to use!&lt;/code&gt; and the URL &lt;code&gt;http://YOUR_DROPLET_IP:8000&lt;/code&gt;. Four containers are running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;coolify           Up (healthy)
coolify-db        Up (healthy)
coolify-redis     Up (healthy)
coolify-realtime  Up (healthy)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Memory right after the install: 618 MB used of 961 MB, swap 32 MB. Disk: 7.1 GB used of 24 GB (Docker images are the bulk of it).&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: create the root account and finish onboarding
&lt;/h2&gt;

&lt;p&gt;Open &lt;code&gt;http://YOUR_DROPLET_IP:8000&lt;/code&gt; in a browser. The first screen creates the root user; do this straight away, because until you do, anyone who finds the port can.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv3aqczdvmc0zymrygrdv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv3aqczdvmc0zymrygrdv.jpg" alt="Coolify first-run screen: create the root account" width="799" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the account, a three-step onboarding wizard asks where to deploy. Pick &lt;strong&gt;This machine&lt;/strong&gt; (the droplet itself); Coolify connects to it over its own localhost SSH key, checks that Docker is running and creates "My first project" with a production environment. The wizard offers to provision new servers on Hetzner, Vultr or DigitalOcean from inside Coolify, which is how you add a second box later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9yulpdjgo3wmn254t6ao.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9yulpdjgo3wmn254t6ao.jpg" alt="Coolify onboarding: choose This machine as the first server" width="799" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The whole wizard is four clicks and took us under a minute; it ends on a "Setup complete" screen with the server, the project and the Docker engine all green, and a &lt;strong&gt;Deploy Your First Resource&lt;/strong&gt; button.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: deploy your first app
&lt;/h2&gt;

&lt;p&gt;The resource picker lists a few hundred one-click services (Sonarr, Plausible, n8n, Uptime Kuma and so on) plus the generic sources: public Git repository, private repository, GitHub app, Dockerfile, Docker Compose, Docker image. We chose &lt;strong&gt;Public Git Repository&lt;/strong&gt; and pointed it at Coolify's own examples repo, &lt;code&gt;https://github.com/coollabsio/coolify-examples&lt;/code&gt;, with the base directory &lt;code&gt;/javascript/runtimes/nodejs&lt;/code&gt; (a tiny Fastify server on port 3000). Coolify inspects the repo, proposes &lt;strong&gt;Railpack&lt;/strong&gt; as the build pack and shows the branch, port and base directory for review.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2pvw8e4f56ez8qs7cdxd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2pvw8e4f56ez8qs7cdxd.jpg" alt="Public repository build configuration: Railpack, port 3000, base directory" width="799" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Continue&lt;/strong&gt;, then &lt;strong&gt;Actions → Deploy&lt;/strong&gt;. The deployment log streams live:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fddsdttvpvrr53x6kuu7m.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fddsdttvpvrr53x6kuu7m.jpg" alt="Deployment log: BuildKit detected, helper image pulled, Railpack build plan generated" width="799" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We timed it from the Deploy click to the first HTTP 200 from the public URL: &lt;strong&gt;210 seconds&lt;/strong&gt;. That breaks down into about 100 s of pulling the Railpack builder and Node base images (first deploy only; later deploys reuse them), 60 s of &lt;code&gt;npm install&lt;/code&gt; on a 1 vCPU, and 20 s to start the container and for Traefik to pick up the route. The second deploy of the same app took 1 min 52 s.&lt;/p&gt;

&lt;p&gt;Coolify gives every app a working URL immediately, on the free &lt;a href="https://www.fewservers.com/posts/sslip-io-vs-nip-io/" rel="noopener noreferrer"&gt;&lt;code&gt;sslip.io&lt;/code&gt; wildcard DNS&lt;/a&gt;: &lt;code&gt;http://&amp;lt;app-id&amp;gt;.64.226.72.55.sslip.io&lt;/code&gt;. Ours answered &lt;code&gt;{"hello":"from nodejs #2"}&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2miaqyl6qy8bklagsdoe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2miaqyl6qy8bklagsdoe.jpg" alt="Deployment history: two successful deployments" width="799" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One honest mistake worth recording: on our first attempt we typed the base directory as &lt;code&gt;/nodejs&lt;/code&gt; (the folder had moved in the repo). Railpack happily built an image from an empty directory, the deployment reported &lt;strong&gt;Success&lt;/strong&gt;, and the container then restarted every few seconds because it had nothing to run. Check the runtime logs after your first deploy, not just the green badge.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the build did to a 1 GB server
&lt;/h3&gt;

&lt;p&gt;This is where the swap file earns its keep. Our sampler logged memory every five seconds during the build:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Moment&lt;/th&gt;
&lt;th&gt;RAM used&lt;/th&gt;
&lt;th&gt;Swap used&lt;/th&gt;
&lt;th&gt;Load (1 vCPU)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Idle, Coolify only&lt;/td&gt;
&lt;td&gt;618 MB&lt;/td&gt;
&lt;td&gt;32 MB&lt;/td&gt;
&lt;td&gt;0.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;npm install&lt;/code&gt; running&lt;/td&gt;
&lt;td&gt;765 MB&lt;/td&gt;
&lt;td&gt;498 MB&lt;/td&gt;
&lt;td&gt;4.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Image export, peak&lt;/td&gt;
&lt;td&gt;720 MB&lt;/td&gt;
&lt;td&gt;669 MB&lt;/td&gt;
&lt;td&gt;7.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;App running, 5 min later&lt;/td&gt;
&lt;td&gt;648 MB&lt;/td&gt;
&lt;td&gt;478 MB&lt;/td&gt;
&lt;td&gt;0.4&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Without the 2 GB swap file, the peak would have been about 1.4 GB of demand on a 961 MB box: the kernel's OOM killer would have taken out either the build or Coolify's own database. With swap, the build was slow (load 7 on one core) but finished. The Fastify app itself uses 31 MB.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is 1 GB enough? The verdict so far
&lt;/h2&gt;

&lt;p&gt;Resident memory per container after the deploy, from &lt;code&gt;docker stats&lt;/code&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Container&lt;/th&gt;
&lt;th&gt;Memory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;coolify (the app)&lt;/td&gt;
&lt;td&gt;150 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;coolify-proxy (Traefik)&lt;/td&gt;
&lt;td&gt;38 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;coolify-realtime&lt;/td&gt;
&lt;td&gt;25 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;coolify-db (Postgres)&lt;/td&gt;
&lt;td&gt;23 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;coolify-sentinel&lt;/td&gt;
&lt;td&gt;9 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;coolify-redis&lt;/td&gt;
&lt;td&gt;7 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;your app (Fastify)&lt;/td&gt;
&lt;td&gt;31 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;283 MB&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Coolify's own footprint is about 250 MB; the rest of the "used" figure is the kernel, Docker and page cache. Disk after one build: 11 GB of 24 GB (base images and the build cache are the bulk; Coolify's cleanup job reclaims the cache weekly).&lt;/p&gt;

&lt;p&gt;So: for one or two small apps, a static site, or a private tool, the $6 droplet with swap is fine and we are leaving ours running. We will update this section with the 7-day numbers (memory trend, swap, any restarts) once we have them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the $6 plan cannot do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Build large Node or Rust projects on the server. Builds are the memory peak; for anything heavier than a static site or a small Express/Flask app, build elsewhere (GitHub Actions) and have Coolify pull the image.&lt;/li&gt;
&lt;li&gt;Run a database per app comfortably. One Postgres is fine; three is not.&lt;/li&gt;
&lt;li&gt;Survive a traffic spike without swapping. If an app matters, the &lt;strong&gt;$12 plan (2 GB)&lt;/strong&gt; is the realistic minimum and still far cheaper than one Heroku dyno.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cost comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Monthly&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DigitalOcean $6 droplet + Coolify&lt;/td&gt;
&lt;td&gt;$6.00&lt;/td&gt;
&lt;td&gt;Unlimited apps within the box, your own domain, free SSL via Traefik&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DigitalOcean $12 droplet + Coolify&lt;/td&gt;
&lt;td&gt;$12.00&lt;/td&gt;
&lt;td&gt;The comfortable size for a small team&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heroku Eco dyno&lt;/td&gt;
&lt;td&gt;$5 per app, sleeps&lt;/td&gt;
&lt;td&gt;One app, sleeps after 30 min idle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Render starter&lt;/td&gt;
&lt;td&gt;$7 per service&lt;/td&gt;
&lt;td&gt;One service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Railway hobby&lt;/td&gt;
&lt;td&gt;$5 + usage&lt;/td&gt;
&lt;td&gt;Usage-based&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For a team running three or four small services, a single Coolify box replaces $20-40 of PaaS fees. The trade: you own the updates and backups.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does Coolify work with 1 GB of RAM?
&lt;/h3&gt;

&lt;p&gt;Yes, with a swap file. Coolify's own containers use about 250 MB; the problem is the build step, which peaked at 720 MB of RAM plus 669 MB of swap in our test. Without swap the kernel kills a container during the first real build. With a 2 GB swap file the build is slow but completes.&lt;/p&gt;

&lt;h3&gt;
  
  
  How long does the Coolify install take?
&lt;/h3&gt;

&lt;p&gt;172 seconds on a $6 DigitalOcean droplet in Frankfurt, measured from running the official install script to the "Your instance is ready" message. Most of that is installing Docker (57 s) and pulling the Coolify images (109 s).&lt;/p&gt;

&lt;h3&gt;
  
  
  How much does it cost to run Coolify on DigitalOcean?
&lt;/h3&gt;

&lt;p&gt;$6.00 a month for the droplet ($0.009 an hour), plus $1.20 a month if you turn on weekly backups. Coolify itself is free and open source. There is no per-app charge, so the cost does not change when you add a second or third small app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I use the $4 droplet instead?
&lt;/h3&gt;

&lt;p&gt;No. The $4 plan has 512 MB of RAM and 10 GB of disk; Coolify's images alone used 7 GB in our install and the four core containers need more than 512 MB before any app runs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which plan for a small team running several apps?
&lt;/h3&gt;

&lt;p&gt;The $12 droplet (2 GB RAM, 50 GB SSD) is the realistic minimum once you run three or more services or any database next to your apps. It is still far cheaper than one dyno or service on a hosted PaaS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Point a domain at the droplet and set it in Coolify's settings; Traefik issues Let's Encrypt certificates automatically.&lt;/li&gt;
&lt;li&gt;Enable DigitalOcean's weekly backups ($1.20/month on this plan) or Coolify's own S3 backups.&lt;/li&gt;
&lt;li&gt;Lock the server down: &lt;a href="https://www.fewservers.com/posts/coolify-ports-firewall-rules/" rel="noopener noreferrer"&gt;which ports Coolify needs and which to close&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Wondering whether 1 GB is really enough? &lt;a href="https://www.fewservers.com/posts/can-coolify-run-on-1gb-ram/" rel="noopener noreferrer"&gt;The docs versus what we measured&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Know what the droplet costs before the invoice arrives: &lt;a href="https://www.fewservers.com/posts/digitalocean-droplet-pricing-explained/" rel="noopener noreferrer"&gt;DigitalOcean droplet pricing explained&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Read our Coolify vs Dokploy comparison once it is published; both ran on this same droplet.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://www.fewservers.com/posts/deploy-coolify-6-dollar-vps/" rel="noopener noreferrer"&gt;Few Servers&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>selfhosted</category>
      <category>devops</category>
      <category>docker</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>See the whole blocker chain in Jira: from a flat list of issue links to a dependency graph</title>
      <dc:creator>Mortise Apps</dc:creator>
      <pubDate>Fri, 02 Oct 2026 05:30:48 +0000</pubDate>
      <link>https://dev.to/mortiseapps/see-the-whole-blocker-chain-in-jira-from-a-flat-list-of-issue-links-to-a-dependency-graph-18k8</link>
      <guid>https://dev.to/mortiseapps/see-the-whole-blocker-chain-in-jira-from-a-flat-list-of-issue-links-to-a-dependency-graph-18k8</guid>
      <description>&lt;p&gt;A blocker chain in Jira is a sequence of issues joined by &lt;em&gt;blocks / is blocked by&lt;/em&gt; links: F1 blocks F2, F2 blocks F3, F3 blocks F4. Jira records every link faithfully but shows them as a flat list inside one issue at a time, so the fact that F4 is ultimately waiting on F1 is never visible anywhere. A dependency graph draws the whole chain as cards and arrows on one canvas, blockers on the left and blocked work on the right. LinkLens for Jira draws that graph for a whole project or for the issue you are looking at.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Jira gives you today
&lt;/h2&gt;

&lt;p&gt;Atlassian's documentation is clear that linked work items exist "to surface, understand, and manage dependencies". Each link type has two labels, one per direction: &lt;em&gt;blocks&lt;/em&gt; seen from the blocker, &lt;em&gt;is blocked by&lt;/em&gt; seen from the blocked issue. It is one link, one type, read from two sides.&lt;/p&gt;

&lt;p&gt;The issue view lists those links under &lt;strong&gt;Linked work items&lt;/strong&gt;, grouped by label. Boards can show a small linked-items icon on cards. Plans (Advanced Roadmaps) draws dependency lines on a timeline for the issues in a plan. All three show what is directly attached to the issue in front of you. None of them follows the chain.&lt;/p&gt;

&lt;p&gt;The request for a project-wide picture is not new. JRASERVER-2544, "Graph link dependency map", was filed in 2003 and eventually closed as won't fix. Twenty years later the flat list is still the default, which is why a whole category of Marketplace apps exists to draw the graph.&lt;/p&gt;

&lt;h2&gt;
  
  
  A real example: the payments feature and the infrastructure ticket
&lt;/h2&gt;

&lt;p&gt;A storefront team is shipping "Apple Pay and Google Pay in checkout" this sprint. On the issue view it shows one link: &lt;em&gt;is blocked by&lt;/em&gt; "Save payment method for next purchase", which is in progress. Looks fine.&lt;/p&gt;

&lt;p&gt;Open that blocker and it has its own link: &lt;em&gt;is blocked by&lt;/em&gt; "Rotate API keys for payment gateway", a task in the platform team's project, still in the backlog. Open that one and there is a fourth hop: the key rotation waits on "Shared auth service upgrade" in a third project, owned by a team that is not in the sprint review.&lt;/p&gt;

&lt;p&gt;Nobody lied and nobody forgot to link anything. The chain is four issues long, spans three projects and two teams, and the only way to discover it is to click through issue after issue. The sprint review is where it gets discovered, three hops too late.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to do it with LinkLens
&lt;/h2&gt;

&lt;p&gt;LinkLens adds two views and one rule: pick one link type, and both of its directions are used automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Dependencies page (whole project)&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the project and select &lt;strong&gt;Dependencies&lt;/strong&gt; in the project sidebar.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Link type&lt;/strong&gt;, pick &lt;em&gt;Blocks (blocks / is blocked by)&lt;/em&gt;. It is preselected on most sites.&lt;/li&gt;
&lt;li&gt;Read the canvas left to right. An arrow from A to B means &lt;em&gt;A blocks B&lt;/em&gt;. The legend under the canvas restates the rule for whatever type you picked.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the storefront project the payments chain appears as one row: key rotation, then save-payment-method, then Apple Pay, then the guest checkout story it blocks in turn. The "Shared auth service upgrade" issue from the other project shows as a dimmed, dashed card labelled &lt;em&gt;outside scope&lt;/em&gt;, so the cross-project blocker is visible without leaving the page. Widen the &lt;strong&gt;JQL scope&lt;/strong&gt; to &lt;code&gt;project in (SHOP, PLAT)&lt;/code&gt; and its own chain is drawn too.&lt;/p&gt;

&lt;p&gt;Only issues that have at least one link of the chosen type are drawn; the rest are counted in the stats line ("17 issues in scope, 16 in chains") so the picture stays readable. &lt;strong&gt;Hide Done&lt;/strong&gt; removes finished issues and their links. Click a card to pin its whole upstream and downstream chain while everything else fades; double-click to open the issue. &lt;strong&gt;PNG&lt;/strong&gt; exports the graph with a legend for a Confluence page or a slide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Dependency chain panel (one issue)&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open any issue. Select the apps button under the title and choose &lt;strong&gt;Dependency chain&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;Depth&lt;/strong&gt; to 3 to 5 hops.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The current issue sits highlighted in the middle. Everything to its left blocks it directly or indirectly; everything to its right waits on it. For the Apple Pay story that is the whole four-issue chain on one small canvas, including the other projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choosing the link type&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Choose the type whose outward label means "must happen first". &lt;em&gt;Blocks&lt;/em&gt; is the usual one. If your admins created a custom type such as &lt;em&gt;Depends on&lt;/em&gt;, check which side is the outward label; if the arrows look reversed, the type's labels are defined the other way round.&lt;/p&gt;

&lt;h2&gt;
  
  
  What LinkLens cannot do
&lt;/h2&gt;

&lt;p&gt;It is read-only in this version: it draws links and does not create or delete them, so use Jira's &lt;strong&gt;Link work item&lt;/strong&gt; action to fix a chain. It draws one link type at a time by design; a chain that mixes &lt;em&gt;blocks&lt;/em&gt; and &lt;em&gt;depends on&lt;/em&gt; has to be viewed twice. Parent and child relationships (epic to story, story to sub-task) are not drawn as edges yet. The project page caps at 2,000 issues per graph and the issue panel at 300 issues and 5 hops. Links to issues on a different Atlassian site are not followed, and it is Jira Cloud only.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does it work across projects?
&lt;/h3&gt;

&lt;p&gt;Yes. Linked issues outside the current scope are shown as dimmed cards so cross-project blockers never hide. Set the JQL scope to several projects to draw their chains in full. The issue panel follows cross-project links by default.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does it show issues I am not allowed to see?
&lt;/h3&gt;

&lt;p&gt;No. Every read runs as the person viewing the graph, so Jira's permissions apply and hidden issues are absent, including as external ends.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does it cost?
&lt;/h3&gt;

&lt;p&gt;Free for sites with up to 10 users. Above that about USD 0.20 per user per month, roughly USD 10 a month for a 50-user site, billed by Atlassian with a 30-day trial. It is on the &lt;a href="https://marketplace.atlassian.com/apps/4159212316" rel="noopener noreferrer"&gt;Atlassian Marketplace&lt;/a&gt;; details are on the &lt;a href="https://www.mortiseapps.com/linklens/" rel="noopener noreferrer"&gt;LinkLens page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://support.atlassian.com/jira-software-cloud/docs/link-issues/" rel="noopener noreferrer"&gt;Link work items, Atlassian Support&lt;/a&gt; - link types have outward and inward descriptions; where links are shown.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jira.atlassian.com/browse/JRASERVER-2544" rel="noopener noreferrer"&gt;JRASERVER-2544, Graph link dependency map&lt;/a&gt; - the 2003 request for a project-wide dependency map, closed won't fix.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://confluence.atlassian.com/jirasoftwareserver/dependencies-in-advanced-roadmaps-1044784190.html" rel="noopener noreferrer"&gt;Dependencies in Advanced Roadmaps, Atlassian Documentation&lt;/a&gt; - incoming and outgoing dependencies as blocks / is blocked by.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.mortiseapps.com/blog/see-the-whole-blocker-chain-in-jira-dependency-graph/" rel="noopener noreferrer"&gt;Mortise Apps blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>jira</category>
      <category>projectmanagement</category>
      <category>agile</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to see every dependency chain on a monday.com board</title>
      <dc:creator>Mortise Apps</dc:creator>
      <pubDate>Thu, 01 Oct 2026 20:42:26 +0000</pubDate>
      <link>https://dev.to/mortiseapps/how-to-see-every-dependency-chain-on-a-mondaycom-board-5nl</link>
      <guid>https://dev.to/mortiseapps/how-to-see-every-dependency-chain-on-a-mondaycom-board-5nl</guid>
      <description>&lt;p&gt;To see how work on a monday.com board depends on other work, you add a &lt;strong&gt;Dependency&lt;/strong&gt; column and pick, for each item, the items it waits on. monday.com then draws each link as a line in the Gantt view and can push dates when a predecessor moves. What it does not show is the structure: which item sits at the start of a chain, how many items a slip would drag along, and where two items wait on each other in a loop. This article covers what the built-in tools do, how far you get with them, and how to see the whole picture with LinkLens Dependency Map, our board view.&lt;/p&gt;

&lt;h2&gt;
  
  
  What monday.com gives you out of the box
&lt;/h2&gt;

&lt;p&gt;The Dependency column stores, for each item, the items it depends on. Three things use it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Gantt view&lt;/strong&gt; draws a connector line from each predecessor to the item that waits on it, laid out on the Timeline column. Good for one release plan on one screen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency automations&lt;/strong&gt;, such as "when a date changes, push the dependent items". These keep dates consistent but say nothing about risk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect boards columns&lt;/strong&gt;, which link items across boards. They are not dependencies by themselves, but many teams use them that way: a vendor contract on one board that a launch on another board waits for.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href="https://support.monday.com/hc/en-us/articles/360007402599-Dependencies-on-monday-com" rel="noopener noreferrer"&gt;monday.com support article on dependencies&lt;/a&gt; covers the setup. It is quick, and for a short plan it is enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the Gantt view stops
&lt;/h2&gt;

&lt;p&gt;The Gantt view answers "what comes before this bar". It struggles with three questions that project managers ask every week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How far does a delay spread?&lt;/strong&gt; If &lt;em&gt;CMS setup&lt;/em&gt; slips, the Gantt shows the line to &lt;em&gt;Content migration&lt;/em&gt;. It does not show that &lt;em&gt;SEO redirects&lt;/em&gt;, &lt;em&gt;QA testing&lt;/em&gt; and &lt;em&gt;Launch&lt;/em&gt; are behind that, five items deep. You follow the lines by hand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which item is the real bottleneck?&lt;/strong&gt; The item with the most work behind it is rarely the one that looks urgent. A small task that three chains pass through is the one to staff first, and nothing in the Gantt ranks items that way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where are the loops?&lt;/strong&gt; A loop (A waits on B, B waits on C, C waits on A) means none of the three can finish first. Loops usually arrive through Connect boards columns, imports, automations or the API rather than by hand, and a Gantt line has no way to say "this one goes backwards".&lt;/p&gt;

&lt;p&gt;Items on other boards add a fourth problem: the Gantt only shows one board, so a cross-board dependency is invisible until someone opens the other board.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can do natively
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Built-in answer&lt;/th&gt;
&lt;th&gt;Effort&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;What comes right before this item?&lt;/td&gt;
&lt;td&gt;Dependency column, Gantt connector&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What is everything upstream of this item?&lt;/td&gt;
&lt;td&gt;Follow Gantt lines by hand, or a formula per hop&lt;/td&gt;
&lt;td&gt;High, breaks past two hops&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Which items block the most work?&lt;/td&gt;
&lt;td&gt;No native view&lt;/td&gt;
&lt;td&gt;Not available&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Are there circular dependencies?&lt;/td&gt;
&lt;td&gt;No native check for chains longer than two&lt;/td&gt;
&lt;td&gt;Not available&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dependencies across boards&lt;/td&gt;
&lt;td&gt;Enterprise cross-project dependencies, or Connect boards columns read by hand&lt;/td&gt;
&lt;td&gt;Plan-dependent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A report for stakeholders&lt;/td&gt;
&lt;td&gt;Export the Gantt as an image&lt;/td&gt;
&lt;td&gt;Shows lines, not risks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you only need the first row, stop here; monday.com does it well.&lt;/p&gt;

&lt;h2&gt;
  
  
  See the whole structure: LinkLens Dependency Map
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.mortiseapps.com/linklens-monday/" rel="noopener noreferrer"&gt;LinkLens Dependency Map&lt;/a&gt; is a monday.com board view. Add it to a board, pick the Dependency column (or a Connect boards column) and it draws every chain on the board as one graph: blockers on the left, blocked work on the right, separate chains stacked, items without links counted but not drawn. Each card shows the item's group and status.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqnrh6u9wm4ghht75zewh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqnrh6u9wm4ghht75zewh.png" alt="LinkLens Dependency Map on a monday.com board, with a circular dependency in red" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What that gives you, using the questions above:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Delay spread.&lt;/strong&gt; Hover any item and its whole chain lights up, upstream and downstream. Double-click to open the item.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bottlenecks.&lt;/strong&gt; The layout puts the first blockers on the left; the item with the most cards to its right holds up the most work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Loops.&lt;/strong&gt; A circular dependency is drawn with a red dashed arrow and every loop is listed under the map.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Other boards.&lt;/strong&gt; With a Connect boards column, linked items on other boards appear as dashed outside cards with their board name and status.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus.&lt;/strong&gt; Hide done removes finished items and their links, so what remains is the work that is really blocked today.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The dependency health report
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Report&lt;/strong&gt; button turns the same data into a document you can hand to stakeholders: a 0-100 dependency health score, every risk found on the board explained in plain English with the items involved and a suggested fix (circular dependencies, overdue and stuck blockers, bottlenecks, stale blockers, date conflicts), which items are predicted to finish late and by how many days, when the open linked work is likely to clear at the recent pace, and 8-week trends of links added against blockers finished. It downloads as PDF or HTML.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6fbxsx8x81kd30b3yiag.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6fbxsx8x81kd30b3yiag.png" alt="The dependency health report: score, risks with fixes, predictions and trends" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The predictions come from the board, not from guesses: LinkLens follows each chain forward from today using the Timeline or Date column, and if a blocker ends after the item behind it is due, that item is predicted late by the difference. Everything is calculated in your browser; no board data leaves monday.com.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask Sidekick instead of opening the view
&lt;/h2&gt;

&lt;p&gt;LinkLens also adds a tool to monday Sidekick, monday.com's AI assistant. Turn the LinkLens tool on and ask, in the chat, "What is blocking Launch?", "What does CMS setup delay?" or "Are there circular dependencies on this board?". Sidekick calls LinkLens for the answer, which comes from the board's real links.&lt;/p&gt;

&lt;h2&gt;
  
  
  What LinkLens does not do
&lt;/h2&gt;

&lt;p&gt;It does not change dates, create links or write to your board; it is read-only. It does not replace the Gantt view for scheduling. And it reads items as the person viewing the board, so it never shows anyone an item they could not already open.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Do I need the Enterprise plan for cross-board dependencies?
&lt;/h3&gt;

&lt;p&gt;Not for LinkLens: it reads Connect boards columns, which exist on every plan that has them, and shows linked items on other boards as outside cards. monday.com's own cross-project dependencies feature is separate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does the Dependency column allow circular dependencies?
&lt;/h3&gt;

&lt;p&gt;Loops rarely come from typing them in by hand. They arrive through Connect boards columns, board imports, automations and the API. LinkLens draws them in red and lists them so you can remove the link that points backwards.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can viewers and guests see the map?
&lt;/h3&gt;

&lt;p&gt;Yes. The view is read-only, so viewers and guests get the same map and report; only their view settings are not saved.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://support.monday.com/hc/en-us/articles/360007402599-Dependencies-on-monday-com" rel="noopener noreferrer"&gt;Dependencies on monday.com&lt;/a&gt;, monday.com support: setting up the Dependency column and how the Gantt view and automations use it.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.monday.com/api-reference/docs/working-with-dependency-column" rel="noopener noreferrer"&gt;Working with the dependency column&lt;/a&gt;, monday.com developer documentation: how dependency data is stored and read.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://monday.com/blog/project-management/task-dependencies/" rel="noopener noreferrer"&gt;Task dependencies in project management&lt;/a&gt;, monday.com blog: dependency types and why chains matter.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.mortiseapps.com/blog/see-every-dependency-chain-monday-board/" rel="noopener noreferrer"&gt;Mortise Apps blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>projectmanagement</category>
      <category>productivity</category>
      <category>monday</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Search Jira by team name: teamIn() and noTeam() instead of Team UUIDs in JQL</title>
      <dc:creator>Mortise Apps</dc:creator>
      <pubDate>Wed, 30 Sep 2026 14:35:07 +0000</pubDate>
      <link>https://dev.to/mortiseapps/search-jira-by-team-name-teamin-and-noteam-instead-of-team-uuids-in-jql-4n1g</link>
      <guid>https://dev.to/mortiseapps/search-jira-by-team-name-teamin-and-noteam-instead-of-team-uuids-in-jql-4n1g</guid>
      <description>&lt;p&gt;In Jira Cloud, a JQL search on the Atlassian &lt;strong&gt;Team&lt;/strong&gt; field has to use the team's UUID, not its name. &lt;code&gt;"Team[Team]" = 36885b3c-1bf0-4f85-a357-c5b858c31de4&lt;/code&gt; works; &lt;code&gt;"Team[Team]" = "Payments"&lt;/code&gt; returns nothing. TeamLens for Jira adds two JQL functions that remove the copy-and-paste: &lt;code&gt;issue in teamIn("Payments")&lt;/code&gt; matches issues by team name, with a trailing &lt;code&gt;*&lt;/code&gt; for prefixes, and &lt;code&gt;issue in noTeam()&lt;/code&gt; returns every issue whose Team field is empty. Both work in filters, boards, dashboards, Jira Service Management queues and Automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why names do not work in JQL
&lt;/h2&gt;

&lt;p&gt;The Team field is a custom field (typically &lt;code&gt;customfield_10001&lt;/code&gt;) whose stored value is a team id, a UUID such as &lt;code&gt;36885b3c-1bf0-4f85-a357-c5b858c31de4&lt;/code&gt;. Atlassian's developer documentation for the field shows the JQL form directly: &lt;code&gt;"Team[Team]" = &amp;lt;uuid&amp;gt;&lt;/code&gt;. The team's display name is metadata attached to that id; JQL never compares against it.&lt;/p&gt;

&lt;p&gt;Atlassian recorded the consequence years ago in JRACLOUD-84663, "JQL Search for Team does not Recognize Team Names". The ticket is now closed, and a related ticket (JSWCLOUD-19523) notes that Jira has been rolling out team name lozenges in the JQL editor, which helps when you type a query interactively. It does not help when the query lives in a saved filter, a board, an Automation rule or a queue definition, where you still see and maintain the raw UUID.&lt;/p&gt;

&lt;p&gt;Finding a team's UUID means opening the team's profile page and copying the last segment of its URL. Do that for eight teams, paste them into a filter, and you have a query nobody can read and nobody dares to edit.&lt;/p&gt;

&lt;h2&gt;
  
  
  A real example: one JSM queue per support team
&lt;/h2&gt;

&lt;p&gt;A service desk has three tiers of support, each an Atlassian Team so that Jira Plans and the Team field on requests line up. The service manager wants a queue per tier and a board per tier that only shows that team's open requests.&lt;/p&gt;

&lt;p&gt;The native version of each queue filter looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Team[Team]" = 5f2a0c1e-8f4b-4b2e-9c6d-2c1a4f7b9d31 AND statusCategory != Done
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Six months later the Tier 2 team is renamed and merged with a new team. Whoever inherits the queues has three UUIDs and no idea which is which. The filter for "requests nobody has picked up" is worse: there is no function for "empty Team", so it is written as &lt;code&gt;"Team[Team]" is EMPTY&lt;/code&gt;, which works but is not something a queue owner will discover on their own, and it cannot be combined with "or belongs to any tier whose name starts with Tier".&lt;/p&gt;

&lt;h2&gt;
  
  
  How to do it with TeamLens
&lt;/h2&gt;

&lt;p&gt;TeamLens registers two functions. Because Jira exposes app functions through the &lt;code&gt;issue in ...&lt;/code&gt; form, that is how they are written.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Queue per team&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;issue in teamIn("Tier 1 Support") AND statusCategory != Done
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Names are matched case-insensitively against the team's display name. If no team matches, JQL shows an error naming the value, so a typo fails loudly instead of returning an empty queue. A raw UUID is also accepted, so existing filters can be migrated one clause at a time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All support tiers at once&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;issue in teamIn("Tier*") AND status = Open
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The trailing &lt;code&gt;*&lt;/code&gt; matches every team whose name starts with the prefix. New "Tier 4 Support" team next year? The queue picks it up with no edit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Everything except one team&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;issue not in teamIn("Tier 1 Support")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Work nobody owns&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;issue in noTeam() AND statusCategory != Done
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Put that one behind a scheduled Automation rule that runs every Monday and comments or emails the service manager, and unowned work stops hiding.&lt;/p&gt;

&lt;p&gt;Steps in Jira:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install TeamLens from the Marketplace (Jira admin, under a minute, no configuration).&lt;/li&gt;
&lt;li&gt;Open the issue navigator, switch to &lt;strong&gt;JQL&lt;/strong&gt;, and type &lt;code&gt;issue in teamIn("Your Team Name")&lt;/code&gt;. The autocomplete lists the app functions after the first character.&lt;/li&gt;
&lt;li&gt;Save it as a filter, then use the filter for a board, a JSM queue, a dashboard gadget or an Automation condition exactly as you would any other filter.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The team list is cached for ten minutes, so a team renamed a moment ago may still resolve under its old name for a short while.&lt;/p&gt;

&lt;h2&gt;
  
  
  Migrating existing UUID filters
&lt;/h2&gt;

&lt;p&gt;You do not have to rewrite every filter on day one. Because &lt;code&gt;teamIn()&lt;/code&gt; accepts a raw UUID as well as a name, a filter such as &lt;code&gt;"Team[Team]" in (uuid-a, uuid-b)&lt;/code&gt; can become &lt;code&gt;issue in teamIn("uuid-a", "uuid-b")&lt;/code&gt; first, then have each id swapped for the team's name as you touch it. Keep one saved filter per team with a clear name ("Team: Tier 1 Support, open") and point boards, queues and gadgets at the filter rather than repeating the JQL, so a rename means editing one place. A useful check after migration is a dashboard gadget with &lt;code&gt;issue in noTeam() AND created &amp;gt;= -30d&lt;/code&gt;: if it is not close to zero, the Team field is not being set on new work and the per-team views are undercounting.&lt;/p&gt;

&lt;h2&gt;
  
  
  What TeamLens cannot do
&lt;/h2&gt;

&lt;p&gt;The functions match team names and ids; they cannot match team members, because the Teams API only answers a human's API token, not an app's own auth context, so apps cannot read Atlassian Team membership on their own yet (app access is tracked as JRACLOUD-92072). A &lt;code&gt;myTeams()&lt;/code&gt; function that returns the issues of every team the current user belongs to is planned for when that API opens. The functions are also written as &lt;code&gt;issue in teamIn(...)&lt;/code&gt;, not &lt;code&gt;Team in teamIn(...)&lt;/code&gt;, because that is how Jira Cloud exposes every app-provided JQL function. And they are Cloud only.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does teamIn() work in Jira Service Management queues?
&lt;/h3&gt;

&lt;p&gt;Yes. Queues are JQL filters, and app functions are allowed in them. &lt;code&gt;issue in teamIn("Tier 2 Support") AND status = Open&lt;/code&gt; is a valid queue definition.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use these functions in Automation rules?
&lt;/h3&gt;

&lt;p&gt;Yes, both as a JQL condition inside a rule and in the JQL of a scheduled trigger. The weekly "unowned work" rule above is the typical use.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is this cheaper than building it myself?
&lt;/h3&gt;

&lt;p&gt;There is no do-it-yourself route: JQL functions can only be added by apps. TeamLens is free for sites with up to 10 users and USD 1 per user per month above that, with a 30-day trial, on the &lt;a href="https://marketplace.atlassian.com/apps/1146332802" rel="noopener noreferrer"&gt;Atlassian Marketplace&lt;/a&gt;. Details are on the &lt;a href="https://www.mortiseapps.com/teamlens/" rel="noopener noreferrer"&gt;TeamLens page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://developer.atlassian.com/platform/teams/components/team-field-in-jira-rest-api/" rel="noopener noreferrer"&gt;Team field in Jira REST API, Atlassian Developer&lt;/a&gt; - the UUID value and the &lt;code&gt;"Team[Team]" = uuid&lt;/code&gt; JQL form.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jira.atlassian.com/browse/JRACLOUD-84663" rel="noopener noreferrer"&gt;JRACLOUD-84663, JQL Search for Team does not Recognize Team Names&lt;/a&gt; - JQL accepts team ids, not names.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jira.atlassian.com/browse/JSWCLOUD-19523" rel="noopener noreferrer"&gt;JSWCLOUD-19523, JQL Search for Team does not Recognize Team Names&lt;/a&gt; - team name lozenges in the JQL editor.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jira.atlassian.com/browse/JRACLOUD-87808" rel="noopener noreferrer"&gt;JRACLOUD-87808, Team field not supported for sorting on gadgets, JQL or boards&lt;/a&gt; - the wider Team field JQL limitations.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.atlassian.com/platform-experiences/docs/using-atlassian-teams-in-jira-projects/" rel="noopener noreferrer"&gt;Teams in Jira projects, Atlassian Support&lt;/a&gt; - UUIDs must be used when referencing teams in workflows.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.mortiseapps.com/blog/search-jira-by-team-name-teamin-noteam-jql/" rel="noopener noreferrer"&gt;Mortise Apps blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>jira</category>
      <category>atlassian</category>
      <category>agile</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
