Varför nyttjandedata är viktigt | Att flytta till Office 365 innebär inte bara att man flyttar en massa data till någon annans datacenter. Det är en förändring till ett modernare arbetssätt med fantastiska möjligheter kring samarbete både internt och externt, informationsspridning i ljud och bild, smarta hjälpmedel som drivs av maskininlärning och AI, intelligenta säkerhetslösningar som pratar med varandra, och mycket mer.

Att köpa en Office 365-licens till en användare innebär att den får tillgång till så mycket mer än bara E-post och ett intranät. För att driva på adoption och se till att användarna lär sig att nyttja dom nya möjligheterna på bästa sätt så måste man mäta hur de olika deltjänsterna används och hur mycket. Det är här nyttjandedata kommer in.
Microsoft har ett antal mätpunkter för varje deltjänst som man kan titta på genom rapporterna i adminportalen för Office 365/Microsoft 365. Microsoft sparar i regel data i 180 dagar. Det går också att läsa in data till Power BI med Microsoft 365 Usage Analytcs (tidigare Office 365 Adoption Content Pack).

4990-1-1672833273

Dessa två verktyg fungerar bra om man vill komma igång med adoption och få en överblick på hur nuläget ser ut och vilka effekter t.ex. en utbildning kan ha på nyttjandet av en tjänst. Vill man ta det till nästa nivå så finns det oändliga möjligheter att skräddarsy detta genom att läsa ut nyttjandedata och hantera den i egna skript och applikationer.

Hämta Office 365-nyttjandedata med Microsoft Graph

I Office 365/Microsoft 365-adminportalen så kan man exportera ut nyttjandedata till CSV-filer. Den CSV-data man får ut i portalen är densamma som man får ut med hjälp av Microsoft Graph (Microsoft använder antagligen också Graph). Jag som lever och andas PowerShell väljer såklart att jobba mot Microsoft Graph genom PowerShell-skript men det går lika bra att göra det från en .NET-applikation eller vad som helst som kan prata med ett REST API.

Med några smarta trick i PowerShell så kan vi omvandla CSV-datat som Graph returnerar till vanliga objekt i PowerShell. Sedan kan vi jobba med objekten som vi brukar i PowerShell, dvs Format-Table, Format-List, Out-GridView eller varför inte spara ner det till en SQL-databas för att jobba mot med Power BI.

Registrera en app för Microsoft Graph i Registrera en app för Microsoft Graph i Azure AD

För att vårt PowerShell-skript ska kunna ansluta till Graph och hämta ut datat så måste vi först registrera en app i Azure AD och tilldela behörigheter att läsa nyttjandedata. Vi gör detta via Azure Portal.

Gå in under Azure Active Directory och välj sedan App registrations I menyn.

4990-2-1672833276

Skapa en ny app och fyll i uppgifterna enligt nedan.

4990-3-1672833276

Notera Application ID då vi kommer avända det i skriptet.

4990-4-1672833277

Öppna upp egenskaperna för den nya appen och gå in under Keys. Skapa en ny nyckel genom att skriva in en Description och spara.

Notera nyckeln som dyker upp under Value (du kan bara se den en gång så spara undan den).

4990-5-1672833277

Klicka sedan på Required permissions och sedan på Add.

4990-6-1672833279

Välj Microsoft Graph under API.

4990-7-1672833280

Välj Read all usage reports under Select permissions och spara.

4990-8-1672833282

Godkänn till sist behörigheterna som vi har lagt till med Grant permissions. Detta måste göras av en administratör så om du saknar den behörigheten i Azure AD får du be en administratör gå in och godkänna detta.

4990-9-1672833284

PowerShell-funktion för att ansluta till Microsoft Graph

Följande funktion är generell och används för att ansluta till Graph och sedan anropa en URL som kommer returnera ett svar.

Den funktionen kommer vi att anropa i vår Get-UsageReportData funktion nedan. Get-UsageReportData är också den funktion som tar hand om rådatat som returneras och filtrerar ut CSV-innehållet samt konverterar det till vanliga PowerShell-objekt. Notera tricket där vi gör en split på ”\?\?\?” för att klippa bort den rådata som kommer innan CSV-delen i svaret från Microsoft Graph.

function Get-GraphApi {
 param (
 [parameter(Mandatory=$true)]
 $ClientID,

[parameter(Mandatory=$true)]
 $ClientSecret,

[parameter(Mandatory=$true)]
 $TenantName,

[parameter(Mandatory=$true)]
 $Url
 )


 # Graph API URLs.
 $LoginUrl = "https://login.microsoft.com"
 $RresourceUrl = "https://graph.microsoft.com"
 
 
 # Compose REST request.
 $Body = @{ grant_type = "client_credentials"; resource = $RresourceUrl; client_id = $ClientID; client_secret = $ClientSecret }
 $OAuth = Invoke-RestMethod -Method Post -Uri $LoginUrl/$TenantName/oauth2/token?api-version=1.0 -Body $Body
 
 
 # Check if authentication is successfull.
 if ($OAuth.access_token -eq $null)
 {
 Write-Error "No Access Token"
 }
 else
 {
 # Perform REST call.
 $HeaderParams = @{ 'Authorization' = "$($OAuth.token_type) $($OAuth.access_token)" }
 $Result = (Invoke-WebRequest -UseBasicParsing -Headers $HeaderParams -Uri $Url)

# Return result.
 $Result
 }
}
function Get-UsageReportData {
 param (
 [parameter(Mandatory = $true)]
 [string]$ClientID,

[parameter(Mandatory = $true)]
 [string]$ClientSecret,

[parameter(Mandatory = $true)]
 [string]$TenantName,
 
 [parameter(Mandatory=$true)]
 $GraphUrl
 )
try {
 # Call Microsoft Graph and extract CSV content and convert data to PowerShell objects.
 ((Get-GraphApi -ClientID $ClientID -ClientSecret $ClientSecret -TenantName $TenantName -Url $GraphUrl).RawContent -split "\?\?\?")[1] | ConvertFrom-Csv
 }
 catch {
 $null
 }
}

