Visual Studio Team Services Integration

Authentication

Supported authentication methods

Personal token

To proceed with this authentication type you need to obtain API token from VSTS. Steps below will instruct you how to do that.

Sign in to either your VSTS account (https://{youraccount}.visualstudio.com) or your Team Foundation Server web portal (https://{server}:8080/tfs/).

From your home page, open your profile. Go to your security details.

Profile security

Create a personal access token.

Personal token

Name your token. Select a lifespan for your token. If you're using Team Services, and you have more than one account, you can also select the Team Services account where you want to use the token.

Now you need to specify permissions that token will grant. Bugsee requires Project and team (read) and Work items (read and write) scopes to function properly.

Scopes

When you're done, make sure to copy the token. You'll use this token as your password.

Copy token

Now, when you've obtained a token, lets configure integration in Bugsee.

Provide valid host (URL to your VSTS) and paste generated token.

Select personal token

Configuration

There are no any specific configuration steps for Visual Studio Team Services. Refer to configuration section for description about generic steps.

Custom recipes

Bugsee can accommodate all the customizations required for your VSTS with the help of custom recipes. This section provides a few examples of using custom recipes specifically with JIRA. For basic introduction, refer to custom recipe documentation.

Setting tags field

By default Bugsee creates and updates VSTS bugs with Bugsee issue labels as VSTS tags. But labels list can be overridden inside your custom recipe. For example you can add some new label (VSTS tag) to existing ones:

function create(context) {
    // ....

    return {
        // ...
        labels: [...issue.labels, "My awesome tag"]
    };
}

function update(context, changes) {
    const result = {};
    // ...

    if (changes.labels) {
        result.labels = [...changes.labels.to, "My awesome tag"];
    }

    return {
        issue: {
            custom: {}
        },
        changes: result
    };
}

Setting custom fields

Custom fields for VSTS must be set as an array of objects ({ op, path, value }) inside the "fields" attribute, like shown below:

function create(context) {
    // ....

    return {
        // ...
        custom: {
            fields: [
                {
                    op: 'add',
                    path: '/fields/System.Reason',
                    value: 'New task'
                }
            ]
        }
    };
}