Authentication type -> Microsoft identity platform -> Create
Next
Sign in -> Microsoft
Log in with the administrator account.
Create new
A browser window pops up. Log in with the administrator account.
Authentication complete.
Specify the Display name. -> Register
Confirm that the creation is successful.-> Next
Add Microsoft Graph permissions -> Next
Save the Client secret value in a notepad.-> Next
Finish
Close
Close
Service is registered, and verify that Secrets.json (Local) has been created.
Double-click on the Appsettings.json file.
The information for the created app is displayed.
The same information is confirmed in Entra ID.
Start Debugging
After accessing localhost, you're redirected directly to the login page -> Log in with the administrator account.
Upon first access, the permissions are displayed as shown below -> Click Accept. -> Accept
Display the logged-in account information.
When you sign out, the following message is displayed.
When you log in with a different account, it displays the information of that account.
Build -> Identity
Web Server (IIS) -> Next
Web Deploy Package -> Next
Specify the location to export the package -> Set the Site Name -> Click Finish.
Close
Publish
Once completed, copy the package file to the IIS Server.
As done in the previous post, after extracting the files, copy the essential folders and files, such as wwwroot, to the root directory as shown below.
Launch IIS Manager
Righ-Click on Sites -> Add Website
Specify the settings as shown below.
When testing on localhost, an Error 500 occurs as shown below. The cause is that the ClientSecret value is not included during publishing, which leads to this issue.
Open the Appsettings.json file using Notepad.
Add the previously saved Secret Value in the following format -> Save the file:
IISRESET
Confirm the login process.
Proceed with testing by accessing the published URL.
A Redirect URI error has occurred.
Entra ID Admin center -> Applications -> App registration -> Authentication -> Add the following to Redirect URIs as shown below.
In this post, we will cover the process of publishing an ASP.NET Sample Page to IIS. Since most Microsoft solutions are based on ASP.NET, I thought this would be a necessary step before testing Graph.
ASP.NET Core Web App (Model-View-Controller) -> Next
Next
Verify that the Framework is set to .NET 8.0 -> Click "Create" (You will need to install the Runtime and SDK version 8.0 on IIS to match this setting.)
Solution Explorer -> Controllers -> Add -> Controller
MVC Controller - Empty -> Add
Name the controller as HelloWorldController. -> Add
Right-Click on Views -> Add -> New Folder
Name it HelloWorld.
Right-click on HelloWorld.-> Add -> New Item
If the following options appear, select Show All Templates.
Razor View - Empty -> Confirm the name as Index.cshtml. -> Add
Verify that it has been created under the HelloWorld folder.
다음과같이입력합니다.
ViewData["Title"] = "Index";
<h2>Index</h2>
<p>Hello from the HelloWorld view!</p>
Debug -> Start Debugging
If any messages related to SSL certificates appear, click "Yes" for all of them.
Yes
Yes
Yes
The sample page is now accessible in Edge.
When you access /HelloWorld, it is displayed as follows:
Now, let's proceed with creating the sample page as a site in IIS.
Build -> Publish [Project Name]
Web Server (IIS) -> Next
Web Deploy Package -> Next
Specify the location. -> Site name 지정 -> Finish
Click Publish.
It will be generated as shown below. Now, copy the files to the IIS server.
After copying, extract the files.
After extracting, move the files to a subfolder as shown below -> Copy the folder and files to the root directory (C:\Sample).
Copy completed.
Launch IIS Manager.
Sites -> Add Website
Proceed with the creation process as shown below. (For the certificate, specify the one that was previously created.)
Confirm that the creation is successful.
Application Pools -> Double-click on **Sample**.
.NET CLR version -> Change the setting to **No Managed Code**.
IISRESET
Access localhost to verify the setup.
Once DNS registration and certificate binding are completed, test the published URL.
When testing Exchange Online and M365, there are times when an environment related to Graph API is needed. In the past, I would have skipped anything related to development, but now ChatGPT can generate sample pages to some extent.
Without any prior development knowledge, I will build a test environment using the knowledge gained from ChatGPT, based on IIS. The ultimate goal is to integrate Microsoft Graph, and I will post about the necessary components along the way.
In this post, I will cover installing Visual Studio 2022 and configuring the IIS Server.
As I continue to research prompts, it seems that a request like "Create a column" is more appropriate than simply asking for calculations, so I plan to focus on that aspect.
Prompt 1. Create a "X" column
I started with the following prompt.
Calculate "Month", based on "Date".
I believe this has transformed into the following form.
Add a column Month. Calculate Month, based on Date.
= Add a Column Month based on Date
= Calculate "Month", based on "Date".
= Create a 'Month' column
Calculate "Month", based on "Date".
The first is presented as follows.
Give me another suggestion based on my prompt
Give me another suggestion based on my prompt
I think it might be a form where the beginning is omitted, as shown below.
Add a column Month. Calculate Month, based on Date.
The previous prompt execution history might have an influence, but the prompt below produces almost the same result.
Add a column Month. Calculate Month, based on Date.
= Add a Column Month based on Date
= Calculate "Month", based on "Date".
= Create a 'Month' column
Prompt 2. Create columns "Title: A, B, C, D". Calculate Condition, Matching Month based on Table1.
As I input many prompts, there were many cases where the following prompt from a previous entry did not function as intended.
In particular, the following prompt did not produce the desired results in many cases.
Calculate Method W, X, Y, Z.Matching Name, Quarter based on Table1
This time, I will proceed with a slight change. It has been confirmed that using the "Create Columns" prompt results in higher accuracy.
Create columns "Department: Global Sales 1, Global Sales 2, Internal Sales 1, Internal Sales 2". Calculate Sales Performance, Matching Month based on Table1.
Requesting to add the desired columns (up to a maximum of 4), along with additional explanations or examples, increases the accuracy.
Clicking "Hide explanation" allows you to check the explanation of the formula.
Check the results.
Let's proceed in the same pattern as follows.
Create columns "Method: W, X, Y, Z". Calculate Sales Performance, Matching Month based on Table1.
Check the formula explanation to ensure it matches the intended content.
It is confirmed that the 4 columns are added as intended.
Proceed with the addition and verify the results.
Prompt 3. Create 4 columns "A, B, C, D". Provide the basis, location, and definition regarding the requested matter.
There is no correct answer in prompts. The only solution is how well you present it for Copilot to understand. This time, I will try entering the prompt in a different way.
Each column calculate monthly sales performance by Department.
The performance must be matched based on the month of Table1.
I will generate 4 columns.
Check if it aligns with my intended purpose.
Click on the formula to review it once more for confirmation.
Let's calculate the monthly sales performance by method using the same approach.
Create 4 columns "W, X, Y, X".
Each column calculate monthly sales performance by Method.
The performance must be matched based on the month of Table1.
It can be confirmed that the columns were generated following the same pattern.
Click on the formula to verify it.
It seems that calculating the quarter isn't working well. Pre-inserting the quarter into Table1 lowers the difficulty. Therefore, the structure of the Source Table is crucial when using Copilot.
Let's see what happens when we simply change "Monthly" to "Quarterly."
Each column calculates quarterly sales performance by Department.
The performance must be matched based on the month of Table1.
Looking at the results, there is no part where the month is calculated as a quarter.
This time, I added more detailed explanations.
Create 4 columns "Global Sales 1, Global Sales 2, Internal Sales 1, Internal Sales 2". Each column calculates quarterly sales performance by Department. The performance must be matched based on the quarter of Table1. There is no quarter column in Table1. The quarter must be calculated based on the month.
It can be observed that the quarter definition was added and calculated correctly. However, only one column was added.
I want to create 4 columns
It only generates the formula.
Create 4 columns using the provided formula.
Still, the result was just one.
When proceeding as below, it suggests other columns. Calculating multiple rows felt quite challenging. Perhaps it's because this is still in the preview stage
Give me another suggestion based on my prompt
Give me another suggestion based on my prompt
By adding one at a time, I was able to complete it as shown below.
It would be great if things were clearer, but for now, offering various directions seems to be the best approach.
In the following post, when calculating some functions, I was able to include detailed conditions by using 'If'. This time, let's check to what extent the conditions are being met by using 'If'.
If you want to find the day of the week based on a date, you can input the prompt as follows.
Calculate "The day of the Week", based on "Date".
Formulate the equation as shown below.
If A is null, adding null results in the following:
Create it in the following format:
Null values are satisfied and calculated.
You can create various conditions with this pattern, such as for errors or incorrect formats.
Prompt 2. If A >= X, apply discount of Table (Apply the discount rate)
There is a sales invoice as shown below, and on the right, there is a discount rate table by product. Let's create the Amount by applying the conditions from the Discount_Table.
If Amount >= $2,000,000, apply discount of Discount_Table
Generate the formula as shown below.
You can see that the Discounted Amount is calculated as follows.
By applying this, it is expected that various invoices can be created more easily than before.
Prompt 3. Calculate "Target Achievement status". If Total Sales >= Target, "Success" or "Fail".
This time, as shown below, Table 1 contains sales records, Table 2 contains product performance, and Table 3 contains product targets
Calculate "Target Achievement status". If Total Sales >= Target, "Success" or "Fail".
Although Table 2 wasn't mentioned, it found the target from Table 2 and performed the calculation. It seems that the recent Excel Copilot remembers the prompts I gave earlier and uses them to generate formulas.
Result
As with other products, it appears that Copilot in Excel is significantly influenced by the Chat History.
Therefore, there are times when even a simple input is enough for it to reference and retrieve data, while other times, even with detailed instructions, it fails to generate the formula. I believe that the more you work with Copilot, the easier it becomes to create formulas efficiently.
Let me introduce two useful prompts for creating pivot charts and pivot tables: "Show data insights" and "Add all insights to grid." These prompts are already quite well-known, but they are so helpful that I decided to include them in the "Useful Prompt" series. As this series grows longer, I believe that some people might eventually use it as a resource to organize their work.
After selecting the table you want to analyze, click or input "Show data insights."
When you click "Add to a new sheet," the corresponding pivot chart and table will be generated on a new sheet. If you want to receive different data insights, click "Can I see another insight?"
When you click "Add to a new sheet," a simple prompt will generate the pivot chart and pivot table.
Prompt 2. Add all insights to grid
When you click "Add all insights to grid,"
various pivot charts and
pivot tables will be generated simultaneously.
Users who have struggled with creating pivot charts and pivot tables can now easily do so using simple prompts.
Expanded data structure support and comprehensive answers in Copilot in Excel
Users are no longer limited to using Copilot in Excel only in Excel tables, because Copilot in Excel now works on data ranges resembling tables with a single row of headers on top. This saves time by eliminating the need to format data. so users can start analyzing with Copilot right away. This feature started rolling out this month.
In addition, the edit box is now available on any Excel worksheet, regardless of the selected cell. Copilot will reason over the nearest table, or data range resembling a table, to the user’s selected grid area on the same worksheet. This enables users to interact with Copilot immediately, regardless of their position in the worksheet, saving time and increasing productivity. This feature started rolling out this month.
Copilot in Excel now also provides more conversational and comprehensive answers to a wide array of Excel-related questions. When prompted, users can now receive step-by-step instructions including formula examples, or can see corrections and explanations of formula errors. This feature started rolling out this month.
In my personal opinion, I think it has now... become somewhat useful. I’ll show you how you can utilize it to some extent with a specific prompt pattern.
To use Copilot in Excel, the file needs to be saved on OneDrive or SharePoint, and auto-save must be activated. For collaborative editing, auto-save must be enabled. In a way, this is similar to the concept of how Copilot works in conjunction with Pilot for collaborative editing.
Inserting Tables
Copilot operates based on tables. Initially, it only worked within a table, but now it can reference and operate using other tables like a database.
Insert - Table
OK
Prompt 1. Calculate A based on B
Let's calculate the year based on the date.
Calculate Year Based on Date.
Insert column
Confirm result
Prompt 2. Calculate A based on B. If A is null, null
It's similar to prompt 1, but with an additional condition. If A is null, it should be displayed as null.
If this condition is not met, and the date is null, it will be displayed in the following format:
This time, we'll calculate the month based on the date.
Calculate Month based on Date. If Date is null, null
Insert column
The month is calculated as shown below. You can see that if the date is null, it is displayed as null.
If you click on "Give me another column suggestion" instead of "Insert column," it will provide an alternative approach using a different formula.
It suggests a different formula as shown below.
Using the same approach, let’s calculate the week number.
Calculate Week of Month based on Date. If Date is null, null.
Insert column
Confirm result
Prompt 3. Calculate A, Matching B based on C
This time, let's retrieve the department corresponding to the name based on Table2, as shown below.
(This can be done even if it’s not on the same sheet.)
After selecting the first table, enter the following prompt:
Calculate Department, Matching Name based on Table2
Insert column
You can see that the department corresponding to the name is retrieved using the XLOOKUP function.
Prompt 4. Calculate Method Z, X, Q, Y Matching Name, Month based on Table1
Table1 is a performance table by sales representatives.
Let’s use a prompt in Table3 to retrieve the relevant performance data.
By entering the prompt below, you can calculate the monthly performance of sales representatives by method.
Calculate Method W, X, Y, Z. Matching Name, Month based on Table1
It suggests four formulas at once, as shown below.
As of July 27, 2024, you can add formula-based aggregation by up to four different attributes.
You can calculate the total monthly sales performance using the following prompt.
Calculate "Total Sales" Matching Name, Month based on Table1
Insert column
Table1의정보를기준으로 Month의값을참고하여각각의실적을계산합니다.
Based on the information in Table1, calculate the performance for each month by referencing the values in the Month column.
Calculate Method W, X, Y, Z. Matching Name, Quarter based on Table1
Insert column
A complex formula is completed to calculate the quarter.
Using the same approach, let’s calculate the total sales by quarter.
Calculate "Quarter sales". Matching Name, Quarter based on Table1
Insert column
Confirm the result
Using the same approach, let’s calculate the semi-annual performance.
Calculate Method W, X, Y, Z. Matching Name, Half year based on Table1
Insert column
Confirm the result
Calculate "Half year sales". Matching Name, Half year based on Table1
Insert column
Calculate Method W, X, Y, Z. Matching Name, Full year based on Table1
Insert column
Calculate "Full year sales". Matching Name, Full year based on Table1.
Insert column
Confirm the result
With a simple prompt, you can see that complex formulas are completed.
It seems that the barrier to using Excel functions has been lowered compared to before.
I will continue to post about effective ways to utilize these features in the future.
The primary purpose of Conditional Access is to prevent company accounts from being accessed on personal devices. However, Conditional Access cannot prevent other company accounts from being accessed on company devices.
Of course, if a company device can access Naver Mail and Google Drive, it means the company is not very concerned about data leakage, and you may disregard this post.
To use M365, you need to open MS-related URLs such as office.com. Tenant Restriction is a concept used to prevent access with other company or personal accounts (such as outlook.com) during this time.
The Policy ID is generated as shown below. Make sure to copy each value and keep them.
To set up a blocking policy for external accounts, configure it as shown below (default settings).
To block all external apps, configure the settings as shown below.
Step 2: Enable tenant restrictions on Windows managed devices (preview)
In the technical documentation, there are guidelines as shown below.
Tenant restrictions V2 on Windows is a partial solution that protects the authentication and data planes for some scenarios. It works on managed Windows devices and does not protect .NET stack, Chrome, or Firefox. The Windows solution provides a temporary solution until general availability of Universal tenant restrictions in Microsoft Entra Global Secure Access (preview).
-> Although the content is difficult to understand, it can be interpreted as indicating that the feature will be provided in a different way in the future. Currently, it is in the preview stage.
Download the ADMX files for the latest Windows GPO policies.
Once installed, the policy files will be saved to the following location.
Depending on the method of policy deployment in AD, copy the PolicyDefinitions folder to the appropriate location with only the necessary languages. (This part of the policy is related to AD, so we will not cover it here.)
Run gpmc.msc on the Domain Controller (DC).
Create a policy in the Organizational Unit (OU) that you will use for testing. Right-click and select "Edit".
There has always been a need to synchronize address books (GAL) between companies in scenarios such as M&A, affiliated companies, or group companies, where using a single tenant is not possible. Traditionally, this was achieved by setting up servers like Microsoft Identity Manager (MIM) on an On-Premise Exchange Server, creating objects between ADs to synchronize address books. Alternatively, it could be implemented through HR integration solutions.
However, adopting MIM or HR integration solutions can be prohibitively expensive and requires specialized knowledge for management, making it very burdensome.
Recently, it has become possible to synchronize address books with Cross-tenant Synchronization. Specifically, this functionality automates the invitation of Guests.
Step 3: Automatically redeem invitations in the target tenant
Trust settings > Automatically redeem invitations with the tenant [Tenant Name] > Check > Save
Step 4: Automatically redeem invitations in the source tenant
Entra Admin Center > External Identities > Cross-tenant access settings
Add organization
Enter Target Tenant ID > Add
Outbound access > Inherited from default
Trust settings > Automatically redeem invitations with the tenant Fabrikam > Check > Save
Step 5: Create a configuration in the source tenant
Cross-tenant synchronization
Configurations > New configuration
Specify the configuration name. > Create
Step 6: Test the connection to the target tenant
Get started
Provisioning Mode: Automatic > Admin Credentials > Tenant Id: Target Tenant ID > Test Connection > Save
Step 7: Define who is in scope for provisioning (Source Tenant)
Provisioning > Settings > Confirm Scope > Sync only assinged users and groups:
This means specifying only certain users or groups to synchronize.
Users and groups-> Add user/group
None Selected
Specify the target. > Select > Assign
Step 9: Review attribute mappings
If, for various reasons, you do not want to synchronize specific attributes, proceed as follows.
Provisioning > Mappings > Provision Microsoft Entra ID Users
You can remove some items except for the required fields.
Step 10: Start the provisioning job
Start provisioning
Target Tenant > Entra admin center > Users > All Users
You can verify that they are added as guests as shown below.
You can also verify this in the Exchange Admin Center as shown below.
You can also verify this in the address book as shown below.
Tenant-to-tenant synchronization settings are configured as follows: In the Source Tenant, set up the Outbound settings, and in the Target Tenant, set up the Inbound settings. This synchronization process results in Guest accounts. Since Guest accounts have Mail User attributes, they can be verified in the address book.