Currently CC allows authors to select from four audience options, including posting to the general channel of a team, sending individual messages to all users, to members of a team or to members of specific M365, security and/or distribution groups.

Recently I got a very large customer requesting the ability to upload a CSV file with a list of users to send notifications. That allows to create a custom audience for notifications and doesn’t require any admin involvement to create and populate groups on Azure Active Directory.

An additional change recently incorporated was the merge to the 4.1.5 official code. So the Company Communicator variant you see at already is updated with the latest official code.

Uploading CSV files to create the audience

You can open the CC authoring console and create the notification as you (or content authors) are used to do. When selecting the audience there will be a new option to send chat to users listed in a valid CSV file.

You can then click on the upload button and select a CSV file. A valid CSV file is a list of user principal names (UPNs) separated by commas (,). Please be aware that when creating a list of UPNs in Excel with one user per line and saving as a CSV, you don’t get a valid CSV file. You need to transpose the list to multiple columns and then saving the file to get a valid CSV.

The interface will make a basic syntax analysis to ensure the CSV file is valid before let you use it. If something is wrong, you will see an error message and the authoring interface won’t let you move forward.

After uploading the CSV file correctly you will have the chance to save or schedule the message depending on the other options you selected.

When you send the draft message you will get basic information showing that the message will be sent to an audience formed by users listed on the CSV file.

After sending the message and have all messages delivered, you can click on the message that should be part of the sent messages list and you will get additional statistics and a message showing more info about the audience.

When sending the message, the system does a deep analysis on each UPN listed on the file. That is to ensure users are valid for the specific tenant where Company Communicator is installed. All users considered invalid will be ignored by CC and only the valid ones will receive messages. Reports can be used to compare your CSV file with the list of users that got messages delivered.


First of all, make sure you have at least the 4.1 version deployed (remember that this update will bring your deployment to 4.1.5), then follow the steps below to update the App Service and the three Azure Functions used by Company Communicator.

  1. Open your Azure Portal and authenticate using admin credentials.
  2. Open the resource group where you installed Company Communicator.
  3. Select the App Service being used by CC and click on Deployment Center, under Deployment.
  4. In Settings, click Disconnect under External Git.
  1. Click OK to disconnect your deployment.
  2. Under Source, select External Git.
  1. In Repository, type
  2. In Branch, type master
  3. Leave the Repository Type as Public, and click Save.
  4. Click Sync.
  5. The whole update process will take a few minutes. Make sure you see Success (Active) on the logs tab.
  6. Now repeat that for each one of the Azure Functions you have on the same resource group. Those are the resources listed as:
    • <ccname>-data-function
    • <ccname>-function
    • <ccname>-prep-function

Final Notes

Please be aware that this is side project where myself and others dedicate time to bring to life super requested Company Communicator features. We are not officially maintaining neither supporting Company Communicator. That is the reason you see a user repo with the improvements.

We want to informally dedicate time and create a fast track to new requested features in the spirit of open source.

Enjoy this new feature!

Disclaimer – The information contained in this blog post doesn’t represent the official Microsoft guidance or best practices. It is just the view of the author on current alternatives, implementations and workarounds for common issues and/or business needs. Please refer to official Microsoft documentation and evaluate carefully any steps, code or procedures documented herein. The author doesn’t offer any warranty. Use this information at your own risk.