Giving wisely in the time of COVID

This article was originally posted by the FTC. See the original article here.

Thanks to COVID-19, many charitable organizations are faced with greater demand for their services, but less in donations as people have less to give. Now, more than ever, it’s important to make sure that your donation will be used wisely and well. Tomorrow is Giving Tuesday, and as you consider new places to send your donations, now and throughout the holiday season, don’t forget these four tips for giving wisely:

Brought to you by Dr. Ware, Microsoft Office 365 Silver Partner, Charleston SC.

Using outputs() function and JSON Parse to read data from missing dynamic value in a Flow | Power Automate

Using outputs() function and JSON Parse to read data from missing dynamic value in a Flow | Power Automate

I faced this issue lately and not sure if it’s a bug or something I might be missing. But, I couldn’t find anything in Dynamic Content in a Flow and I was not able to pick fields to use further in a Flow.

Not sure how many of you faced this since most fields you need are available in a Flow’s Dynamic Content part.

Scenario – Adaptive Cards for Teams issue

I had this one scenario in particular where the Adaptive Card I created for Microsoft Teams’ User sends back Response but the Dynamic Content doesn’t appear in the steps after the Card Step.

  1. See below that I’ve declared a Variable just to show that the Dynamic Content that should appear after the Adaptive Card.
  2. And if I press the Dynamic Content as shown above in Step #1, and minimize all the content, I don’t see the Teams’ Dynamic Content variables at all
  3. And the Adaptive Card didn’t return the below Outputs

    That’s when we should use outputs() function to read this data.

outputs() function

Here’s how you can use the Parse JSON action and outputs() method to read the Outputs of the step you want and then Parse JSON so that these can be picked as variables/dynamic values in steps following this –

  1. Take Parse JSON action from Data Operations in a Flow
  2. In that in Inputs, you can use Function on the Content field.
  3. And write outputs function as shown below –

    And the complete the function as below

    Explanation:
    MyCard is the name of the step of my AdaptiveCard I used. If the name of you step has spaces like “My User Adaptive Card”, then the function will look like outputs(‘My_User_Adaptive_Card’)[‘body’]

    body is written because if you see in the Outputs originally in the Scenario section above, all results are sent in body field of Outputs.

  4. Now, since you don’t know the Schema, just put a “{}” so that you can Save the step. (This is required)
  5. Run the Flow once and collect the Outputs from this ‘Parse JSON 2’ step as shown above.
    Copy the Outputs
  6. Now, open the same Parse JSON 2 step which you created. And click on Generate from sample
  7. And paste the schema in the box.
  8. Once done, schema will be generated like this.
  9. Now, this Parsed Outputs can be further used which will have the data from the Step which didn’t yield Dynamic Content
    Example, I’ll create a variable to show Dynamic Content that can pop-up
  10. It’ll show all the fields from the Card in the Parse JSON 2 outputs

    And that solves the problem!!

    Original Microsoft Documentation on the same is: https://docs.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference#outputs?WT.mc_id=DX-MVP-5003911

Hope this was helpful.

Here are some more Power Automate / Adaptive Card content you might want to look at –

  1. Adaptive Cards for Outlook Actionable Messages using Power Automate | Power Platform
  2. Make On-Demand Flow to show up in Dynamics 365 | Power Automate
  3. Save Adaptive Cards work using VS Code Extension – Adaptive Cards Studio | Quick Tip
  4. Adaptive Cards for Teams to collect data from users using Power Automate | SharePoint Lists
  5. Task Completion reminder using Flow Bot in Microsoft Teams | Power Automate
  6. Run As context in CDS (Current Environment) Flow Trigger | Power Automate
  7. Using triggerBody() / triggerOutput() to read CDS trigger metadata attributes in a Flow | Power Automate
  8. Run As context in CDS (Current Environment) Flow Trigger | Power Automate
  9. Terminate a Flow with Failed/Cancelled status | Power Automate
  10. Pause a Flow using Delay and Delay Until | Power Automate

Thank you!!

Brought to you by Dr. Ware, Microsoft Office 365 Silver Partner, Charleston SC.

MSIX – Batch Conversion of your App-V 5 Packages

MSIX – Batch Conversion of your App-V 5 Packages

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

 


