{this.localize("Duration")}
{this.state.message.sendingDuration}
diff --git a/Source/CompanyCommunicator/Controllers/SentNotificationsController.cs b/Source/CompanyCommunicator/Controllers/SentNotificationsController.cs
index 94f19f2a0..1366a163c 100644
--- a/Source/CompanyCommunicator/Controllers/SentNotificationsController.cs
+++ b/Source/CompanyCommunicator/Controllers/SentNotificationsController.cs
@@ -180,6 +180,7 @@ public async Task
> GetSentNotificationsAsyn
TotalMessageCount = notificationEntity.TotalMessageCount,
SendingStartedDate = notificationEntity.SendingStartedDate,
Status = notificationEntity.GetStatus(),
+ CreatedBy = notificationEntity.CreatedBy,
};
result.Add(summary);
@@ -242,6 +243,7 @@ public async Task GetSentNotificationByIdAsync(string id)
WarningMessage = notificationEntity.WarningMessage,
CanDownload = userNotificationDownload == null,
SendingCompleted = notificationEntity.IsCompleted(),
+ CreatedBy = notificationEntity.CreatedBy,
};
// In case we have blob name instead of URL to public image.
diff --git a/Source/CompanyCommunicator/Microsoft.Teams.Apps.CompanyCommunicator.csproj b/Source/CompanyCommunicator/Microsoft.Teams.Apps.CompanyCommunicator.csproj
index ca87c75ce..fa0cc8899 100644
--- a/Source/CompanyCommunicator/Microsoft.Teams.Apps.CompanyCommunicator.csproj
+++ b/Source/CompanyCommunicator/Microsoft.Teams.Apps.CompanyCommunicator.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.1
+ net6.0
true
Latest
false
@@ -14,20 +14,22 @@
-
-
-
-
+
+
+
+
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/Source/CompanyCommunicator/Models/SentNotification.cs b/Source/CompanyCommunicator/Models/SentNotification.cs
index 8e6690b67..f0a5cc9ce 100644
--- a/Source/CompanyCommunicator/Models/SentNotification.cs
+++ b/Source/CompanyCommunicator/Models/SentNotification.cs
@@ -82,5 +82,10 @@ public class SentNotification : BaseNotification
/// Gets or sets a value indicating whether sending is in progress.
///
public bool SendingCompleted { get; set; }
+
+ ///
+ /// Gets or sets a value of created by.
+ ///
+ public string CreatedBy { get; set; }
}
}
diff --git a/Source/CompanyCommunicator/Models/SentNotificationSummary.cs b/Source/CompanyCommunicator/Models/SentNotificationSummary.cs
index ba65c49c6..7baf5e809 100644
--- a/Source/CompanyCommunicator/Models/SentNotificationSummary.cs
+++ b/Source/CompanyCommunicator/Models/SentNotificationSummary.cs
@@ -67,5 +67,10 @@ public class SentNotificationSummary
/// Gets or sets notification status. for possible values.
///
public string Status { get; set; }
+
+ ///
+ /// Gets or sets created by value.
+ ///
+ public string CreatedBy { get; set; }
}
}
diff --git a/Source/CompanyCommunicator/Startup.cs b/Source/CompanyCommunicator/Startup.cs
index 01f4bfa75..883b4dc8b 100644
--- a/Source/CompanyCommunicator/Startup.cs
+++ b/Source/CompanyCommunicator/Startup.cs
@@ -7,6 +7,7 @@ namespace Microsoft.Teams.Apps.CompanyCommunicator
{
using System;
using System.Net;
+ using System.Net.Http;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Hosting;
@@ -182,7 +183,8 @@ public void ConfigureServices(IServiceCollection services)
// Add microsoft graph services.
services.AddScoped();
- services.AddScoped();
+ services.AddScoped();
+ services.AddScoped(sp => new GraphServiceClient(sp.GetService(), sp.GetService()));
services.AddScoped();
services.AddScoped(sp => sp.GetRequiredService().GetGroupsService());
services.AddScoped(sp => sp.GetRequiredService().GetAppCatalogService());
diff --git a/Source/Test/CompanyCommunicator.Common.Test/Microsoft.Teams.App.CompanyCommunicator.Common.Test.csproj b/Source/Test/CompanyCommunicator.Common.Test/Microsoft.Teams.App.CompanyCommunicator.Common.Test.csproj
index 07e2f7a6c..0695c1f94 100644
--- a/Source/Test/CompanyCommunicator.Common.Test/Microsoft.Teams.App.CompanyCommunicator.Common.Test.csproj
+++ b/Source/Test/CompanyCommunicator.Common.Test/Microsoft.Teams.App.CompanyCommunicator.Common.Test.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.1
+ net6.0
true
false
@@ -11,10 +11,11 @@
-
+
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Source/Test/CompanyCommunicator.Common.Test/Services/Mock/MockHttpProvider.cs b/Source/Test/CompanyCommunicator.Common.Test/Services/Mock/MockHttpProvider.cs
index b59fd5554..1dfb3542b 100644
--- a/Source/Test/CompanyCommunicator.Common.Test/Services/Mock/MockHttpProvider.cs
+++ b/Source/Test/CompanyCommunicator.Common.Test/Services/Mock/MockHttpProvider.cs
@@ -38,7 +38,7 @@ public Task SendAsync(HttpRequestMessage request)
{
string key = request.Method.ToString() + ":" + request.RequestUri.ToString();
var response = new HttpResponseMessage();
- if (this.Responses.ContainsKey(key) && response.Content == null)
+ if (this.Responses.ContainsKey(key))
{
response.Content = new StringContent(this.Serializer.SerializeObject(this.Responses[key]));
}
diff --git a/Source/Test/CompanyCommunicator.Common.Test/Services/Recipients/RecipientsServiceTest.cs b/Source/Test/CompanyCommunicator.Common.Test/Services/Recipients/RecipientsServiceTest.cs
index 4fb3b1ae0..d24c78c93 100644
--- a/Source/Test/CompanyCommunicator.Common.Test/Services/Recipients/RecipientsServiceTest.cs
+++ b/Source/Test/CompanyCommunicator.Common.Test/Services/Recipients/RecipientsServiceTest.cs
@@ -42,7 +42,7 @@ public void RecipientService_NullParameters_ShouldThrowArgumentNullException()
/// Test case to check if argument null exception is thrown when parameters are null.
///
[Fact]
- public void BatchRecipients_NullParameters_ShouldThrowArgumentNullException()
+ public async void BatchRecipients_NullParameters_ShouldThrowArgumentNullException()
{
// Arrange
var recipientService = this.GetRecipientsService();
@@ -51,7 +51,7 @@ public void BatchRecipients_NullParameters_ShouldThrowArgumentNullException()
Func task1 = async () => await recipientService.BatchRecipients(null /*recipients*/);
// Assert
- task1.Should().Throw();
+ await task1.Should().ThrowAsync();
}
///
diff --git a/Source/Test/CompanyCommunicator.Prep.Func.Test/Microsoft.Teams.Apps.CompanyCommunicator.Prep.Func.Test.csproj b/Source/Test/CompanyCommunicator.Prep.Func.Test/Microsoft.Teams.Apps.CompanyCommunicator.Prep.Func.Test.csproj
index 794e220ce..da7854393 100644
--- a/Source/Test/CompanyCommunicator.Prep.Func.Test/Microsoft.Teams.Apps.CompanyCommunicator.Prep.Func.Test.csproj
+++ b/Source/Test/CompanyCommunicator.Prep.Func.Test/Microsoft.Teams.Apps.CompanyCommunicator.Prep.Func.Test.csproj
@@ -1,16 +1,17 @@
- netcoreapp3.1
+ net6.0
true
false
-
+
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Source/Test/CompanyCommunicator.Send.Func.Test/Microsoft.Teams.Apps.CompanyCommunicator.Send.Func.Test.csproj b/Source/Test/CompanyCommunicator.Send.Func.Test/Microsoft.Teams.Apps.CompanyCommunicator.Send.Func.Test.csproj
index 494feb55c..4e752cc10 100644
--- a/Source/Test/CompanyCommunicator.Send.Func.Test/Microsoft.Teams.Apps.CompanyCommunicator.Send.Func.Test.csproj
+++ b/Source/Test/CompanyCommunicator.Send.Func.Test/Microsoft.Teams.Apps.CompanyCommunicator.Send.Func.Test.csproj
@@ -1,15 +1,16 @@
- netcoreapp3.1
+ net6.0
true
false
-
+
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Source/Test/CompanyCommunicator.Test/Controllers/SentNotificationsControllerTest.cs b/Source/Test/CompanyCommunicator.Test/Controllers/SentNotificationsControllerTest.cs
index 30e70c5bd..daaad696e 100644
--- a/Source/Test/CompanyCommunicator.Test/Controllers/SentNotificationsControllerTest.cs
+++ b/Source/Test/CompanyCommunicator.Test/Controllers/SentNotificationsControllerTest.cs
@@ -307,6 +307,7 @@ public async Task GetSummary_CorrectMapping_ReturnsNotificationSummaryListObject
Assert.Equal(notification.Status, sentNotificationSummary.Status);
Assert.Equal(notification.Unknown, sentNotificationSummary.Unknown);
Assert.Equal(notification.Canceled, sentNotificationSummary.Canceled);
+ Assert.Equal(notification.CreatedBy, sentNotificationSummary.CreatedBy);
}
///
@@ -409,6 +410,7 @@ public async Task GetNotication_CorrectMapping_ReturnsSentNotificationObject()
Assert.Equal(notificationEntity.SendingStartedDate, sentNotification.SendingStartedDate);
Assert.Equal(notificationEntity.ErrorMessage, sentNotification.ErrorMessage);
Assert.Equal(notificationEntity.WarningMessage, sentNotification.WarningMessage);
+ Assert.Equal(notificationEntity.CreatedBy, sentNotification.CreatedBy);
}
private SentNotificationsController GetControllerInstance(bool proactivelyInstallUserApp = true)
@@ -458,6 +460,7 @@ private NotificationDataEntity GetNotification()
TeamsInString = "['item1','item2']",
RostersInString = "['item1','item2']",
GroupsInString = "['group1','group2']",
+ CreatedBy = "createdBy",
};
}
}
diff --git a/Source/Test/CompanyCommunicator.Test/Microsoft.Teams.Apps.CompanyCommunicator.Test.csproj b/Source/Test/CompanyCommunicator.Test/Microsoft.Teams.Apps.CompanyCommunicator.Test.csproj
index b3d012e19..a09a69711 100644
--- a/Source/Test/CompanyCommunicator.Test/Microsoft.Teams.Apps.CompanyCommunicator.Test.csproj
+++ b/Source/Test/CompanyCommunicator.Test/Microsoft.Teams.Apps.CompanyCommunicator.Test.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.1
+ net6.0
true
false
@@ -11,15 +11,17 @@
-
+
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/Support/readme.md b/Support/readme.md
index 544f6a4a9..2e8554c29 100644
--- a/Support/readme.md
+++ b/Support/readme.md
@@ -7,9 +7,7 @@ This script is designed for the purpose of testing the chat functionality of the
* $tenantId = "tenant.onmicrosoft.com" #or in GUID format "00000000-0000-0000-0000-000000000000"
* $teamsAppId = "00000000-0000-0000-0000-000000000000" # AppId of the Teams App Manifest
* $graphAppId = "00000000-0000-0000-0000-000000000000"
-* $graphAppSecret= "secret"
* $userAppId = "00000000-0000-0000-0000-000000000000"
-* $userAppSecret = "secret"
For the secrets, I recommend to an extra secret per App which you can delete after using this script. This way, it won't interfere with the configuration of the application. And as an added bonus, it's more secure because the script will only run with the newly created secrets.
diff --git a/Wiki/Deployment-guide-powershell.md b/Wiki/Deployment-guide-powershell.md
index 28530ecda..e8fbd531f 100644
--- a/Wiki/Deployment-guide-powershell.md
+++ b/Wiki/Deployment-guide-powershell.md
@@ -137,7 +137,7 @@ To begin, you will need:
- `appDisplayName` - The app (and bot) display name. Default value:Company Communicator.
- `appDescription` - The app (and bot) description. Default value: Broadcast messages to multiple teams and people in one go.
- `appIconUrl` - The link to the icon for the app. It must resolve to a PNG file. Default value [https://raw.githubusercontent.com/OfficeDev/microsoft-teams-company-communicator-app/main/Manifest/color.png](https://raw.githubusercontent.com/OfficeDev/microsoft-teams-company-communicator-app/main/Manifest/color.png)
- - `Header Text` - Default value is `Company Communicator`. This is the banner text that will appear starting v5.2, you will have the option to modify later.
+ - `Header Text` - Default value is `Company Communicator`. This is the banner text that will appear starting v5.2 and later, you will have the option to modify later.
- `Header Logo Url` - Default image is Microsoft logo. You will have the option to modify later.
- `companyName` - The display name for the company.
- `websiteUrl` - The https:// URL to you company's website. This link should take users to your company or product-specific landing page.
diff --git a/Wiki/Deployment-guide.md b/Wiki/Deployment-guide.md
index 9863c718e..c96a89009 100644
--- a/Wiki/Deployment-guide.md
+++ b/Wiki/Deployment-guide.md
@@ -124,7 +124,7 @@ Register three Azure AD application in your tenant's directory: one for author b
7. **Microsoft Graph App Secret**: The client secret of the Microsoft Graph Azure AD app. (from Step 1)
8. **Proactively Install User App [Optional]**: Default value is `true`. You may set it to `false` if you want to disable the feature.
9. **User App ExternalId [Optional]**: Default value is `148a66bb-e83d-425a-927d-09f4299a9274`. This **MUST** be the same `id` that is in the Teams app manifest for the user app.
- 10. **Header Text [Optional]**: Default value is `Company Communicator`. This is the banner text that will appear starting v5.2, you will have the option to modify later.
+ 10. **Header Text [Optional]**: Default value is `Company Communicator`. This is the banner text that will appear starting v5.2 and later, you will have the option to modify later.
11. **Header Logo Url [Optional]**: Default image is Microsoft logo. You will have the option to modify later.
12. **Hosting Plan SKU [Optional]**: The pricing tier for the hosting plan. Default value is `Standard`. You may choose between Basic, Standard and Premium.
13. **Hosting Plan Size [Optional]**: The size of the hosting plan (small - 1, medium - 2, or large - 3). Default value is `2`.
diff --git a/Wiki/FAQ.md b/Wiki/FAQ.md
index 4f1c3db10..e84feb711 100644
--- a/Wiki/FAQ.md
+++ b/Wiki/FAQ.md
@@ -72,4 +72,7 @@ You can update the banner title and the logo by updating the configuration in Az
### 13. Is it possible to format the message in the summary field?
Yes, you can use markdown tags for formatting the message in the summary. CC v5.2 supports this feature, you can refer [here](https://docs.microsoft.com/en-us/adaptive-cards/authoring-cards/text-features) to know the list of styles supported.
+### 14. Latest changes does not reflect after upgrading the app to v5.3.0?
+Teams client default behavior is to use client app resources (js/css/ images) from teams cache. To reflect the latest changes please sign out and sign in again to the teams client or clear the teams cache with the steps mentioned [here](https://docs.microsoft.com/en-us/microsoftteams/troubleshoot/teams-administration/clear-teams-cache).
+
diff --git a/Wiki/Release-notes.md b/Wiki/Release-notes.md
index eef00fa3f..f8374a58d 100644
--- a/Wiki/Release-notes.md
+++ b/Wiki/Release-notes.md
@@ -6,6 +6,7 @@ Cumulative improvements in Company Communicator App.
|Release |Published to
Microsoft Store |
|---|---|
+| 5.3 | Dec 14, 2022
| 5.2 | Jul 26, 2022
| 5.1 | Apr 28, 2022
| 5.0 | Nov 10, 2021
@@ -23,6 +24,13 @@ Cumulative improvements in Company Communicator App.
| 1.0 | Dec 20, 2019
### Company Communicator feature release notes
+#### 5.3 (Dec 14, 2022)
+##### Changes introduced
+- .NET upgrade from .NET Core 3.1 to .NET 6.0
+- Updated Azure App Service app to use .NET 6.0.
+- Updated Azure Function apps to use runtime version 4.x.
+- Capture the sender info in the Author app.
+- Bug fix for the issue with clean up function.
#### 5.2 (Jul 26, 2022)
##### Changes introduced
diff --git a/Wiki/Troubleshooting.md b/Wiki/Troubleshooting.md
index 0fe09f16b..74b71a1ab 100644
--- a/Wiki/Troubleshooting.md
+++ b/Wiki/Troubleshooting.md
@@ -237,5 +237,24 @@ The above error occurs due to the mismatch in Azure CLI version. There are two w
1. Install [Azure CLI v2.30.0](https://azcliprod.blob.core.windows.net/msi/azure-cli-2.30.0.msi).
2. Uninstall the Azure CLI from your system and re-run the powershell script in future, the script will automatically install Azure CLI v2.30.0 and authentication steps will be completed.
+### 14. App service deployment failed while Sync operation with below error?
+
+Error Logs:
+
+![appservice sync deployment error](images/appservice_sync_deployment_error.png)
+
+#### Fix
+
+The above error occurs when default node version of app service points to the older versions.
+
+1. Go to portal.azure.com. Navigate to resource group where all CC resources are deployed.
+2. Click on the App service -> Click on Configuration.
+3. Click on WEBSITE_NODE_DEFAULT_VERSION.
+4. Update the default value to 16.13.0 (previous value ->10.15.2).
+5. Click on Overview and Re-start the app service.
+6. Once the app service is restarted. Navigate to Deployment Center and click on Sync. Once deployment is successful. Re-start the app service.
+
+![appservice sync deployment error fix](images/appservice_sync_error_fix.png)
+
# Didn't find your problem here?
Please report the issue [here](https://github.com/OfficeDev/microsoft-teams-company-communicator-app/issues/new)
diff --git a/Wiki/User-manual.md b/Wiki/User-manual.md
index 427755a17..c68b840c0 100644
--- a/Wiki/User-manual.md
+++ b/Wiki/User-manual.md
@@ -21,7 +21,7 @@ Click 'New Message' to draft the message to be sent,
- **Title:** Title of the message in few words.
- **Image URL:** The image to be attached to the message, they are 2 ways the image can be attached.
- 1. Click 'Upload' button and select the image from the local machine, image should not be more than 1 MB in size
+ 1. Click 'Upload' button and select the image from the local machine, image should not be more than ~1 MB in size
1. Upload the image to public site and paste the image URL in the field, remember the URL should be publicly accessible
- **Summary:** You can provide the summary of the message, you can also format the message using markdown tags, refer [here](https://docs.microsoft.com/en-us/adaptive-cards/authoring-cards/text-features) to know the list of styles supported.
- **Author:** Name of the author who sends the message.
diff --git a/Wiki/images/appservice-dotnet-version.png b/Wiki/images/appservice-dotnet-version.png
new file mode 100644
index 000000000..609edaec2
Binary files /dev/null and b/Wiki/images/appservice-dotnet-version.png differ
diff --git a/Wiki/images/appservice_sync_deployment_error.png b/Wiki/images/appservice_sync_deployment_error.png
new file mode 100644
index 000000000..d5bba38b9
Binary files /dev/null and b/Wiki/images/appservice_sync_deployment_error.png differ
diff --git a/Wiki/images/appservice_sync_error_fix.png b/Wiki/images/appservice_sync_error_fix.png
new file mode 100644
index 000000000..17eb86c13
Binary files /dev/null and b/Wiki/images/appservice_sync_error_fix.png differ
diff --git a/Wiki/images/azurefunctions_runtime_version.png b/Wiki/images/azurefunctions_runtime_version.png
new file mode 100644
index 000000000..c6dff9815
Binary files /dev/null and b/Wiki/images/azurefunctions_runtime_version.png differ
diff --git a/Wiki/images/dotnet_upgrade_execution.png b/Wiki/images/dotnet_upgrade_execution.png
new file mode 100644
index 000000000..be0e322fa
Binary files /dev/null and b/Wiki/images/dotnet_upgrade_execution.png differ
diff --git a/Wiki/images/single_tenant_app_creation.png b/Wiki/images/single_tenant_app_creation.png
new file mode 100644
index 000000000..73821842d
Binary files /dev/null and b/Wiki/images/single_tenant_app_creation.png differ
diff --git a/Wiki/images/single_tenant_app_overview.png b/Wiki/images/single_tenant_app_overview.png
new file mode 100644
index 000000000..40120b90d
Binary files /dev/null and b/Wiki/images/single_tenant_app_overview.png differ
diff --git a/Wiki/images/single_tenant_app_secret.png b/Wiki/images/single_tenant_app_secret.png
new file mode 100644
index 000000000..f9ec764f9
Binary files /dev/null and b/Wiki/images/single_tenant_app_secret.png differ
diff --git a/Wiki/v5-migration-guide.md b/Wiki/v5-migration-guide.md
index fb1406776..8c8421ad8 100644
--- a/Wiki/v5-migration-guide.md
+++ b/Wiki/v5-migration-guide.md
@@ -1,5 +1,71 @@
## Company Communicator v5 Migration Guide
+## Upgrading from v5.x to latest version
+If you have CC v5.0, v5.1 or v5.2 deployed and plan to migrate to the latest version, please perform the following steps:
+
+### 1. Update the .Net version of Azure Functions and App Service to support .NET 6.0 :
+
+- Download the whole solution folder from [GitHub](https://github.com/OfficeDev/microsoft-teams-company-communicator-app)
+- Unzip the Content to a folder. (say companyCommunicator)
+- Open a PowerShell window in **administrator** mode and navigate to the folder where you unzipped the content.
+- Navigate to Deployment folder.
+ ```
+ cd microsoft-teams-apps-company-communicator-main\Deployment
+ ```
+
+- Run the below command. This will allow you to run dotnet6-migration.ps1. By default, the execution policy is restricted. You may change it to back restricted after deployment is completed.
+ ```
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
+ ```
+- Run the below command to unblock the deployment script.
+ ```
+ Unblock-File -Path .\dotnet6-migration.ps1
+ ```
+
+#### Execute script
+
+- Open a PowerShell window in **administrator** mode and navigate to Deployment folder
+ ```
+ cd microsoft-teams-apps-company-communicator-main\Deployment
+ ```
+- Execute the `dotnet6-migration.ps1` script in the Powershell window:
+ ```
+ .\dotnet6-migration.ps1
+ ```
+- During execution of script you will be asked to provide below input parameters,
+ * Subscription Id : Please enter the subscription id of the resources where Company Communicator deployed.
+ * Resource Group Name : Please enter the resource group name where the previous resources were created.
+ * Base Resource Name : Please enter the base resource name used in the previous deployment. Base resource name is same as the app service name.
+
+![DotNet Upgrade](images/dotnet_upgrade_execution.png)
+
+#### Validate .NET 6 upgrade
+- Go to portal.azure.com. Navigate to resource group where all CC resources are deployed.
+- Click on the App service -> Click on Configuration -> Click on General Settings
+- Check and confirm the .NET version to be .NET 6 (LTS)
+
+![App Service .NET Version ](images/appservice-dotnet-version.png)
+
+- Click on *-prep-function -> Click on Configuration -> Click on Function runtime settings.
+- Select the runtime version to be ~4. Similary select for ***-function** and ***-data-function**.
+
+![App Functions Runtime Version ](images/azurefunctions_runtime_version.png)
+
+### 2. Validate and update the config settings and sync to the lastest code :
+
+1. Go to app service --> Configuration--> Click on New application setting and add below name and values. You can update the value for the header text and the header image as per your organization needs.
+ * REACT_APP_HEADERTEXT : Company Communicator
+ * REACT_APP_HEADERIMAGE : https://raw.githubusercontent.com/OfficeDev/microsoft-teams-company-communicator-app/main/Source/CompanyCommunicator/ClientApp/src/assets/Images/mslogo.png
+
+ ![Update banner](images/update_banner_title_logo.png)
+
+1. Verify the WEBSITE_NODE_DEFAULT_VERSION value should be 16.13.0. Please update it to 16.13.0 if any other value is shown.
+1. Save the configuration.
+1. Restart the app service and sync to the latest changes.
+1. For all azure functions verify if the WEBSITE_NODE_DEFAULT_VERSION to be 16.13.0. Please update it if any other value is shown and sync the changes.
+1. Restart the functions.
+1. Sign out from teams and sign in again to see the latest changes.
+
## Upgrading from v4 to v5
If you have the CCv4 deployed and plan to migrate from CCv4 to CCv5, perform the following steps:
@@ -36,17 +102,17 @@ Please refer [step 2](https://github.com/OfficeDev/microsoft-teams-company-commu
- **Supported account types**: Select "Accounts in this organizational directory only(Default Directory only - Single tenant)".
- Leave the "Redirect URI" field blank for now.
- ![Azure AD app registration page](images/multitenant_app_creation.png)
+ ![Azure AD app registration page](images/single_tenant_app_creation.png)
6. Click **Register** to complete the registration.
-7. When the app is registered, you'll be taken to the app's "Overview" page. Copy the **Application (client) ID**; we will need it later. Verify that the "Supported account types" is set to **Multiple organizations**.
+7. When the app is registered, you'll be taken to the app's "Overview" page. Copy the **Application (client) ID**; we will need it later. Verify that the "Supported account types" is set to **My organization only**.
- ![Azure AD app overview page](images/multitenant_app_overview_1.png)
+ ![Azure AD app overview page](images/single_tenant_app_overview.png)
8. On the side rail in the Manage section, navigate to the "Certificates & secrets" section. In the Client secrets section, click on "+ New client secret". Add a description for the secret, and choose when the secret will expire. Click "Add".
- ![Azure AD app secret](images/multitenant_app_secret.png)
+ ![Azure AD app secret](images/single_tenant_app_secret.png)
9. Once the client secret is created, copy its **Value**; we will need it later.
@@ -124,19 +190,24 @@ Please refer [step 2](https://github.com/OfficeDev/microsoft-teams-company-commu
7. **Microsoft Graph App Secret**: The client secret of the Microsoft Graph Azure AD app. (from Step 2)
8. **Proactively Install User App [Optional]**: Default value is `true`. You may set it to `false` if you want to disable the feature.
9. **User App ExternalId [Optional]**: Default value is `148a66bb-e83d-425a-927d-09f4299a9274`. This **MUST** be the same `id` that is in the Teams app manifest for the user app.
- 10. **Service Bus Web App Role Name Guid [Optional]**: Default value is `958380b3-630d-4823-b933-f59d92cdcada`. This **MUST** be the same `id` per app deployment.
+ 10. **Header Text [Optional]**: Default value is `Company Communicator`. This is the banner text that will appear starting v5.2 and later, you will have the option to modify later.
+ 11. **Header Logo Url [Optional]**: Default image is Microsoft logo. You will have the option to modify later.
+ 12. **Hosting Plan SKU [Optional]**: The pricing tier for the hosting plan. Default value is `Standard`. You may choose between Basic, Standard and Premium.
+ 13. **Hosting Plan Size [Optional]**: The size of the hosting plan (small - 1, medium - 2, or large - 3). Default value is `2`.
+
+ > **Note:** The default value is 2 to minimize the chances of an error during app deployment. After deployment you can choose to change the size of the hosting plan.
+ 14. **Service Bus Web App Role Name Guid [Optional]**: Default value is `958380b3-630d-4823-b933-f59d92cdcada`. This **MUST** be the same `id` per app deployment.
> **Note:** Make sure to keep the same values for an upgrade. Please change the role name GUIDs in case of another Company Communicator Deployment in same subscription.
- 11. **Service Bus Prep Func Role Name Guid [Optional]**: Default value is `ce6ca916-08e9-4639-bfbe-9d098baf42ca`. This **MUST** be the same `id` per app deployment.
- 12. **Service Bus Send Func Role Name Guid [Optional]**: Default value is `960365a2-c7bf-4ff3-8887-efa86fe4a163`. This **MUST** be the same `id` per app deployment.
- 13. **Service Bus Data Func Role Name Guid [Optional]**: Default value is `d42703bc-421d-4d98-bc4d-cd2bb16e5b0a`. This **MUST** be the same `id` per app deployment.
- 14. **Storage Account Web App Role Name Guid [Optional]**: Default value is `edd0cc48-2cf7-490e-99e8-131311e42030`. This **MUST** be the same `id` per app deployment.
- 15. **Storage Account Prep Func Role Name Guid [Optional]**: Default value is `9332a9e9-93f4-48d9-8121-d279f30a732e`. This **MUST** be the same `id` per app deployment.
- 16. **Storage Account Data Func Role Name Guid [Optional]**: Default value is `5b67af51-4a98-47e1-9d22-745069f51a13`. This **MUST** be the same `id` per app deployment.
- 17. **DefaultCulture [Optional]**: By default the application uses `en-US` locale. You can choose the locale from the list, if you wish to use the app in different locale.Also, you may add/update the resources for other locales and update this configuration if desired.
- 18. **SupportedCultures [Optional]**: This is the list of locales that application supports currently.You may add/update the resources for other locales and update this configuration if desired.
-
+ 15. **Service Bus Prep Func Role Name Guid [Optional]**: Default value is `ce6ca916-08e9-4639-bfbe-9d098baf42ca`. This **MUST** be the same `id` per app deployment.
+ 16. **Service Bus Send Func Role Name Guid [Optional]**: Default value is `960365a2-c7bf-4ff3-8887-efa86fe4a163`. This **MUST** be the same `id` per app deployment.
+ 17. **Service Bus Data Func Role Name Guid [Optional]**: Default value is `d42703bc-421d-4d98-bc4d-cd2bb16e5b0a`. This **MUST** be the same `id` per app deployment.
+ 18. **Storage Account Web App Role Name Guid [Optional]**: Default value is `edd0cc48-2cf7-490e-99e8-131311e42030`. This **MUST** be the same `id` per app deployment.
+ 19. **Storage Account Prep Func Role Name Guid [Optional]**: Default value is `9332a9e9-93f4-48d9-8121-d279f30a732e`. This **MUST** be the same `id` per app deployment.
+ 20. **Storage Account Data Func Role Name Guid [Optional]**: Default value is `5b67af51-4a98-47e1-9d22-745069f51a13`. This **MUST** be the same `id` per app deployment.
+ 21. **DefaultCulture [Optional]**: By default the application uses `en-US` locale. You can choose the locale from the list, if you wish to use the app in different locale.Also, you may add/update the resources for other locales and update this configuration if desired.
+ 22. **SupportedCultures [Optional]**: This is the list of locales that application supports currently.You may add/update the resources for other locales and update this configuration if desired.
> **Note:** Make sure that the values are copied as-is, with no extra spaces. The template checks that GUIDs are exactly 36 characters.
@@ -148,6 +219,8 @@ Please refer [step 2](https://github.com/OfficeDev/microsoft-teams-company-commu
1. If you wish to change the app name, description, and icon from the defaults, modify the corresponding template parameters.
+1. If you wish to change the header/banner text and logo, refer to FAQ in the Wiki.
+
1. Agree to the Azure terms and conditions by clicking on the check box "I agree to the terms and conditions stated above" located at the bottom of the page.
1. Click on "Purchase" to start the deployment.
@@ -167,7 +240,7 @@ Please refer [step 2](https://github.com/OfficeDev/microsoft-teams-company-commu
* **userBotId:** This is the Microsoft Application ID for the Company Communicator app. For the following steps, it will be referred to as `%userBotId%`.
* **appDomain:** This is the base domain for the Company Communicator app. For the following steps, it will be referred to as `%appDomain%`.
-## 5. Set-up Authentication
+### 5. Set-up Authentication
1. Note that you have the `%authorBotId%`, `%userBotId%` and `%appDomain%` values from the previous step (Step 2).
@@ -227,7 +300,7 @@ Please refer [step 2](https://github.com/OfficeDev/microsoft-teams-company-commu
1. Click **Save** to commit your changes.
-## 6. Add Permissions to your app
+### 6. Add Permissions to your app
Continuing from the Azure AD author app registration page where we ended Step 3.
@@ -261,7 +334,7 @@ Continuing from the Azure AD author app registration page where we ended Step 3.
- Prepare link - https://login.microsoftonline.com/common/adminconsent?client_id=%appId%. Replace the `%appId%` with the `Application (client) ID` of Microsoft Graph Azure AD app (from above).
- Global Administrator can grant consent using the link above.
-## 7. Create the Teams app packages
+### 7. Create the Teams app packages
Company communicator app comes with 2 applications – Author, User. The Author application is intended for employees who create and send messages in the organization, and the User application is intended for employees who receive the messages.
@@ -296,7 +369,7 @@ Create two Teams app packages: one to be installed to an Authors team and other
Repeat the steps above but with the file `Manifest\manifest_users.json` and use `%userBotId%` for `<>` placeholder. Note: you will not need to change anything for the configurationUrl or webApplicationInfo section because the recipients app does not have the configurable tab. Name the resulting package `company-communicator-users.zip`, so you know that this is the app for the recipients.
-## 8. Install the lastest apps in Microsoft Teams
+### 8. Install the lastest apps in Microsoft Teams
1. Delete the v4.x apps and re-upload the latest v.5 manifest. Install the authors app (the `company-communicator-authors.zip` package) to your team of message authors.
* Note that even if non-authors install the app, the UPN list in the app configuration will prevent them from accessing the message authoring experience. Only the users in the sender UPN list will be able to compose and send messages.
@@ -311,4 +384,6 @@ Repeat the steps above but with the file `Manifest\manifest_users.json` and use
> If `proactiveAppInstallation` is enabled, you may skip this step. The service will install the app for all the recipients when authors send a message.
### Migration Status
-If you have performed all the steps, migration completes after successful deployment.
\ No newline at end of file
+If you have performed all the steps, migration completes after successful deployment.
+
+> **Note:** If latest changes doesn't reflect after upgrading the app, please sign out and sign in again to the teams client or clear the teams cache with the steps mentioned [here](https://docs.microsoft.com/en-us/microsoftteams/troubleshoot/teams-administration/clear-teams-cache).
\ No newline at end of file
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index c0496b29b..37ff861ed 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -1,6 +1,6 @@
pool:
name: Azure Pipelines
- vmImage: 'windows-latest'
+ vmImage: 'windows-2022'
demands:
- msbuild
- visualstudio
@@ -14,16 +14,18 @@ steps:
- checkout: self
- task: UseDotNet@2
- displayName: '.NET Core 3.1.x'
+ displayName: 'Use .NET 6.0.x'
inputs:
- version: '3.1.x'
packageType: sdk
+ version: '6.0.x'
+ includePreviewVersions: true
- task: DotNetCoreCLI@2
- displayName: Build solution
+ displayName: 'Build solution'
inputs:
+ command: build
projects: $(Solution)
- arguments: --configuration $(BuildConfiguration)
+ arguments: '--configuration $(BuildConfiguration)'
- task: DotNetCoreCLI@2
displayName: 'Run unit tests'
@@ -31,7 +33,7 @@ steps:
command: test
projects: $(Solution)
arguments: '--collect "Code coverage"'
-
+
- task: DotNetCoreCLI@2
displayName: 'Publish Company Communicator'
inputs:
diff --git a/global.json b/global.json
index ac25633c4..d6c2c37f7 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "3.1.108",
+ "version": "6.0.100",
"rollForward": "latestFeature"
}
}
\ No newline at end of file