Data stores - OfficeDev/microsoft-teams-apps-groupconnect GitHub Wiki

The app uses the following data stores:

  1. Azure Storage Account
  2. Application Insights

All these resources are created in your Azure subscription. None are hosted directly by Microsoft.

Azure Table Storage

Teams Data

This table stores the corresponding team information for a employee group which is registered in the app.

Value Description
PartitionKey Constant value as 'Team Data'.
RowKey The team Id in teams.
Timestamp The latest DateTime record.
Name The team's name.
ServiceUrl The service URL that can be used to fetch the team's roster.
TeamId The team Id in teams.
TenantId The teams's tenant identifier.

Users Collection

This table stores all the users information who have installed the personal app.

Value Description
PartitionKey Constant value as 'User Data'.
RowKey The user's azure active directory object identifier.
Timestamp The latest DateTime record.
AadId The user's azure active directory object identifier.
ConversationId The conversation identifier for the chat between the user and the bot.
ServiceUrl The user's service URL that can be used to notify the user.
TenantId The user's tenant identifier.
UserId The user's Id in teams.

AppConfig Collection

The App Config Collection stores the user app Id, service URL and QnA Maker knowledgebase id.

Value Description
PartitionKey Constant value as 'Settings'.
RowKey Constants as "ServiceUrl" or "UserAppId". "ServiceUrl" - The value stored is service URL. "UserAppId" - The value stored is user app Id. “knowledgeBaseId” – The FAQ knowledge base Id.
Timestamp The latest DateTime record.
Value Value stored based on row key

Notification Data

The Notification Collection stores the notification data.

Value Description
PartitionKey Constants as "DraftNotifications" or "SendingNotifications" or "SentNotifications" or "GlobalSendingNotificationData". "DraftNotifications" - The notification is stored in this partition when it is in draft state. "SendingNotifications" - This partition stores the notification entry that is used for sending the notification and serialized JSON content. "SentNotifications" - The notification is moved to this partition when it is sent to the recipient. "GlobalSendingNotificationData" - This partition stores the Retry Delay time when the system is being throttled.
RowKey The notification unique identifier.
Timestamp The latest DateTime record.
Id The notification identifier.
Title The title text of notification's content.
ImageLink The image link of notification's content.
Summary The summary text of notification's content.
Author The author text of the notification's content.
ButtonLink The button link of the notification's content.
ButtonTitle The button title of the notification's content.
TotalMessageCount The total number of messages to send.
Succeeded The number of recipients who have received the notification succesfully.
Failed The number of recipients who failed to receive the notification succesfully.
AllUsers Indicating if the notification should be sent to all known users.
TeamsInString The list of team identifiers.
RostersInString The list of roster identifiers.
GroupsInString The list of group identifiers.
IsCompleted [Deprecated] Indicating if the notification sending process is completed.
IsDraft Indicating if the notifcation is a draft.
IsPreparingToSend [Deprecated] Indicating if the notification is in the "preparing to send" state.
Unknown The number of recipients who have an unknown status.
Content The content of the notification in serialized JSON form.
NotificationId The notification identifier.
RecipientNotFound The number of not found recipients.
CreatedBy The user that created the notification.
CreatedDate The DateTime when notification was created.
SendingStartDate The DateTime when the notification sending was started.
SentDate The DateTime when the notification's sending was completed.
WarningMessage The warning message for the notification if there was a warning given when preparing and sending notification.
ErrorMessage The error message for the notification if there was a failure in preparing and sending notification.
Status The notification status.

SentNotification Data

The SentNotification collection stores the sent notification data.

Value Description
PartitionKey The notification unique identifier.
RowKey The user's identifier.
Timestamp The latest DateTime record.
ConversationId The conversation identifier for the recipient.
IsStatusCodeFromCreateConversation Indicating if the status code is from the create conversation call.
NumberOfFunctionAttemptsToSend The number of times an Azure Function instance attempted to send the notification to the recipient.
RecipientId The recipients unique identifier.
RecipientType Indicating which type of recipient the notification was sent.
SentDate The DateTime when the notification's sending was completed.
ServiceUrl The service URL of the recipient.
StatusCode The status code for the notification received by the bot.
TenantId The tenant identifier of the recipient.
TotalNumberOfSendThrottles The total number of throttle responses the bot received when trying to send the notification to the recipient.
UserId The user identifier of the recipient.

Export Data

The Export Collection stores the export data.

Value Description
PartitionKey The user's azure active directory identifier.
RowKey The notification identifier.
Timestamp The latest DateTime record.
SendDate The export send date.
Status The file export status.

Employee Resource Group

This table stores the information for the Employee Resource Groups created by end-users.

Value Description
Partition Key (Group) This represents the partition key of the azure storage table - Type of the group either External or Teams.
RowKey Represents the unique group id of each row.
Timestamp The latest DateTime record.
GroupId Same as Row key.
GroupName Represents the employee resource group name or team name.
GroupDescription Represents the employee resource group description or team description.
GroupType Represents group type enum i.e. Teams=0 and Others=1.
GroupLink Represents the external link or team link.
ImageLink Represents the image link.
TeamId Represents the unique Microsoft Team id (19:xxx)
Tags List of tags in JSON format.
Location Represents the location of the user.
IncludeInSearchResults True if search wants to be enabled not false. Only search enabled groups are available to all end users.
ApprovalStatus Admin team member can Approve/Reject any ERG request to make it searchable. InProgress=0, Approve =1, Rejected=2.
MatchingFrequency Pair up matching frequency for each team. It can be updated/modified by Admin team or respective team owners Weekly = 0, Monthly = 1.
IsProfileMatchingEnabled Represent whether pair-up profile matching is enabled or not for a given Team.
CreatedOn Contains the date time of Group creation.
CreatedByObjectId The AAD Object Id of user who created group
UpdatedOn Last date time on which group was updated.
UpdatedByObjectId The AAD Object Id of user who recently updated the group details.

TeamUserPairUpMapping data

The table stores all the pair up mapping between users and Teams.

Value Description
PartitionKey User object identifier.
RowKey TeamID is the unique identifier related to the specific team of which the user is a part of.
Timestamp The latest DateTime record.
TeamId TeamID is the unique identifier related to the specific team of which the user is a part of (same as row key).
IsPaused Flag set by the user to be picked for next pair up matching for that team.
UserId This is the unique identifier of a user (same as partition key).

Feedback

The table stores the feedback provided by end users

Value Description
PartitionKey User object identifier
RowKey Unique GUID generated for each feedback
Timestamp The latest DateTime record.
Feedback Feedback text provided by user up to 500 characters
FeedbackId Unique GUID generated for each feedback (same as row key)
SubmittedOn TimeStamp on which record is saved