Multi-Tenant B2B Sync with MIM Graph Connector

Multi-Tenant B2B Sync with MIM Graph Connector

This article is contributed. See the original author and article here.

 


Hello everyone, this is David Loder again, sporting Microsoft’s new Customer Engineer title, but still a Hybrid Identity engineer from Detroit. Over the past year I’ve seen an uptick in requests from customers looking to modernize their GALSync solution. Either they’re wanting to control use of SharePoint and Teams B2B capabilities or looking to enable a GALSync with a cloud-only organization. And they’re asking for assistance and guidance that I hope to provide today.


 


Before I get started on how Microsoft Identity Manger (MIM) 2016 can help provide the basis for a supported GALSync solution, I want to ensure everyone knows that Microsoft provides a managed service SaaS offering to help with any multi-tenant syncing scenarios. It’s called Active Directory Synchronization Service (ADSS) and does all the back-end tenant syncing automagically. The great benefit with ADSS is that it’s a fully supported solution.  MIM as a product is fully supported, but as has always been the case, any customizations put into it are best-effort support. Reach out to your account team if you want more information about ADSS. Now on with the MIM discussion.


 


Historically, Microsoft has provided a supported GALSync solution in our on-premises sync engine, MIM. Documentation on the GALSync configuration was first provided back in the Microsoft Identity Integration Server (MIIS) 2003 timeframe. Additional documentation is available at the GALSync Resources Wiki. Despite its age, that guidance still holds true today. But it is limited to an Active Directory to Active Directory user to contact sync design.


 


Today, we offer the Microsoft Graph Connector. It provides the ability to connect to an Azure AD tenant, and to manage B2B invitations. However, it is not a drop-in replacement for GALSync. We can get there, but we need to fill in some missing components.


 


There are many scenarios that Graph Connector could satisfy, and they can get increasingly difficult. For this blog I’ll focus on the simplest scenario and then discuss what considerations one would have in order to move to more complex scenarios.


 


In a classic GALSync solution, we sync users from a partner AD to become contacts in our home AD. For this Azure AD replacement, we want to sync users from a partner tenant, and make them B2B users in our home tenant. This assumes that you’ve moved past the point where you need identical GALs in both on-premises Exchange and Exchange Online. Most of the customers I work with have gotten to that point. Maybe they still have some service account mailboxes left to move, but all humans who need to view a GAL have been moved to Exchange Online. That simplifies the requirements as there’s no longer a need for creating on-premises objects for Exchange to use.


 


The first component we need is MIM 2016. If you are an Azure AD Premium customer, MIM is still fully supported and still available for download. Otherwise, MIM is in extended support through 2026. To keep our infrastructure footprint small, this solution will use only a Sync Service install, and will not use the Portal or any declarative provisioning.


 


With a base MIM install in place we’re almost ready to make a Graph connection to our first tenant. But before we do so, we need to have a discussion of scope, because scope is the major factor in determining the complexity of solution. When talking about scope, I’m going to be very exact in terms of objects and attributes as much of our terminology in this space is vague and subject to perspective to understand meaning.


 


“We want users from a partner tenant….” Starting with this phrase, we need to break it down to a scoped object and attribute definition. The Graph Connector exposes user and contact (technically orgContact) object classes. We will only want to bring in users from the partner tenant. Except the user object class covers both internal and external (a.k.a. B2B) users. Typically, we only want to bring in the internal users from the partner tenant. We can tell the difference between them because external users have a creationType attribute equal to ‘Invitation’, whereas internal users have a null creationType. The other possible choice one might consider is the userType attribute with values of either ‘Guest’ or ‘Member’. But I think that is a poor choice. Internal users are Member by default and external users are Guest by default, but userType can be changed for both. Guest vs. Member only controls one’s default visibility to certain workloads such as SharePoint or Azure AD itself. Guest is sometimes incorrectly used interchangeably with B2B, but those two terms are not equivalent.


 


