Codeunit "Outlook Calendar UTCAP"
Gère les événements des calendriers Outlook (Exchange Online) via Microsoft Graph : création, mise à jour, annulation, suppression, lecture et invitation de participants.
Remarks
Prérequis : une inscription d'application dans le tenant Entra ID visé, avec consentement administrateur, pour laquelle l'autorisation d'API d'application suivante est accordée :
- Calendars.ReadWrite Cette autorisation donne accès à toutes les boîtes aux lettres du tenant : restreindre l'application aux seules boîtes nécessaires avec une stratégie d'accès (RBAC for Applications dans Exchange Online, ou New-ApplicationAccessPolicy).
Comportement :
- Un événement est créé dans le calendrier par défaut de la boîte aux lettres indiquée, qui en est l'organisateur. Les participants reçoivent l'invitation, puis les mises à jour et annulations, automatiquement.
- Les méthodes de mise à jour, lecture et suppression renvoient false si l'événement n'existe plus côté Outlook (supprimé par l'utilisateur) : l'appelant peut alors le recréer ou oublier son identifiant. Les autres échecs lèvent une erreur ; les appels limités par Graph (HTTP 429/503) sont réessayés automatiquement.
Examples
Planifier une intervention et inviter le client
``` AL
var
OutlookCalendar: Codeunit "Outlook Calendar UTCAP";
OutlookEvent: Codeunit "Outlook Event UTCAP";
begin
OutlookCalendar.Initialize(Setup."Client Id", Setup.GetClientSecret(), Setup."Tenant Id");
OutlookEvent.SetSubject('Intervention ' + JobTask."Job No.");
OutlookEvent.SetBody('<p>Détail de l''intervention</p>', true);
OutlookEvent.SetPeriod(StartingDateTime, EndingDateTime);
OutlookEvent.SetLocation(Customer.City);
OutlookEvent.SetShowAs(Enum::"Outlook Event Show As UTCAP"::Busy);
OutlookEvent.AddAttendee(Customer."E-Mail", Customer.Name, Enum::"Outlook Attendee Type UTCAP"::Required);
OutlookEvent.SetTransactionId(Format(Activity.SystemId));
OutlookCalendar.CreateEvent(Resource."E-Mail", OutlookEvent);
Activity."Outlook Event Id" := OutlookEvent.GetId();
Activity.Modify(true);
end;
```
Déplacer l'intervention, en la recréant si elle a été supprimée dans Outlook
``` AL
OutlookEvent.SetId(Activity."Outlook Event Id");
OutlookEvent.SetPeriod(NewStartingDateTime, NewEndingDateTime);
if not OutlookCalendar.UpdateEvent(Resource."E-Mail", OutlookEvent) then
... // recréer l'événement complet avec CreateEvent
```
Properties
| Name | Value |
|---|---|
| Access | Public |
Methods
Initialize
Initialise le calendrier avec les identifiants de l'inscription d'application.
procedure Initialize(ClientId: Text; ClientSecret: SecretText; TenantId: Text)
Parameters
| Name | Type | Description |
|---|---|---|
| ClientId | Text |
Identifiant de l'inscription d'application. |
| ClientSecret | SecretText |
Secret de l'inscription d'application. |
| TenantId | Text |
Identifiant ou domaine du tenant. |
CreateEvent
Crée l'événement dans le calendrier de la boîte aux lettres, et envoie les invitations aux participants. En retour, l'événement est rechargé tel que créé : son identifiant est disponible via GetId.
procedure CreateEvent(Mailbox: Text; var OutlookEvent: Codeunit "Outlook Event UTCAP")
Parameters
| Name | Type | Description |
|---|---|---|
| Mailbox | Text |
Adresse e-mail (UPN) de la boîte aux lettres organisatrice. |
| OutlookEvent | Codeunit CapVision.Core.Graph."Outlook Event UTCAP" |
Événement à créer. |
UpdateEvent
Met à jour l'événement désigné par son identifiant (SetId ou lecture préalable), en n'envoyant que les propriétés modifiées. Les participants sont notifiés des changements. En retour, l'événement est rechargé tel que mis à jour.
procedure UpdateEvent(Mailbox: Text; var OutlookEvent: Codeunit "Outlook Event UTCAP"): Boolean
Parameters
| Name | Type | Description |
|---|---|---|
| Mailbox | Text |
Adresse e-mail (UPN) de la boîte aux lettres organisatrice. |
| OutlookEvent | Codeunit CapVision.Core.Graph."Outlook Event UTCAP" |
Événement à mettre à jour. |
Returns
| Type | Description |
|---|---|
| Boolean |
false si l'événement n'existe plus côté Outlook. |
DeleteEvent
Supprime l'événement du calendrier.
procedure DeleteEvent(Mailbox: Text; EventId: Text): Boolean
Parameters
| Name | Type | Description |
|---|---|---|
| Mailbox | Text |
Adresse e-mail (UPN) de la boîte aux lettres. |
| EventId | Text |
Identifiant de l'événement. |
Returns
| Type | Description |
|---|---|
| Boolean |
false si l'événement n'existait déjà plus (l'état visé est tout de même atteint). |
CancelEvent
Annule une réunion et envoie aux participants un message d'annulation. Réservé à l'organisateur ;
pour un simple rendez-vous sans participant, utiliser
procedure CancelEvent(Mailbox: Text; EventId: Text; Comment: Text): Boolean
Parameters
| Name | Type | Description |
|---|---|---|
| Mailbox | Text |
Adresse e-mail (UPN) de la boîte aux lettres organisatrice. |
| EventId | Text |
Identifiant de l'événement. |
| Comment | Text |
Message joint à l'annulation. |
Returns
| Type | Description |
|---|---|
| Boolean |
false si l'événement n'existait déjà plus. |
GetEvent
Lit un événement.
procedure GetEvent(Mailbox: Text; EventId: Text; var OutlookEvent: Codeunit "Outlook Event UTCAP"): Boolean
Parameters
| Name | Type | Description |
|---|---|---|
| Mailbox | Text |
Adresse e-mail (UPN) de la boîte aux lettres. |
| EventId | Text |
Identifiant de l'événement. |
| OutlookEvent | Codeunit CapVision.Core.Graph."Outlook Event UTCAP" |
Événement lu. |
Returns
| Type | Description |
|---|---|
| Boolean |
false si l'événement n'existe pas. |
GetEvents
Renvoie les événements du calendrier qui chevauchent une période, occurrences des événements récurrents comprises, triés par date de début. Charger chaque élément avec "Outlook Event UTCAP".LoadFromJson pour le lire.
procedure GetEvents(Mailbox: Text; FromDateTime: DateTime; ToDateTime: DateTime; var Events: JsonArray)
Parameters
| Name | Type | Description |
|---|---|---|
| Mailbox | Text |
Adresse e-mail (UPN) de la boîte aux lettres. |
| FromDateTime | DateTime |
Début de la période. |
| ToDateTime | DateTime |
Fin de la période. |
| Events | JsonArray |
Objets event Graph. |
AddAttendee
Invite un participant obligatoire à un événement existant, sans écraser les autres participants.
procedure AddAttendee(Mailbox: Text; EventId: Text; Email: Text): Boolean
Parameters
| Name | Type | Description |
|---|---|---|
| Mailbox | Text |
Adresse e-mail (UPN) de la boîte aux lettres organisatrice. |
| EventId | Text |
Identifiant de l'événement. |
| Text |
Adresse e-mail du participant. |
Returns
| Type | Description |
|---|---|
| Boolean |
false si l'événement n'existe plus. Un participant déjà invité n'est pas une erreur. |
AddAttendee
Invite un participant à un événement existant, sans écraser les autres participants.
procedure AddAttendee(Mailbox: Text; EventId: Text; Email: Text; DisplayName: Text; AttendeeType: Enum "Outlook Attendee Type UTCAP"): Boolean
Parameters
| Name | Type | Description |
|---|---|---|
| Mailbox | Text |
Adresse e-mail (UPN) de la boîte aux lettres organisatrice. |
| EventId | Text |
Identifiant de l'événement. |
| Text |
Adresse e-mail du participant (ou de la boîte aux lettres d'une ressource). |
|
| DisplayName | Text |
Nom affiché. Vide : résolu par Outlook. |
| AttendeeType | Enum CapVision.Core.Graph."Outlook Attendee Type UTCAP" |
Type de participant. |
Returns
| Type | Description |
|---|---|
| Boolean |
false si l'événement n'existe plus. Un participant déjà invité n'est pas une erreur. |
RemoveAttendee
Retire un participant d'un événement existant, sans modifier les autres participants. Il reçoit une annulation.
procedure RemoveAttendee(Mailbox: Text; EventId: Text; Email: Text): Boolean
Parameters
| Name | Type | Description |
|---|---|---|
| Mailbox | Text |
Adresse e-mail (UPN) de la boîte aux lettres organisatrice. |
| EventId | Text |
Identifiant de l'événement. |
| Text |
Adresse e-mail du participant. |
Returns
| Type | Description |
|---|---|
| Boolean |
false si l'événement n'existe plus. Un participant absent n'est pas une erreur. |