Skip to content

GitLab Sync for Exact Online

Book the time your team logs in GitLab as hours in Exact Online: one draft line per person, issue and day. Issues become WBS lines, and the approval status of the hours comes back in GitLab as labels.

Get started Link a project

Where it lives

GitLab Sync is an app of the Exact Gateway portal at https://apps.mvdw-software.com/exact/gitlab-sync/. Your account, organization, subscription and the connection to Exact Online live in the portal; this app syncs GitLab with it.

Why

Your developers log their time in GitLab, because that is where the work is. Your administration and the project's profitability live in Exact Online. Without a link, someone re-typing every hour by hand, and the booked hours drift from what was actually worked: the wrong person, the wrong project, or a day nobody logged.

GitLab Sync links a GitLab project to an Exact project and keeps them in step:

  • every time log in GitLab (issue, merge request or the project itself) becomes a draft hour line in Exact, one line per person, issue and day, already on the right project and hour type;
  • issues and milestones become WBS activities (and deliverables), so the work breakdown follows the GitLab structure;
  • when someone submits, approves or rejects the hours in Exact, the label goes back to GitLab (exact::submitted, exact::approved, exact::rejected), and a rejection leaves an internal note;
  • people are matched automatically on their e-mail, so a time log booked by @jdoe lands on Jane's employee record without anyone doing anything.

Developers keep working in GitLab; administration approves the draft lines in Exact as usual.

A linked project, syncing:

The projects page: two linked projects with their status, last sync and a Sync now button

How it fits together

flowchart TB
    subgraph gl ["GitLab (gitlab.com or self-hosted)"]
        T["time logs on issues, merge requests, projects"]
        I["issues and milestones"]
        L["exact::submitted / approved / rejected labels"]
    end
    subgraph app ["GitLab Sync"]
        S["sync engine: every 15 minutes, per linked project"]
        M["people: GitLab user → Exact employee"]
    end
    subgraph exact ["Exact Online (via the portal's connection)"]
        H["draft hour lines, one per person, issue and day"]
        W["WBS activities and deliverables"]
        P["the linked Exact project"]
    end

    T -- "read" --> S
    I -- "read" --> S
    S -- "create / update draft lines" --> H
    S -- "create WBS lines" --> W
    P -- "existing, or created from GitLab" --> S
    H -- "status: submitted, approved, rejected" --> L
    M -- "match on e-mail" --> S

The organization signs in once in the portal, connects its Exact Online administration there (once per app), and adds a GitLab access token in GitLab Sync. From then on the sync runs on a schedule; a webhook makes it react within seconds when your GitLab can reach the internet.

What this documentation covers

You want to… Read
subscribe, connect Exact Online and add a GitLab token Getting started
link a GitLab project to an Exact project, step by step Link a project
understand what is synced, when, and what happens on conflicts How the sync works
fix a failing token, a failing project or hours that do not appear Troubleshooting