“Make B2B users in our home tenant….” Given the previous discussion, this phrase is now rather easy to scope. We’ll be looking at user objects with creationType=’Invitation’.


 


With our purposefully simplistic scope defined, let’s build the first Graph connection to the partner tenant. Install the Graph Connector on the MIM system. There have been lots of fixes recently so be sure to use the current version.


 


Start with creating a new Graph (Microsoft) connector.


PartnerTenantMA.png


 


Provide registered app credentials to connect to the partner tenant. The app registration needs at least User.Read.All and Directory.Read.All, with Admin consent. This is an example from one of my temporary demo tenants.


PartnerTenantConnectivity.png


 


On the Schema 1 page, keep the Add objects filter unchecked. Unfortunately, we cannot use the filtering capability to return only the internal users where creationType is null. The Graph API provides more advanced filtering capabilities, but it requires a Header value to be set, which the Graph Connector does not currently expose as a configurable setting.


 


On the Select Object Types page check user.


 


On the Select Attributes page, let’s select a minimum number of attributes to enable decent GAL functionality as part of the B2B sync. Additional attributes can be added if the GAL needs to be more fully populated. Select creationType, displayName, givenName, id, mail, showInAddressList, and surname.


PartnerTenantAttributes.png


 


The anchor attribute on the Configure Anchors page will automatically be set to id.


 


On the Configure Connector Filter page, I will keep this example simple by using a declared filter of creationType Is present. This will filter out any external users that may happen to already exist in the partner tenant. But this filtering will come at the expense of increased Delta Sync times due to having to process each filtered disconnector every sync cycle.


PartnerTenantFilter.png


 


For Configure Join and Projection Rules, we’ll join on id first, mail second, otherwise project as a person.


PartnerTenantJoinAndProjection.png


 


This is the inbound partner tenant user flow, so provide a direct inbound flow for each attribute. Several of the selected attributes are not default metaverse attributes, so the metaverse schema will need to be extended to account for these attributes.


PartnerTenantAttributeFlow.png


 


Leave the Configure Deprovisioning page at the default of ‘Make them disconnectors’ and Configure Extensions page will also be left at its default of empty.


 


Create the Full Import and Full Sync run profiles. Execute them to confirm that the partner tenant users are projected into the metaverse. Also create the Delta Import and Delta Sync run profiles. We won’t use them now, but will need them later. I’ve gotten spoiled from AADC creating run profiles by default.


 


Now that the inbound side from the partner tenant is complete, let’s create the outbound side for the home tenant. The setup will be similar to the inbound side, but with some minor changes.


 


The App Registration in the home tenant will require the Directory.Read.All and User.ReadWrite.All permissions. There is a User.Invite.All permission, but since we need to sync GAL attributes after the invite, that permission does not provide enough access for this scenario.


For the Schema 1 page, we’ll need to leave the Add objects filter checkbox uncheck again. Even though we could technically set a graph filter of creationType eq ‘Invitation’, using a filter breaks Delta Imports for the Graph Connector (with a no-start-ma error). We will have to continue to use MIM filtering the keep the scope correct since Delta Imports are very important for most of my customers.


 


On the Global Parameters page set the Invite redirect URL to https://myapps.microsoft.com/?tenantid=GUIDValue. Leave the send mail checkbox unchecked unless you want to start automatically spamming all your invitees.


HomeTenantGlobal.png


 


On the Select Attributes page, include userPrincipalName and userType in addition to the list of attributes from the inbound side. We’re selecting UPN just so we can see the full results of the invitation process, not because we’ll be doing any syncing of that attribute.


For the Configure Connector Filter page, we reverse it from the inbound partner tenant setting and use a filter of creationType Is not present.


 


On the Configure Join and Projection Rules page, only add the Join Rule for mail. There should be no Projection Rule as we want all the external users to project into the metaverse from the inbound partner tenant.


 