Hello everyone, this is Ingmar Oosterhoff, a Customer Engineer at Microsoft. In an earlier post I described how to set up an environment for a bulk conversion of  .msi and .exe installers. But what about App-V? In this blog I will explain how easy it is to batch convert your App-V 5 packages to MSIX.


 


Create new MSIX packageCreate new MSIX package


 


The MSIX packaging tool natively converts a single App-V package to MSIX, removing the requirement to re-package them and a feature we will make use of.


Let us start by preparing the host machine. In this case, my laptop. Components needed are contained in the shopping list below.


 


The shopping list: 



  • MSIX Packaging tool 

  • Folder containing App-V packages. 

  • A Signing certificate. 

  • Signtool.exe 

  • Conversion script

  • Xml template


The MSIX Packaging Tool is free and can be installed from the Microsoft Store, so that is an easy step.


 For the folder containing App-V packages, I am going to use my App-V Content Share. However, any folder that contains App-V packages will suffice.


Please keep in mind that User- and/or DeploymentConfig files of the App-V packages will be ignored.


 


Signing Certificate 









I will need to sign the newly created MSIX packages with a certificate, so on my laptop on my C: drive I have created a folder named MSIX. In this folder I have created a folder Signing, this folder contains the certificate, used to sign the packages, and signtool.exe, which is part of the Windows 10 SDK (Software Developer Kit). (Have a look at our earlier post on how to set that up)  Signing.png

 


The Script and xml template










In the MSIX folder I created earlier on the C: drive, I have a folder BatchConversion  from my last post, and created an additional PowerShell file named batch_convert_appv.ps1, and the template file MsixPackagingToolTemplate.xml


scripts.png

 


batch_convert_appv.ps1


The script below was created together with my fellow Customer Engineer Ryan Cobb. This script iterates through the list of App-V packages and converts them to MSIX. All that is needed is to copy the script and xml template from below, modify the following parameters within the script. 



























  • $AppvContentStore


The location containing the App-V packages


  • $PublisherName


Certificate Publisher information must match the signing certificate. Have a look at my earlier post on how to retrieve that


  • $PublisherDisplayName 


The Certificate friendly name


  • $Certificate



The path to the signing certificate




  • $CertificatePassword



The password to use with the certificate



 

