private static async Task HandleConversationUpdate(Activity message)
        {
            ConnectorClient connector   = new ConnectorClient(new Uri(message.ServiceUrl));
            var             channelData = message.GetChannelData <TeamsChannelData>();

            // Ensure that we have an entry for this tenant in the database
            var tenant = await Common.CheckAndAddTenantDetails(channelData.Tenant.Id);

            await RootDialog.CheckAndAddUserDetails(message, channelData);

            // Treat 1:1 add/remove events as if they were add/remove of a team member
            if (channelData.EventType == null)
            {
                if (message.MembersAdded != null)
                {
                    channelData.EventType = "teamMemberAdded";
                }
                if (message.MembersRemoved != null)
                {
                    channelData.EventType = "teamMemberRemoved";
                }
            }

            switch (channelData.EventType)
            {
            case "teamMemberAdded":
                // Team member was added (user or bot)
                if (message.MembersAdded.Any(m => m.Id.Contains(message.Recipient.Id)))
                {
                    // Bot was added to a team: send welcome message
                    message.Text = Constants.ShowWelcomeScreen;
                    await Conversation.SendAsync(message, () => new RootDialog());

                    await AddTeamDetails(message, channelData, tenant);
                }
                else
                {
                    // Member was added to a team: update the team member count
                    await UpdateTeamCount(message, channelData, tenant);
                }
                break;

            case "teamMemberRemoved":
                // Add team & channel details
                if (message.MembersRemoved.Any(m => m.Id.Contains(message.Recipient.Id)))
                {
                    // Bot was removed from a team: remove entry for the team in the database
                    await RemoveTeamDetails(channelData, tenant);
                }
                else
                {
                    // Member was removed from a team: update the team member  count
                    await UpdateTeamCount(message, channelData, tenant);
                }
                break;

            // Update the team and channel info in the database when the team is rename or when channel are added/removed/renamed
            case "teamRenamed":
                // Rename team & channel details
                await RenameTeam(channelData, tenant);

                break;

            case "channelCreated":
                await AddNewChannelDetails(channelData, tenant);

                break;

            case "channelRenamed":
                await RenameChannel(channelData, tenant);

                break;

            case "channelDeleted":
                await DeleteChannel(channelData, tenant);

                break;

            default:
                break;
            }
        }