For the Configure Attribute Flow page, add a direct export (allowing nulls) for displayName, givenName, mail, showInAddressList and surname. Add a constant export of Guest for userType. While an external user is typically Guest by default, the Graph Connector defaults to Member, so we need to override that. Also add a constant export of Invitation for creationType. For the creationType, we’re flowing that just to satisfy the MA filter, not that it affects the invitation process.


HomeTenantAttributeFlow.png


 


On the Configure Deprovisioning page, change the selection to Stage a delete on the object for the next export run.


 


Create and run the Full Import and Full Sync run profiles. If there are any matching mail values for existing external users those should join. Otherwise, the existing external users will show up as disconnectors. Also create the Delta Import, Delta Sync and Export run profiles. We won’t use them now, but will need them later.


 


Finally, we need a small amount of provisioning code to provision the external users from the metaverse into the home tenant MA. From the Tools > Options… menu check the Enable metaverse rules extension checkbox. Then click the Create Rules Extension Project… button. I’ll provide sample code for Visual C#, so choose that selection and the version of Visual Studio to use to compile the project.


 


This is a sample implementation for the IMVSynchronization.Provision method.


 


void IMVSynchronization.Provision (MVEntry mventry)


{


    string container = “OBJECT=user”;


    string rdn = “CN=” + Guid.NewGuid().ToString();


    ConnectedMA HomeTenantMA = mventry.ConnectedMAs[“HomeTenant”];


    ReferenceValue dn = HomeTenantMA.EscapeDNComponent(rdn).Concat(container);


    int numConnectors = HomeTenantMA.Connectors.Count;


 


    // If there is no connector present, create a new connector.


    if (numConnectors == 0)


    {


        CSEntry csentry = HomeTenantMA.Connectors.StartNewConnector(“user”);


        csentry.DN = dn;


        csentry[“id”].StringValue = Guid.NewGuid().ToString();


        csentry.CommitNewConnector();


    }


    else if (numConnectors == 1)


    {


        //Do nothing, no rename is needed


    }


    else


    {


        throw (new UnexpectedDataException(“multiple connectors:” + numConnectors.ToString()));


    }


}     


 


A few things to note in this code. We need the name of the home tenant MA as the connected MA we are managing. We also set a random GUID-based DN and id in order to successfully export the invitation, but those values will be replaced by the real Azure AD values during the first confirming import.


 


Build the solution in Visual Studio and make sure the extension DLL gets copied to the Microsoft Forefront Identity Manager2010Synchronization ServiceExtensions folder. Back in the Options dialog, ensure the DLL that was just created is selected for the Rules extension name, and check the Enable Provisioning Rules Extension checkbox.


Options.png


 


To begin with a small test, pick a sample user from the partner tenant MA and commit a Full Sync Preview against them. That should generate a pending export in the home tenant MA.


HomeTenantPendingExport.png


 


The small piece of magic with the Graph Connector is that if a user has a pending add with mail but no UPN, they will go through the invitation process to make them an external user, rather than being created as an internal user. We can see the pending export with the temporary DN and id, the GALSync attributes we wired up, and our constant userType of Guest. This test user has an OnMicrosoft.com mail address in the partner tenant as I have not added a custom domain to that tenant. The actual mail value is ultimately immaterial so long as it doesn’t already belong to the destination tenant.


 


Run the Export, followed by a confirming Delta Import.


HomeTenantConfirmingImport.png


 


We see that the user got successfully invited, got its real DN and id and has all the attributes we set. Notice the UPN got automatically set by AAD in the expected format of mail#EXT#@tenant. It also was given a default setting of showInAddressList = false. By default, invited external users are hidden from the GAL.


 


Complete a second delta sync cycle (Delta Import, Delta Sync, Export) and showInAddressList should get set to its synced value. For this example user, that would be a null value.


HomeTenantPendingExport2.png


 