$AppvContentStore = "C:repositoryApp-VPackages"
$PublisherName = "CN=Contoso Software (FOR LAB USE ONLY), O=Contoso Corporation, C=US"
$PublisherDisplayName = "Contoso"
$counter = 1
$Certificate = "C:MSIXSigningContosoLab.pfx"
$CertificatePassword = "notreallythecertificatepassword"
# Creating a folder to store the template files used for the conversion
New-Item -Force -Type Directory ([System.IO.Path]::Combine($workingDirectory, "MPT_Templates"))
# Creating a folder to store the MSIX packages
New-Item -Force -Type Directory ([System.IO.Path]::Combine($workingDirectory, "MSIX"))
# get all the App-V packages from the ContentStore
get-childitem $AppvContentStore -recurse | Where-Object { $_.extension -eq ".appv" } | ForEach-Object {
    $Installerpath = $_.FullName
    $filename = $_.BaseName
    write-host "starting the conversion of: " $Installerpath
    # MSIX package name cannot contain spaces, dashes or dots, so replacing these
    $packageStrippedName = $filename -replace 's+', '' -replace '.', '' -replace '-', ''
    $job = "job" + $counter
    
    # get the contents of the template XML
    [String]$newXml = Get-Content -path $PSScriptRootMsixPackagingToolTemplate.xml | Out-String
    # Replace the placeholders with the correct values
    $newXml = $newXml.Replace("[Installer]", "$Installerpath")
    $newXml = $newXml.Replace("[SaveLocation]", "$SaveLocation")
    $newXml = $newXml.Replace("[PackageName]", "$packageStrippedName")
    $newXml = $newXml.Replace("[PackageDisplayName]", "$filename")
    $newXml = $newXml.Replace("[PublisherName]", "$PublisherName")
    $newXml = $newXml.Replace("[PublisherDisplayName]", "$PublisherDisplayName")
    # saving the newly created template
    $newXml | out-File $MPTtemplateMsixPackagingToolTemplate_$job.xml -Encoding Ascii -Force
    # Starting the conversion
    MsixPackagingTool.exe create-package --template "$MPTtemplateMsixPackagingToolTemplate_$job.xml"
    MsixPackagingTool.exe cleanup
    $counter = $counter + 1
}
# App-V packages converted to MSIX. Signing the new MSIX packages
Get-ChildItem $msixFolder | foreach-object {
    $MSIXpackage = $_.FullName
    C:MSIXSigningsigntool.exe sign /a /v /fd SHA256 /f $Certificate /p $CertificatePassword "$MSIXpackage"

 


MsixPackagingToolTemplate.xml


Below the contents of the xml template file


 

<MsixPackagingToolTemplate
    xmlns="http://schemas.microsoft.com/appx/msixpackagingtool/template/2018"
    xmlns:mptv2="http://schemas.microsoft.com/msix/msixpackagingtool/template/1904">
<Installer Path="[Installer]"/>
<SaveLocation PackagePath="[SaveLocation]" />
<PackageInformation
    PackageName="[PackageName]"
    PackageDisplayName="[PackageDisplayName]"
    PublisherName="[PublisherName]"
    PublisherDisplayName="[PublisherDisplayName]"
    Version="1.0.0.0">
</PackageInformation>
</MsixPackagingToolTemplate>

 


Once all the changes have been made and the script saved Batch Conversion can begin.


Open a PowerShell window as an administrator and change location to the Batch Conversion folder where the script is stored.


 


Type .batch_convert_appv.ps1 and press enter


 


The script will convert all the App-V packages to signed MSIX packages and store them in a subfolder named MSIX.


Happy converting! Let me know how it went!


 


Ingmar Oosterhoff, Ryan Cobb, and Matthias Herfurth


 


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.

Microsoft Endpoint DLP Lightning-Round

Microsoft Endpoint DLP Lightning-Round

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

Season’s greetings, my fellow IT Pros of the world!  


 


As you know, M365 is a set of services for business productivity, security and compliance.  Across those services, Microsoft has interwoven an information protection ‘platform,’ which is referred to as Microsoft Information Protection, or MIP. 


 


I was bit confused when I first heard about MIP because it looks/sounds/reads/seems alot like ‘AIP’ (Azure Information Protection).  My first thought was “Oh, we re-named AIP to MIP.”  However, that’s not right – AIP and MIP are two different types of things – but both are related to information protection.



  • AIP is a ‘thing.’  A product you can purchase, deploy and setup.  There is a Windows client and the service has numerous capabilities to label and protect information.  You should be aware that AIP end of life is planned for March 2012.

  • MIP is not a thing – it’s a collective set of information protection capabilities (including most of what AIP can do) across other things.  It’s not a product, per se.  There is a Windows client but there are also capabilities built-in to the Office desktop/web/mobile apps, as well as the M365 services (think not only Exchange Online, SharePoint Online/OneDrive for Business but also Teams, PowerBI, MCAS, etc.).  Further, these MIP capabilities are ever-expanding – there are ideas afoot to extend this into Azure and even 3rd party services.       


 


It is Thanksgiving here in the US and I spent some quality time in my lab over the holiday, going through an “end-to-end scenario” with a part of that MIP platform – our recently-released Endpoint DLP .


 


I was moved by how cool this capability is, so I thought I’d share some screenshots/pictures of what moved me – some ‘moving pictures,’ if you will (a not-so-subtle reference to one of my favorite bands, Rush, their great album – Moving Pictures – and a sad-nod to the departed drummer/lyricist Neil Peart). 



  • Consider this post ‘inspirational’ … it is not intended to be all-inclusive of configuring EDLP.  Use the docs to perform all the steps.  For example, I don’t cover device on-boarding at all here – but it needs to be done.


Let’s roll …


 


Portal/service settings:



  • Select a Sensitive Information Type

    • From the Data Classification page in the M365 Compliance portal, select one of the built-in Sensitive Information Types (SIT) or create a ‘custom’ one to use for the DLP policy.  Here, I created one that has a keyword string of ‘Gizmo’




image.png


image.png


 


  • Create a Sensitivity Label

    • From the Information Protection page in the M365 Compliance portal, I created a Sensitivity Label that automatically labels files and emails that have 3 or more instances of the “Gizmo” Sensitive Information Type




image.png


image.png


 


  • Configure Endpoint DLP Settings

    • From the Data Loss Prevention page in the M365 Compliance portal, I selected the Endpoint DLP Settings tab and entered a few “service domains” which I set to “Block.”  This will block uploads from the Edge browser (which is enlightened for EDLP – another feature of Edge) to both G-drive and OneDrive personal cloud services.

      • The keen eye will notice I also added Firefox as an ‘unallowed browser’ – this doesn’t block the use of the browser full-stop; rather, it only blocks labeled/sensitive files from being accessed from Firefox.






image.png


 



  • Create a DLP Policy

    • From the same Data Loss Prevention page in the M365 Compliance portal, on the Policies tab, I created a DLP Policy, scoped to “Devices,” that is triggered by the “Gizmo” Sensitivity Label




image.png


image.png


image.png


 


  • The DLP Policy has the below restrictions defined and I also enabled “User notifications” (with custom text for the notification email subject/body) and “Incident reports” with admin email alerts:


image.png


Admin Recap



  • I created a custom Sensitive Information Type that is keyed on the text string ‘Gizmo’

  • I created a Sensitivity Label that looks for 3+ instances of that “Gizmo” Sensitive Info Type in a file or email and automatically applies that label to the file

  • I configured Endpoint DLP Settings to block un-managed browsers (Firefox in this case) and to restrict several activities, including: copy/paste, print, upload to specified blocked cloud services, and saving the file to a USB drive

  • I created a DLP Policy that applies to Devices and triggers on files or emails with the “Gizmo” Sensitivity Label


End-user Experience


What does this look like for an end user?  Let’s take a look…



  • First, the user first creates and saves a Word doc w/ 3 (or more) instances of the ‘Gizmo’ text string.  

    • Once the file is labeled (manually or, in the case of this specific Label, automatically), the Sensitivity Label settings apply to the file:

      • The yellow ‘Policy Tip’ banner informs the user

      • The visual markings apply to the file – a GIZMO! header and watermark

      • The status bar at the bottom shows the Label name – Gizmo in this case






image.png



  • Now, the user does a ‘Select all’ on the text and a Copy … at this point, the Copy action is NOT blocked.  This is because the EDLP system allows the content to be copied/pasted into another file within the same process (i.e. another Word file in this case).

    • However, the user then launches Notepad … at that point, the copy/clipboard action IS blocked – and a UI ‘toast’ is popped.  This prevents the content from being copied out of process (i.e. into PowerPoint, or Notepad in this case).




image.png



  • The user now tries to print the file … that, too, is met with a block and a Toast:


image.png



  • So, the user tries to upload to a personal G-Drive via Edge … Nope.


image.png



  • So, the user tries to upload to a personal OneDrive via Edge … Negatory.


image.png



  • Not easily deterred, the user tries to save the file to a USB stick … care to guess if it worked? 


image.png



  • Finally, our user tries to dodge the DLP rule by using Firefox to upload the content to G-Drive… “Would you like butter with that toast?”


image.png


A few FAQs:



  • “Does this only work on Windows?”

    1.  Yes, today, this is only possible on Windows 10 but since this capability leverages aspects of the Microsoft Defender for Endpoint (MDE) client, which is cross-platform, other platforms are being explored (i.e. MacOS).




 



  • “Do we need to be using Microsoft Defender for Endpoint for PC protection?  Today, we use a 3rd party product for endpoint protection.” 

    1. No, you don’t need to be running MDE actively on your endpoints to be able to use EDLP, you can on-board the devices into the EDLP service without on-boarding them into MDE.




 So, there you have it folks … a quick run through of Microsoft Endpoint DLP. 


 


Hopefully, this post helped clarify the difference between AIP and MIP, illustrated how several components of the MIP platform can be combined to provide effective endpoint DLP controls – and I hope the pictures “moved” you enough to get you started with this in your environment.


 


Cheers and Happy Holidays!


 


Hilde


 


 

Experiencing Latency and Data Loss issue in Azure Portal for Many Data Types – 11/28 – Investigating

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

Initial Update: Saturday, 28 November 2020 05:02 UTC

We are aware of issues within Application Insights and are actively investigating. Due to power outage in data center, some customers may experience delayed or missed Log Search Alerts, Latency and Data Loss in South Africa North region.
  • Work Around: none
  • Next Update: Before 11/28 17:30 UTC
We are working hard to resolve this issue and apologize for any inconvenience.
-Vyom