How to connect YouTrack to Albato

YouTrack: Project management integrations
YouTrack
·
09/18/2023
·
3 min. read

In this article

YouTrack - everything in one place. Track tasks, manage projects, maintain a knowledge base, support your customers, collaborate, and deliver great products.

Available triggers

Triggers are the events that trigger the automation, All triggers run in real time, i,e, data is transferred in the moment the event occurs

  • Issue created
  • Issue updated

Available actions

Actions are what Albato performs when your automation is running, Actions also allow you to transfer data to other apps and systems

  • New issue
  • Update issue
  • Find an issue

Before setting up integrations with YouTrack, connect the tool to Albato.

To do this, go to the Apps section and click the Add a connection button.

Example.png

Select the app and click the Add a connection button.

YouTrack.png

Come up with a name for your connection.

Enter your Domain and API key.

Click the Continue button.

YouTrack (1).png

How to get API key

Go to your YouTrack account.

Either copy the ID from the browser address bar or enter the name of the workspace you used to create the account. Go to the list of system users, select the user who will access the integration, and open the Account Security tab.

Next, create a new token and copy its value.

YouTrack (2).png

Paste the token into the Albato connection field.

The first part of the connection is finished. To receive tickets from YouTrack, we need to create two more workflows in YouTrack, write our JS code there and insert the webhook from the connection into them.

Go to the Workflows tab.

YouTrack (3).png

Create a new Workflow.

YouTrack (4).png

Set a name for your Workflow

YouTrack (5).png

and select the rule:

YouTrack (6).png

Paste the following code:

const albatoHook = '{{albatoHook}}';
const entities = require('@jetbrains/youtrack-scripting-api/entities');
const http = require('@jetbrains/youtrack-scripting-api/http');
const workflow = require('@jetbrains/youtrack-scripting-api/workflow');

function periodToHours(period) {
  return period ? (
    period.getMinutes() / 60 +
    (
      period.getHours() +
      period.getDays() * 8 +
      period.getWeeks() * 40
    )
  ) : 0;
}

function formatValue(value) {
  if (typeof value === 'object' && value !== null) {
    switch (value.$$type) {
      case 'User':
        value = value.fullName;
        break;
      default:
        if ('getPeriodType' in value) {
          value = periodToHours(value);
        } else if (value.constructor.name === 'ImmutableIterableWW') {
          const array = value;
          value = [];
          array.forEach(item => value.push(item.name));
        } else {
          value = value.name;
        }
    }
  }
  return value === undefined ? null : value;
}
exports.rule = entities.Issue.onChange({
  title: workflow.i18n('Send webhook to Albato'),
  guard: function(ctx) {
    return ctx.issue.becomesReported && ctx.issue.isReported;
  },
  action: function(ctx) {
    const issue = ctx.issue;
    const fields = {};
    for (let field in issue.fields) {
      fields[field] = formatValue(issue.fields[field]);
    }
    const tags = [];
    issue.tags.forEach(nameTag => tags.push(nameTag.name));
    const payload = {
      'event': 'newTicket',
      'ticketUrl': issue.url,
      'tags': tags,
      'id': issue.id,
      'summary': issue.summary,
      'description': issue.description,
      'projectId': issue.project.key,
      'project': issue.project.name,
      'dateCreate': issue.created,
      'dateUpdate': issue.updated,
      'fields': fields,
    };
    console.log(issue.tags);
    const connection = new http.Connection(albatoHook, null, 2000);
    connection.addHeader('content-type', 'application/json');
    const response = connection.postSync('', null, payload);
    if (!response.isSuccess) {
      console.warn('Failed to post webhook to Albato. Details: ' + response.toString());
    }
  },
});

This code catches only the creation of tasks, and the following code catches changes to tasks. You can work in one rule, or you can create an additional rule and add the following code to it:

const albatoHook = '{{albatoHook}}';
const entities = require('@jetbrains/youtrack-scripting-api/entities');
const http = require('@jetbrains/youtrack-scripting-api/http');
const workflow = require('@jetbrains/youtrack-scripting-api/workflow');

function periodToHours(period) {
  return period ? (
    period.getMinutes() / 60 +
    (
      period.getHours() +
      period.getDays() * 8 +
      period.getWeeks() * 40
    )
  ) : 0;
}