After exporting the updated showInAddressList value, we can confirm that our GALSync is functional. Log in to Outlook on the web in the home tenant, open the People app and select the All Users GAL. We should see our newly synced user present in the GAL.


HomeTenantGAL.png


 


Finally, to complete the deprovisioning aspect of the GALSync, configure the Object Deletion Rule for the person object class to delete the metaverse object when the partner tenant connector is disconnected. This way, a deletion of the user from the partner tenant will cascade a delete of the external B2B user to our home tenant.


 


That’s the end of the setup for GALSync from a single source to a single destination tenant.


 


As I alluded to at the beginning, more complex setups are possible. Consider a bi-directional GALSync where the partner tenant also needs the users from our home tenant. One way to keep the architecture simple is to maintain one MIM instance per tenant; we simply duplicate this setup in the opposite direction. This is identical to the AADC architecture where one AADC is needed for each tenant. It allows the provisioning code to know the tenant for which it is responsible, cleanly separates inbound from outbound flows and causes no precedence problems. It also allows the partner to control the app registration which possesses write access into their tenant.


 


Or consider a full-mesh setup where the tenants are all peers in one org that decided to segment their tenants for some reason. We could design a single MIM solution that manages every tenant. We could do two connectors to each tenant to allow us to separate internal user from external and continue to manage the flows separately. We’d only have to prevent same-tenant provisioning in the provisioning code. I could also see a solution that uses only one connector to each tenant. We could come up with a mechanism to track authority of address spaces, so we know which source tenant is responsible for each user and use that knowledge to then create the external B2B users in the other tenants.


 


For larger deployments where we might have concern about the number of disconnectors and corresponding delta sync times, there are a few advanced techniques we could implement to alleviate that concern. We could project and terminate objects in the metaverse instead of keeping them as disconnectors. Or we could replace the Graph Connector with a PowerShell Connector and take care of all the Graph logic ourselves, avoiding the scenarios where the Graph Connector has limitations.


 


Hopefully, this has shed some light on considerations for a modern GALSync solution.


 


Thanks for spending a little bit of your time with me.


-Dave


 


Disclaimer: The sample scripts are not supported under any Microsoft standard support program or service. The sample scripts are provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample scripts and documentation remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the scripts be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample scripts or documentation, even if Microsoft has been advised of the possibility of such damages.

[Event Recap] D635 Mixed Reality @ the Microsoft Business Applications Summit (MBAS)

[Event Recap] D635 Mixed Reality @ the Microsoft Business Applications Summit (MBAS)

This article is contributed. See the original author and article here.

We hope you were able to attend the Mixed Reality Business Apps sessions at the Microsoft Business Applications Summit (MBAS)! If you missed the session being played live, no worries! Read on for a recap of Mixed Reality Business Applications including Dynamics 365 Remote Assist and Guides at MBAS. You can also access the full MBAS session catalog here


Dynamics 365 Remote Assist


 


Saving Lives with Mixed Reality BizApps: Dynamics 365 Remote Assist on HoloLens 2 in Healthcare and Life Sciences


Mixed reality BizApps have truly transformed how organizations and industries across the board operate. This session covered how customers in the Healthcare and BioTech/Pharmaceutical sectors experienced the life-saving impact of mixed reality technologies like Dynamics 365 Remote Assist on HoloLens 2.


 


olucrisia_0-1621624764316.png


 


