Calendar integration

Resourcecloud meetings and absences in the calendars people already use — and, for Microsoft 365, real Outlook events with the Teams link.

Status of the Outlook parts. The Microsoft Graph integration (meetings, absences, busy time) was built against Microsoft's documented API and tested with a simulated Graph service. It has not yet been run against a live Microsoft 365 tenant. Try it in a test tenant before switching it on for everybody.

Who does what

There is no personal Microsoft login in Resourcecloud. Nobody connects their own Microsoft account, and Resourcecloud never asks for a user's Microsoft password. The Microsoft connection is made once, by an administrator, for the whole instance. Users only decide what applies to them.

Part 1 – UsersPart 2 – Administrators
WhoEvery Resourcecloud userWhoever may change Settings in Resourcecloud (RC Admin), plus the people who administer Entra ID and Exchange Online
Must doNothing. Everything here is optional.Register the app, restrict it, enter the credentials, switch the features on — once.
May do
  • Subscribe their calendar program to a private link (works without any Microsoft setup)
  • Keep their absences out of Outlook
  • Let their Outlook busy time reduce their capacity (off until they say yes)
  • Meetings into Outlook (Teams link, invitations, answers back)
  • Absences as "Absent"
  • Optional: busy time from Outlook into capacity
WhereProfile → Calendar subscriptionEntra admin center, Exchange Online PowerShell, Settings → External Services → Video conferencing
NeedsA calendar programA Microsoft 365 tenant and the rights to register apps and manage Exchange policies

Part 1 — For users Users

For: every Resourcecloud user.

You must: nothing. You may: use the options below. Some of them appear in your profile only after your administrator has switched the feature on — if you do not see an option, it is not available in your organisation.

Calendar subscription (a private link for any calendar program)

Show your meetings and absences in Outlook, Google Calendar or Apple Calendar. This needs no Microsoft account and no administrator: you get a secret link, your calendar program reads it about once an hour.

  1. Open your Profile and find Calendar subscription. Choose Create calendar link.
  2. Copy the link. It is shown once; Resourcecloud keeps only a hash of it. Anyone who has the link can read the calendar, so treat it like a password.
  3. Add it in your calendar program:
    • Outlook: Add calendar → Subscribe from web
    • Google Calendar: Other calendars → From URL
    • Apple Calendar: File → New Calendar Subscription

What it contains (you choose the parts in the profile):

  • Meetings you take part in and have not declined. A moved meeting shows at its new time, a cancelled one is marked cancelled. Recurring meetings continue without end.
  • Absences: your approved leave and sick days, all day, shown only as Absent — no reason, no type, no comment.
  • Calendar entries: your own events such as on-call duty or home office. Other people's events are not included.
  • Tasks with a time slot: your own open tasks that have a day and a time, such as a call booked for 16:00–17:00. A task that only stands for a meeting is not listed twice, and a finished task disappears from the calendar. On by default; the title of the task is what your calendar shows, so switch it off if titles contain things that should not sit on a phone.

New link makes the old one stop working at once (it answers 404); Switch off does the same without a replacement. Calendar programs refresh on their own schedule, mostly hourly; Google Calendar can take several hours.

Your absences in your Outlook calendar

If your administrator has switched on Absences as "Absent", your approved leave and sick days appear in your own Outlook calendar as an all-day "Absent" (out of office), so colleagues outside Resourcecloud can see that you are away.

Only the dates are written. No reason, no leave type, no comment — and a sick day is not marked as such anywhere: it is simply "Absent", like a holiday. Nobody is invited.

You may opt out: in the profile, switch off Show my absences in my Outlook calendar. Your events disappear within a minute or two and no new ones are written. Switch it on again and they come back.

Your busy time and your capacity (optional, off until you agree)

If your administrator has offered it, you can let Resourcecloud take the time you have already booked in Outlook off your available hours. Then the planner does not give you work for time that is gone anyway — a day you have blocked completely gets no tasks.

