I have an outlook addin which I have written:

<C#>


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Graph;
using Outlook = Microsoft.Office.Interop.Outlook;
using Microsoft.Graph.Models;
using Azure.Identity;
using System.Security.Policy;
using Microsoft.Office.Tools;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ListView;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
using System.Globalization;

namespace Outage_Helper
{
    public partial class OutageCalendarPane : UserControl
    {
        private const string ClientId = "[YOUR_APP_REGISTRATION_CLIENT_ID]";
        private const string TenantId = "[YOUR_TENANT_ID]";
        private const string UtilityAccountUsername = "outage-helper@ct4.com";
        private const string UtilityAccountPassword = "[PASSWORD]";
        private GraphServiceClient _graphClient;
        private Outlook.MailItem _selectedMailItem;

        public OutageCalendarPane(Outlook.MailItem selectedMailItem)
        {
            InitializeComponent();
            _selectedMailItem = selectedMailItem;
            emailContentTextBox.Text = selectedMailItem.Body;
            AuthenticateAndInitializeGraphClient().ConfigureAwait(false);
        }

        private async Task AuthenticateAndInitializeGraphClient()
        {
            var credential = new UsernamePasswordCredential(UtilityAccountUsername, UtilityAccountPassword, ClientId, TenantId);

            _graphClient = new GraphServiceClient(credential);
        }

        private async void submitBtn_Click(object sender, EventArgs e)
        {
            if (_graphClient != null)
            {
                string calendarId = "[OUTAGE-CALENDAR - ID]";
                var newEvent = new Event
                {
                    Subject = eventNameTextBox.Text,
                    Start = new DateTimeTimeZone { DateTime = startDateTimePicker.Value.ToString("o"), TimeZone = "UTC" },
                    End = new DateTimeTimeZone { DateTime = endDateTimePicker.Value.ToString("o"), TimeZone = "UTC" },
                    Body = new ItemBody
                    {
                        ContentType = BodyType.Text,
                        Content = $"Username: { _selectedMailItem.Sender.Name}\nNote: { eventNoteTextBox.Text}\n\nEmail Text: { emailContentTextBox.Text}"
                    }
        };

        await _graphClient.Users[UtilityAccountUsername].Calendars[calendarId].Events.PostAsync(newEvent).ConfigureAwait(false);
                MessageBox.Show("Outage event has been added to the shared calendar.");
                ((Form)this.TopLevelControl).Close();
            }
            else
            {
                MessageBox.Show("Error: Unable to add the outage event. Please try again.");
    }
}

private void cancelBtn_Click(object sender, EventArgs e)
{
    ((Form)this.TopLevelControl).Close();
}
    }
}


</C#>

In detail, please take me through how to register this application in Azure Active Directory and how to find the missing variables (YOUR_APP_REGISTRATION_ID, YOUR_TENANT_ID, PASSWORD, and OUTAGE-CALENDAR-ID). Additionally, please note any additional tasks which may need to be performed within the Azure tenancy or code necessary to allow it to run.