Highlights of this session included:



  • Jenn Roth, Director of Healthcare Industry Product Marketing at Microsoft moderated the conversation

  • Panelists shared how using mixed reality in Healthcare and Life Sciences has helped empower their organizations: 

    • Katie Glerum, a Global Health Program Manager, Department of Surgery at Mount Sinai Health System shared about her experience leveraging Remote Assist with their partner hospital in Eastern Uganda to help provide safe and affordable surgery. She explained how Mt Sinai Hospital’s Department of Surgery is using Microsoft technologies such as Dynamics 365 Remote Assist on HoloLens and Microsoft Teams to conduct critical, life-saving surgery and enabling real-time collaboration and knowledge sharing between New York City and Uganda. Read the full story here

    • Ivan Lumala, Chief Technology Officer of Tellistic Technology Services based in East Africa supported Mt Sinai Hospital Department of Surgery in implementing Dynamics 365 Remote Assist on HoloLens 2 at the Kyabirwa Surgical Center in Eastern Uganda. Ivan shared another example of how mixed reality technologies help healthcare organizations scale their operations:  Dynamics 365 Remote Assist enables surgical students to follow along remotely by watching live surgeries in real-time, projected on a large screen. Additionally, Ivan shares how Dynamics 365 Remote Assist helped enable remote collaboration between surgeons and clinicians that helped provide business continuity across their organization during the global pandemic.

    • Ian Curtinsmith, Chief Information Officer at Medlab Clinical, an ASX-listed biotech company that conducts research and product development to help address ailments such as chronic kidney disease, obesity, depression, and pain management, presented the benefits of Dynamics 365 Remote Assist in BioTech, such as enabling doctors to collaborate remotely using 3D annotations in real-time with technicians in labs across several countries such as the US and Australia. He also shared about how it helped Medlab Clinical speed their products’ time to market. Read the full story here.  






Dynamics 365 Guides + Azure Object Anchors




Dynamics 365 Guides  was also highlighted in several sessions at the Microsoft Business Applications Summit 2021 where the latest new feature, Azure Object Anchors (AOA) was introduced. AOA provides  Guides users with more accurate holographic alignment and an improved anchoring process that empowers employees to walk up and work. 


 


Highlights include: 



  • Leverage an existing 3D model of the object and assign to a guide with a simple drag and drop


Picture1.png



  • Azure Object Anchors integrated with Guides enables object detection and automatic holographic alignment. The HoloLens can detect objects in the real-world, seamlessly launching operators right into a guide.  


Picture2.png


 



  • In the featured session titled, “Closing the Skills Gap with Dynamics 365 Guides,” Kruger Paper North America  shared how the 120-year-old manufacturing company used mixed reality to invest in employee learning and development to address its growing skills gap.  


Picture3.png


 



  • In the “Ask the Expert: Closing the skills gap with Dynamics 365 Guides” session, attendees joined to continue the conversation and go in-depth on new Guides capabilities including spatial triggers, branching, and Azure Object Anchors. 


 




That’s a wrap! We hope you enjoyed the MBAS experience as much as we did – see you next year!


 




In case you missed it, watch the MR Business Applications: Remote Assist + Guides sessions here:



Other relevant resources:



#MBAS #MRBizApps



Walkthrough for AIP labelByCustomProperties Advanced Feature

This article is contributed. See the original author and article here.

In the Information Protection world there are several technologies customers could choose to deploy. Ultimately, decisions will also be made to migrate away from them to other vendor products. When this happens, customers generally want to maintain a mapping from the older labels to newer labels, ensuring that they can easily apply new labels without the need for additional manual work.


 


This document will walk through how to leverage the labelByCustomProperties advanced feature for the cmdlet Set-Label included in the Security and Compliance PowerShell. This will enable us to create a mapping from one label to another, and is useful for use cases of moving from another labeling technology to Sensitivity labels, Secure Islands to Sensitivity labels, Sensitivity labels in Commercial tenants to Sensitivity labels in GCCH tenant, and much more.


 


Please keep in mind that the mapping is limited to labeling only, meaning that protection capabilities cannot be maintained during this mapping. There is also a potential for performance issues regarding its use with labeled emails.


 



  1. Connect to the Security and Compliance Center (SCC) PowerShell. This enables you to leverage many of the advanced settings for sensitivity labeling. Ensure that the Module ExchangeOnlineManagement is installed. You can either use Windows PowerShell in admin mode and run the following command:


 


 


 


 

Install-Module -Name ExchangeOnlineManagement

 


 


 


 


 