function formatValue(value) {
  if (typeof value === 'object' && value !== null) {
    switch (value.$$type) {
      case 'User':
        value = value.fullName;
        break;
      default:
        if ('getPeriodType' in value) {
          value = periodToHours(value);
        } else if (value.constructor.name === 'ImmutableIterableWW') {
          const array = value;
          value = [];
          array.forEach(item => value.push(item.name));
        } else {
          value = value.name;
        }
    }
  }
  return value === undefined ? null : value;
}
exports.rule = entities.Issue.onChange({
  title: workflow.i18n('Send webhook to Albato'),
  guard: function(ctx) {
    return !ctx.issue.becomesReported && ctx.issue.isReported;
  },
  action: function(ctx) {
    const issue = ctx.issue;
    const fields = {};
    for (let field in issue.fields) {
      fields[field] = formatValue(issue.fields[field]);
    }
    const tags = [];
    issue.tags.forEach(nameTag => tags.push(nameTag.name));
    const payload = {
      'event': 'changedTicket',
      'ticketUrl': issue.url,
      'tags': tags,
      'id': issue.id,
      'summary': issue.summary,
      'description': issue.description,
      'projectId': issue.project.key,
      'project': issue.project.name,
      'dateCreate': issue.created,
      'dateUpdate': issue.updated,
      'fields': fields,
    };
    console.log(issue.tags);
    const connection = new http.Connection(albatoHook, null, 2000);
    connection.addHeader('content-type', 'application/json');
    const response = connection.postSync('', null, payload);
    if (!response.isSuccess) {
      console.warn('Failed to post webhook to Albato. Details: ' + response.toString());
    }
  },
});

Important!

Now you have to replace in each rule where you inserted the code, in the very first constant "const albatoHook = '{{albatoHook}}';", the value {{albatoHook}}, with the actual webhook from the previously created connection. Copy the webhook from the connection you created to Albato.

You_Track_8_4b44d98c06.png

Insert a webhook into each process you create:

YouTrack (7).png

Next, you need to link your Workflow to the project you need. To do this, go back to your Workflow list, select the Workflow you created and link it to the projects:

YouTrack (9).png

Done! Now you can use the YouTrack in your integrations.


YouTrack

Join our newsletter

Hand-picked content and zero spam!

Related articles

Show more
Slack, CRM, and Task Manager Integrations: The Key to a Smooth Workflow
CRM
4 min. read

Slack, CRM, and Task Manager Integrations: The Key to a Smooth Workflow

How to automate task and note creation, saving time and staying organized so you can focus on what matters most.

How to set up HubSpot Integrations with 1000+ Apps
HubSpot
2 min. read

How to set up HubSpot Integrations with 1000+ Apps

Learn how to integrate HubSpot with 1000+ apps through Albato. Step-by-step guide to HubSpot integration and connecting your favorite business tools.

Paragon vs Tray vs Albato Embedded: Best Embedded iPaaS for SaaS
12 min. read

Paragon vs Tray vs Albato Embedded: Best Embedded iPaaS for SaaS

Compare Paragon, Tray.io, and Albato Embedded across UX, white-labeling, connectors, pricing, and best-fit use cases. Learn which embedded iPaaS is the right choice for your SaaS product.

Saying Goodbye to 2025: Albato End of Year Edition
3 min. read

Saying Goodbye to 2025: Albato End of Year Edition

Let’s take a look back at what’s been achieved and see what’s in store for the year ahead.

Workato vs Cyclr vs Albato Embedded – iPaaS Comparison
10 min. read

Workato vs Cyclr vs Albato Embedded – iPaaS Comparison

Compare Workato, Cyclr, and Albato Embedded iPaaS solutions for SaaS companies. Learn which platform offers the best UX, white-label integration experience, connector breadth, pricing model, and support for your SaaS use case.

Workato vs MuleSoft vs Albato Embedded: Which Integration Platform Fits Your SaaS?
8 min. read

Workato vs MuleSoft vs Albato Embedded: Which Integration Platform Fits Your SaaS?

Compare Workato, MuleSoft, and Albato Embedded across features, UX, embedded support, pricing, and best use cases. A practical guide for SaaS founders evaluating integration platforms.

How SaaS Businesses Improve Retention Using AI-Powered Email Marketing
5 min. read

How SaaS Businesses Improve Retention Using AI-Powered Email Marketing

Learn how SaaS brands can use AI-powered email automation to increase retention, reduce churn, and drive engagement with experts from Albato and UniOne.

Paragon Vs. Prismatic Vs. Albato Embedded: Which to Choose
5 min. read

Paragon Vs. Prismatic Vs. Albato Embedded: Which to Choose

Compare Paragon, Prismatic, and Albato Embedded—three leading embedded iPaaS platforms for SaaS. See how they differ in features, UX, pricing, and scalability.

AI for Customer Service Automation with Albato
5 min. read

AI for Customer Service Automation with Albato

Learn how AI agents and Albato automate customer service workflows—from ticket triage to WhatsApp replies and CRM updates.

Prismatic Vs. n8n Vs. Albato Embedded: Full Comparison
4 min. read

Prismatic Vs. n8n Vs. Albato Embedded: Full Comparison

Compare Prismatic vs n8n Embedded vs Albato Embedded—three leading embedded iPaaS solutions—for features, pricing, UX, developer experience, and scalability.

How to Use Python Code in Albato
4 min. read

How to Use Python Code in Albato

A new Python code tool allows you to run your own custom code.

How to Connect Membrain CRM to Albato
3 min. read

How to Connect Membrain CRM to Albato

Connect Membrain CRM with Albato to integrate it with and 1000+ other apps, including AI tools like Grok and Claude.