Med dessa två funktioner på plats så kan vi enkelt hämta nyttjandedata på följande vis.

$ClientID = "e05e2a69-26b0-4496-bc47-befd55b83f16" # You registered apps App ID.
$ClientSecret = "oo87Z52Ckr7Q0AzLKqtFH567Dne4FQvWeVs2rNYG/Pw=" # Your registered apps key.
$TenantName = "yourtenant.onmicrosoft.com" # Your tenant name.
$GraphUrl = "https://graph.microsoft.com/v1.0/reports/getTeamsUserActivityUserDetail(period='D7')" # The Graph URL to retrieve data.

$UsageData = Get-UsageReportData -ClientID $ClientID -ClientSecret $ClientSecret -TenantName $TenantName -GraphUrl $GraphUrl
$UsageData

Exempel på output:

Report Refresh Date : 2018-09-21
User Principal Name : user.username@altitude365.com
Last Activity Date : 2018-09-21
Is Deleted : False
Deleted Date :
Assigned Products : WINDOWS 10 ENTERPRISE E5+ENTERPRISE MOBILITY + SECURITY E5+OFFICE 365 ENTERPRISE E5 WITHOUT AUDIO CONFERENCING
Team Chat Message Count : 4
Private Chat Message Count : 333
Call Count : 3
Meeting Count : 1
Has Other Action : Yes
Report Period : 7

I det här fallet så hämtar vi ut all Teams-användardata från den senaste månaden. Mer information om just den här Graph URLen finns här:

https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/reportroot_getteamsuseractivityuserdetail

Samtliga nyttjandedatarapporter som man kan hämta finns i menyn på den här sidan.

https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/report

Här följer också några exempel på rapporter man kan hämta data ifrån.

Data URL
Användares Outlook-aktivitet https://graph.microsoft.com/v1.0/reports/getEmailActivityUserDetail(period='{period_value}’)
Användares OneDrive-aktivitet https://graph.microsoft.com/v1.0/reports/getOneDriveActivityUserDetail(period='{period_value}’)
Användares SharePoint-aktivitet https://graph.microsoft.com/v1.0/reports/getSharePointActivityUserDetail(period='{period_value}’)
M.fl.

Hur Altitude 365 använder detta

Även om dom inbyggda rapporterna är kraftfulla så kan vi genom att hämta nyttjandedatat vrida och vända på den ytterligare. Vi på Altitude 365 använder nyttjandedatat tillsammans med Power BI för att hjälpa våra kunder med adoption, licensoptimering, uppstädning, säkerhet och automatiska förbättringsförslag som inte hade varit möjligt utan att jobba mot Microsoft Graph. Kunden får fantastiska insikter i hur deras organisation använder Office 365.

Om ni har intresse av att bygga lösningar mot Microsoft Graph eller om ni vill ha hjälp med adoption, licensoptimering, mm så kan Altitude 365 hjälpa till. Kontakta oss gärna så berättar vi mer!

Relaterat inlägg: Hur vi jobbar med Office 365

Relaterade inlägg

Vill du vara säker på att inte missa något

Som du märker brinner vi för att dela med oss av våra erfarenheter, nyttiga lärdomar och spaningar ut i exosfären. Se till att följa vårt nyhetsbrev eller vårt flöde på Linkedin så du inte missar något.

Hidden

Denna webbplats använder cookies

Cookies ("kakor") består av små textfiler. Dessa innehåller data som lagras på din enhet. För att kunna placera vissa typer av cookies behöver vi inhämta ditt samtycke. Vi på Exobe AB, orgnr. 556769-5605 använder oss av följande slags cookies. För att läsa mer om vilka cookies vi använder och lagringstid, klicka här för att komma till vår cookiepolicy.

Hantera dina cookieinställningar

Nödvändiga cookies

Nödvändiga cookies är cookies som måste placeras för att grundläggande funktioner på webbplatsen ska kunna fungera. Grundläggande funktioner är exempelvis cookies som behövs för att du ska kunna använda menyer och navigera på sajten.

Funktionella cookies

Funktionella cookies behöver placeras för att webbplatsen ska kunna prestera som du förväntar dig, exempelvis så att den känner av vilket språk som du föredrar, för att känna av om du är inloggad, för att hålla webbplatsen säker, komma ihåg inloggningsuppgifter eller för att kunna sortera produkter på webbplatsen utefter dina preferenser.

Cookies för statistik

För att kunna veta hur du interagerar med webbplatsen placerar vi cookies för att föra statistik. Dessa cookies anonymiserar personuppgifter.

Cookies för personlig anpassning

För att ge dig en bättre upplevelse placerar vi cookies för dina preferenser

Cookies för annonsmätning

För att kunna erbjuda bättre service och upplevelse placerar vi cookies för att kunna anpassa marknadsföring till dig. Ett annat syfte med denna behandling är att kunna marknadsföra produkter eller tjänster till dig, ge anpassade erbjudanden eller marknadsföra och ge rekommendationer kring nya koncept utifrån vad du har köpt tidigare.

Cookies för personlig annonsmätning

För att kunna visa relevant reklam placerar vi cookies för att anpassa innehållet för dig

Cookies för anpassade annonser

För att visa relevanta och personliga annonser placerar vi cookies för att tillhandahålla unika erbjudanden som är skräddarsydda efter din användardata