Or https://www.powershellgallery.com/packages/ExchangeOnlineManagement/2.0.5 to manually download the module and then use it. After doing this, go ahead and import the module using the following command:


 


 


 


 

Import-Module ExchangeOnlineManagement

 


 


 


 


 


2. Connect to the PowerShell for your organization. You can specifically use this for organizations in Commercial M365 and M365 GCC:


 


 


 


 

Connect-IPPSSession -UserPrincipalName navin@contoso.com

 


 


 


 


 


Make sure to change the UPN that is tailored for your use case. For other endpoints such as GCCH organizations and more see here


 


3. Now you will be able to use the advanced settings by leveraging the SCC PowerShell. We will start by demonstrating one mapping of an AIP label in tenant A to an AIP label in tenant B. The example is demonstrated below:


 


 

Set-Label -Identity YOURTENANTBLABELNAME -AdvancedSettings @{labelByCustomProperties="description of rule,MSIP_Label_fc45349f-e0b8-4318-8dac-6a12a9c611fd_Enabled,true"}  

 


 


The advanced setting key is defined as labelByCustomProperties and the value is entered using the following format:


 


“Description of rule, Label Property, metadata”


 


To unpack the example some more, we start by using Set-Label as the command to set up the mapping of one label to another. To create more mappings, you create more instances of this Set-Label command.


 


For the -Identity parameter, you want to input what the resulting label name should be. I.e. if you were taking a document in Tenant A with “x” label and wanted it to display “y” label in Tenant B, you would want to input “y” for the -Identity parameter.


 


The -AdvancedSettings parameter has the key and value described earlier but let’s break down the value format further. For “Description of rule” you can input any string that would help you describe the mapping. For “Label Property” this would be the custom metadata property specific to our use case. In the example above we have an MSIP_Label that is indicative of the label from Tenant A which is “x”. Finally, we have the “metadata” and here we used “true” in the example to denote the scenario when this label metadata is present in Tenant B.


 


Thus, this label essentially allows us to go from one label in a tenant to another label in another tenant. There are other potential permutations of this, but we hope you understand how you can use this for your own use cases moving forward.

Video Tutorial: Endpoint Protection Part 5 – Windows Defender Advanced Threat Protection Policies

This article is contributed. See the original author and article here.

Hello everyone, here is part 5 of a series focusing on Endpoint Protection integration with Configuration Manager.  This series is recorded by Steve Rachui, a Microsoft principal premier field engineer.


 


This tutorial focuses on how Configuration Manager can be used to facilitate onboarding of a Windows device into Defender Advanced Threat Protection.  Steve also discusses what Defender Advanced Threat Protection is and how it is impactful for maintaining security in your enterprise.


Next in the series Steve focuses on how Configuration Manager integrates with Windows Defender Exploit Guard and can be used to deliver Exploit Guard settings. 


Posts in the series



Go straight to the playlist

Learning Kusto Query Language – A tool for performance test engineers

This article is contributed. See the original author and article here.

Video series by Bob Taylor, intro by Edwin Hernandez


 


Hello everyone! This time we bring you a series of video tutorials by Bob Taylor, who is a member of the Microsoft’s Performance & Quality Services Team. He recently completed this video series about Kusto Query Language, and this is a great opportunity for us to compile it into a single place for you along with some introductory information.


 


What is Kusto Query Language (KQL)?


You may be asking yourself: What is Kusto? What is KQL? And why would this matter for a Quality and Performance Test Blog? Well, Kusto itself was the internal code name for Azure Data Explorer, and Kusto Query Language (KQL) is the primary means of interaction with it. KQL allows you to send data queries, process data, and return the results of this processing without modifying the data or metadata. Now, why would this matter for Test Engineers? Let’s first define what Azure Data Explorer can do for you:


 


Azure Data Explorer