What it reads and keeps: only how many minutes per working day you are busy — one number per day. Never a title, a place, a participant or any other content of an appointment. Nothing at all is read unless you switch it on.

  • Nothing is counted twice. Time that Resourcecloud already knows about — your meetings, your tasks that have a time slot, your recurring meeting series — is left out, even if the same appointment also shows up in Outlook. Only time that exists only in Outlook reduces your capacity.
  • Nobody sees your numbers. They work in the background as the size of your day. A team's capacity view mentions the share only for groups of three or more people, so it can never be read as one person's calendar.
  • It is yours to switch off. In the profile, switch off Let my Outlook busy time reduce my capacity: what was read is deleted right away.
  • It looks at the next six weeks and refreshes about hourly.

Questions

QuestionAnswer
Do I have to connect my Microsoft account?No. Nobody does. The connection is made once for the whole organisation.
I do not see "Show my absences" / "busy time" in my profile.Your administrator has not switched that feature on.
My meetings appear in Outlook although I did nothing.That is the administrator's Outlook integration: Exchange sends you an invitation like for any meeting. Accept or decline there or in Resourcecloud — both are kept in step.
Can my manager see my Outlook busy time?No. The numbers are not shown to anyone; they only shrink your day in the planner. Capacity views show a share only for groups of three or more.
I lost my calendar link.Create a new one (the old one stops working) and subscribe again.

Part 2 — For administrators Admins

For: RC Admins (Settings in Resourcecloud) and the people who administer your Microsoft 365 tenant.

Rights you need: an Entra role that may register applications and grant admin consent (Application Administrator or Cloud Application Administrator, plus Global Administrator or Privileged Role Administrator for consent); an Exchange Online administrator for the application access policy; RC Admin in Resourcecloud.

What users must do: nothing. The subscription link (Part 1) needs no setup by you.

What there is to set up

Everything Microsoft-related uses one Entra app registration per customer, with the credentials you may already have entered for Teams meetings (Settings → Video conferencing → Microsoft Teams). Three independent switches build on each other:

Switch (Settings → Video conferencing)EffectDecision for you
1. Write meetings into Outlook calendarsMeetings become Outlook events with the Teams link; Exchange sends the invitations; answers come back.Participants of the next 90 days' meetings receive invitations when you switch it on.
2. Also write absences as "Absent" (needs 1)Approved leave and sick days become an all-day out-of-office event in the person's own calendar. Only dates. Each person can opt out.Visible to everybody who can see the person's calendar or free/busy time.
3. Busy time reduces capacity (needs 1; optional)For people who opt in, the busy minutes per working day are read and taken off their capacity.Works-council relevant: opt-in only, numbers only, see below.

There is no per-user Microsoft setup for you to do. Which people get Outlook events is decided by the access policy you create in step 2 (a group), not by a per-user setting.

1. Register the app in Entra ID

  1. Entra admin center → App registrations → New registration. Single tenant. No redirect URI.
  2. API permissions → Add → Microsoft Graph → Application permissions:
    PermissionUsed forNeeded by
    Calendars.ReadWriteCreate, move, cancel events; read the answers; read free/busyswitches 1, 2, 3
    OnlineMeetings.ReadWrite.AllTeams meetings (also created by the events)Teams as video provider
    OnlineMeetingArtifact.Read.AllTeams attendance reportTeams attendance
    Then Grant admin consent.
  3. Certificates & secrets → New client secret. Copy the value now.
  4. Note the Directory (tenant) ID and the Application (client) ID from the Overview page.

2. Restrict the app to the people who should have it

Calendars.ReadWrite as an application permission can reach every mailbox in the tenant unless you restrict it. Do this before you switch anything on.

In Exchange Online PowerShell, limit the app to a mail-enabled security group that contains the Resourcecloud users:

New-ApplicationAccessPolicy -AppId <client id> `
    -PolicyScopeGroupId [email protected] `
    -AccessRight RestrictAccess -Description "Resourcecloud calendar sync"

Test-ApplicationAccessPolicy -AppId <client id> -Identity [email protected]

The policy can take up to an hour to take effect. A person who is not in the group is handled like a person without a mailbox (meetings fall back to the shared account, absences and busy time simply do nothing for them).

For the Teams meetings created by the events, the app also needs the Teams application access policy you already set up for Teams meetings (New-CsApplicationAccessPolicy / Grant-CsApplicationAccessPolicy) to cover the organizers.

3. Switch it on in Resourcecloud

  1. Settings → External Services → Video conferencing: fill in tenant ID, client ID and client secret (the Microsoft Teams fields; they also appear when only the calendar switch is on).
  2. Optional: Organizer user id / UPN — a shared account used only as a fallback for meeting organizers who have no mailbox in the tenant.
  3. Turn on Write meetings into Outlook calendars and save. Turn on the others (absences, busy time) only when you want them.

Switching on 1 writes the meetings of the next 90 days too, and their participants receive an Outlook invitation for each. Choose a quiet moment or announce it.

How people are matched: the organizer's Entra object id when the account was provisioned by SCIM, otherwise the e-mail address in the Resourcecloud profile. Participants are matched by e-mail address. Guests without an account are not added as attendees — they keep the invitation with their personal link, so nobody is invited twice.

Meetings in Outlook (switch 1)

In ResourcecloudIn Outlook
Meeting created, or someone invitedEvent in the organizer's calendar; Exchange invites the participants. With Teams as video provider the event creates the Teams meeting and its link appears on the meeting a moment later.
Meeting movedThe same event moves; participants get the update.
Meeting cancelledThe event is cancelled; participants get the cancellation.
Someone declines in ResourcecloudThey are taken off the attendee list.
Accept or decline in OutlookShown in Resourcecloud within about ten minutes, with the same effects as answering there. An answer given later in Resourcecloud is not flipped back.
Event deleted in OutlookCreated again — Resourcecloud is the source of truth.
Meeting that already has a link (Zoom, Webex, ...)The event quotes that link; no second Teams meeting is made.
Meeting with nobody elseA plain event in the organizer's calendar, without Teams.
Recurring seriesEach occurrence is its own event, as far ahead as occurrences exist (about four weeks).

Absences as "Absent" (switch 2)

Approved leave and sick days (event type "Ill at home") are written into the person's own Outlook calendar as an all-day "Absent" (out of office). Outlook shows the person as unavailable to anyone who looks at their calendar or free/busy time.

Only the dates are written. No reason, no leave type, no comment, no event type — a sick day is not marked as such anywhere. There are no attendees, so nobody receives an invitation.

In ResourcecloudIn the person's Outlook calendar
Leave approved (also by a team lead, or approved automatically for roles that may self-approve)All-day "Absent" event.
Leave changes its periodThe same event moves.
Leave declined, cancelled or deletedThe event is removed. While a cancellation is still waiting for a decision, the leave counts as approved and the event stays.
Sick day entered, changed or deletedThe same, as a plain "Absent".
Other event types (on call, home office, ...)Nothing.
Leave handled through the REST API routes (/leave)The same event — the API goes through the same entry point as the pages.
  • The event is written into the person's own calendar only; there is no shared-account fallback. A person without a mailbox in the tenant (or without an e-mail address in Resourcecloud) simply has no event — not an error.
  • Each person can opt out in their profile (see Part 1). If you switch the feature off, events already written stay until they are removed in Outlook or the leave changes.

Busy time into capacity (switch 3, optional)

Appointments that exist only in Outlook reduce the available time in Resourcecloud: in the autoplanner (a day blocked all day gets no tasks) and in the capacity planner.

Works council / data protection. This is the one feature that reads from people's calendars. Agree it with your works council before you switch it on. It is built to be defensible:

PromiseHow it is kept
Explicit opt-in per personNothing is read for anyone who has not switched it on in their own profile. The default is off. Also off unless you switch the instance on.
Only a sum, never contentOnly Outlook's free/busy view is read (one character per half hour). What is stored is one number per person and working day; the table has no column that could hold a title, place or participant. Subjects that Microsoft may send along are never looked at.
No view for managers beyond the existing rulesThe numbers are not shown to anybody. They act as the size of a day in the planners. The capacity planner mentions the "booked in Outlook only" share for groups of three or more people only, and the capacity figure is always a team total.
Deleted on requestOpting out deletes the person's numbers at once. Switching the instance switch off deletes everything at the next scheduler run. Past days are deleted daily; a read older than three days is not used.

Nothing is counted twice

Resourcecloud already counts its own meetings, tasks and scheduled series as load, and several of them also appear in Outlook (through the meeting sync, or through the subscription link). A half hour in which Outlook is busy is therefore not counted when it overlaps anything Resourcecloud itself knows about that person on that day:

  • a meeting they take part in (any answer, any status),
  • a task assigned to them that has a time slot (this includes scheduled tasks and meeting tasks),
  • an occurrence of a meeting series they are in — also one that has not been created as a task yet.

A half hour that overlaps only partly is left out as a whole: the rule errs towards counting too little, never twice. Time outside the working hours (Settings → Meeting times) and weekends is ignored; tentative and "working elsewhere" entries do not count; a day on leave is already gone from the capacity and is not reduced twice.

Switching it on

  1. Switches 1 above must be on. No new permission is needed (Calendars.ReadWrite already covers free/busy).
  2. Settings → Video conferencing: turn on Let busy time from Outlook reduce capacity and save. The setting shows how many people have opted in and who fails.
  3. Tell your users it exists. Nothing happens until each of them opts in under Profile → Calendar subscription.

It looks six weeks ahead and refreshes each person about hourly. The autoplanner uses the figures for day-based planning; the capacity planner subtracts them from the team's free hours.

Operating and monitoring

  • It never blocks a user's action. Creating or moving a meeting, approving leave — none of it waits for Microsoft. The change is noted in a queue and the scheduler job Calendar sync (runs every minute, Settings → Scheduler) does the rest.
  • Retries: a failed write is tried again after 1 min, 5 min, 30 min, 2 h, 12 h, then every 6 h. After three failed attempts it is listed with the reason under Settings → Video conferencing (calendar sync). A safety sweep also finds anything that was changed without being queued.
  • Busy time failures are listed per person; the old numbers keep working for up to three days.
  • The shared account (Organizer user id / UPN) is used only for meetings whose organizer has no mailbox.

Troubleshooting

Message in the listUsually means
HTTP 401 / tokenWrong tenant, client id or secret, or the secret expired.
HTTP 403 ErrorAccessDeniedAdmin consent missing, or the application access policy does not include this person.
HTTP 404 ErrorInvalidUser for every meetingThe shared fallback account does not exist. For one person it just means they have no mailbox; their meetings use the fallback.
HTTP 429, 503, no answerMicrosoft is busy or unreachable. Nothing to do; it is retried.
Event exists but no Teams linkThe Teams application access policy does not cover the organizer.
Busy time: "No e-mail address in the profile"The person has no e-mail address in Resourcecloud; free/busy cannot be addressed.
A user does not see the opt-in optionsThe matching switch is off, or the Microsoft credentials are incomplete.

Switching things off

You switch offWhat happens to what was written
Busy timeAll cached numbers are deleted at the next scheduler run (within a minute or two). No more reading.
AbsencesEvents already in Outlook stay until removed there or until the leave changes.
Meetings in OutlookEvents already in Outlook stay; new and changed meetings are no longer written. Busy time stops and its numbers are deleted too.
A single person's subscription linkThe person does it in their profile (Part 1); the old link answers 404 at once.