Ticketing connectors

Vaks PM · Integration guide · External tickets · July 2026

What you will end up with. People logging time in their Vaks PM timesheet against tickets that live in an external tool — ServiceNow today — found by searching from within the timesheet, without those tickets ever cluttering your projects.

What it does — and what it does not

This connector has one job: let someone record time against a ticket that belongs to another system. It is deliberately narrow, and the boundaries are the point.

Prerequisites

SideWhat you need
ServiceNowA service account with read access, via the Table API, to the tables you want searchable. Read-only is enough — the connector never writes.
Vaks PMorg:manage to configure the connector. Anyone with the timesheet permission can then log time against tickets.
ReachabilityThe ServiceNow instance URL must be HTTPS and publicly resolvable — an on-premises ServiceNow behind a private address is refused by the anti-SSRF check.

Step 1 — Connect ServiceNow

Open Admin → Integrations → External connectors, press Add a connector, and choose ServiceNow. The field labels below are shown in French in the current release:

FieldShown asWhat to put
Instance URLURL de l'instanceYour ServiceNow instance, e.g. https://acme.service-now.com. HTTPS only.
Service account userUtilisateur (compte de service)The read-only service account, e.g. svc_timesheet.
PasswordMot de passeIts password. Encrypted at rest, never shown again.
Tables to searchTables à rechercherWhich tables to query: Incidents, Catalog tasks, Change tasks, Problems, or All tasks. Up to five are queried per search.
Base filterFiltre de base (optionnel)An optional ServiceNow query to constrain results, e.g. active=true.

Also set the Display name shown to users, and leave Enabled for step 2.

Step 2 — Test, then enable

Press Test. A green result means the credentials are accepted and the Table API is reachable.

Optional: set the secret expiry date. The connector form has an optional Secret expiry date field. If the service-account credential rotates on a schedule, fill it in and Vaks PM emails your admins 14 days before it lapses — so the connector does not fail silently. Leave it blank if the credential does not expire.
A passing test does not prove searchability. The test probes a system table, so a service account with no access to your business tables can still pass the test and then return nothing in search. Confirm the account can actually read the tables you selected — the real proof is a search returning results in step 3.

A connector cannot be enabled until every required field, including the stored password, is present. Once enabled, it becomes available to users in the timesheet.

Step 3 — Log time on a ticket

In the timesheet, users open Log time on a ticket. Two ways to reach a ticket:

Either way, the ticket lands in the person's timesheet with its external key shown and a link back out to the original. From then on it behaves like any task you can log time against — and stays invisible everywhere else.

Live search fails softly. If the connector has a problem, search quietly falls back to locally-known tickets rather than showing an error. So if users only ever see tickets already in Vaks PM, do not wait for an error toast — check the connector's Last test failed badge in the admin section.

Pushing tickets by API

A machine can add tickets directly — useful to pre-load a person's timesheet from an external workflow. Post to the external-tasks endpoint with an organization key scoped to time logging:

POST /api/v1/external-tasks
Authorization: Bearer vaks_org_<your-key>
Content-Type: application/json

{
  "source": "servicenow",
  "key": "INC0042",
  "title": "Payroll export failing",
  "url": "https://acme.service-now.com/nav_to.do?uri=incident.do?sys_id=…",
  "assigneeEmail": "person@example.com"
}

source and key are required; the rest is optional. The call is idempotent on the (source, key) pair — re-posting updates the title and link and re-assigns rather than duplicating. assigneeEmail, which must match an active user, puts the ticket in that person's timesheet; omit it and the caller is assigned. The container project for each tool-and-client combination is created automatically the first time.

Mint the key in Admin → Integrations → API keys with the time-logging scope. There is no ticketing-specific scope — a plain organization key with that permission is what the endpoint expects.

Troubleshooting

ServiceNow test errors come back in French; they are reproduced verbatim.

SymptomCause & fix
Authentification refusée (401) — identifiants invalides.Wrong user or password. Re-check the service-account credentials.
Accès refusé (403) — droits Table API insuffisants.The account lacks Table API rights. Grant it read access.
Délai dépassé.ServiceNow did not answer within 8 seconds. Usually transient; check the instance is reachable.
Test passes, search returns nothingThe service account can reach the system table the test probes but not your business tables. Grant read access to the tables you selected.
Users only see locally-known ticketsLive search failed silently. Check the connector's Last test failed badge and re-test.
Cannot enable the connectorA required field or the password is missing. Complete them; enabling is blocked until all are present.
On-premises ServiceNow will not connectA private instance URL is refused by the anti-SSRF check. Only a publicly resolvable HTTPS instance is accepted.

Related: all integrations · the ticket time flows into the billing export described in the finance documentation.