Azure Data Explorer is a service that allows you to store log and telemetry data. It can handle many data streams emitted by several entities concurrently (websites, LOB apps, CRMs, Social data sources, IoT devices, Cloud components, etc.). This data is collected and stored. Data Explorer then provides a way for you to analyze this large volume of data, perform complex queries and drill down into specific events.


 


Therefore, Azure Data Explorer provides a great way for you to perform diagnostics, monitoring, and reporting of all components of your application and environment. This kind of analysis is key for performance testing and application optimization.


 


Kusto Query Language(KQL)


KQL is a read-only query language. The syntax is similar to SQL, but it was created specifically to work with large datasets in Azure. Since it’s read-only there are no update or delete clauses. It is based on relational management systems, which use schema entities, and is organized into a hierarchy like SQL’s databases tables and columns.


 


Other Azure Services


KQL is the primary mean to query data from Azure Data Explorer; however, it is also used to interact with the following inter-related Azure services:



  • Application Insights

  • Log Analytics

  • Azure Monitor, and again:

  • Azure Data Explorer


 


Microsoft documentation


If you want to learn more from the official Microsoft documentation, make sure to check out the following:



 


 


Bob Taylor’s Video Series


If you are done leafing through the official documentation above and want a much more detailed training. Bob created a series of video tutorials where he goes into detail on KQL, from the fundamentals to complex functions, passing through the most common operators:


 











































































































1



What is KQL and why should I care?



Link to video



2



The Editors or how do I write and execute KQL queries



Link to video



3



Our first KQL operators



Link to video



4



Wait where can I consume Kusto data?



Link to video



5



Summarize



Link to video



6



Project, extend, and explain



Link to video



7



Distinct, sample-distinct, top, and top-nested



Link to video



8



Scalar functions part 1



Link to video



9



More scalar operators!



Link to video



10



Fun with datetime, timespan and date_part



Link to video



11



Conditional logic and strings



Link to video



12



Advanced aggregation operators



Link to video



13



Let, join, and union



Link to video



14



Datatable, prev, next, row_cumsum, and materialize



Link to video



15



Range, make-series



Link to video



16



Series_decompose family of functions



Link to video



17



The remaining time series functions



Link to video



18



Machine Learning Plugins



Link to video



19



User Analytics Plug-ins



Link to video



20



Last on KQL – charting



Link to video




 


In Conclusion…


If you want to monitor and diagnose the performance of your application in Azure, KQL is a key resource. It is a good skill to have in your portfolio, especially if you are involved in load testing. Please make sure to check our other article about a Collection of Useful Tool for Performance Test Engineers, and please leave any questions in the comments section.


 


Thanks!


 


 

Is security a blocker for IoT? Let's discuss!

This article is contributed. See the original author and article here.

The Azure Sphere Team is doing Microsoft Build 2021 a little differently this year: we want to talk about blockers to success. We understand that security can sometimes be a blocker: either the lack of security prohibits connectivity and stymies opportunity; or stringent security limits innovation and reduces functionality. Either way, you might not be getting the value you want out of IoT technologies. Let’s talk about those needs and let’s go deep:


 


Join our customer roundtables for deep discussions with our IoT and security experts and let’s really examine the barriers to success for your industry, your line of business, and your role. Together we can identify the investments at the engineering level across IoT hardware, software, services, and security that will unlock productivity and opportunity for you and your industry.



  • We’ll talk about the developer experience and how we can improve the processes and time it takes to build secured IoT solutions from edge to cloud.

  • We’ll talk about how building the next generation of IoT devices and experiences strains the security available now and what customers have taught us needs to change.


Build is open to everyone, and you can still register here: Microsoft Build 2021


 


Add your voice, insight, and expertise to Build 2021. Come find us:



You’ll want to RSVP for the roundtables right away—seats are limited—it’s the best way for you to make direct connections with product team members.


 


There is IoT content for everyone at Build: check out our lineup!  We look forward to seeing you tomorrow and throughout the week!