Added Creatondate consoleapp and tagging policy

This commit is contained in:
Jurjen Ladenius
2022-04-20 11:03:12 +02:00
parent 28b4a0807c
commit 20331593e7
24 changed files with 1887 additions and 0 deletions

334
ConsoleApps/.gitignore vendored Normal file
View File

@@ -0,0 +1,334 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# Bicep output
Authorization.Deploy/authorization.json
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
#**/Properties/launchSettings.json
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/

View File

@@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.1.32328.378
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureRestApi", "AzureRestApi\AzureRestApi.csproj", "{DCEBAB23-4E5B-4FBE-9752-EC9C22E5C394}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DCEBAB23-4E5B-4FBE-9752-EC9C22E5C394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DCEBAB23-4E5B-4FBE-9752-EC9C22E5C394}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DCEBAB23-4E5B-4FBE-9752-EC9C22E5C394}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DCEBAB23-4E5B-4FBE-9752-EC9C22E5C394}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9F84ED05-3BCF-4BA7-B4ED-FEF688F8A2D0}
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,26 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Azure.Identity" Version="1.6.0" />
<PackageReference Include="Azure.Security.KeyVault.Secrets" Version="4.3.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
<PackageReference Include="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="5.2.9" />
</ItemGroup>
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,9 @@
using AzureRestApi.Models.Resources;
namespace AzureRestApi.Models.Api
{
public class ResourcesResponse
{
public List<Resource>? value { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
using AzureRestApi.Models.Resources;
namespace AzureRestApi.Models.Api
{
public class SubscriptionResponse
{
public List<Subscription>? value { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
using AzureRestApi.Models.Resources;
namespace AzureRestApi.Models.Api
{
public class TagProperties
{
public TagTags properties { get; set; } = new TagTags();
}
}

View File

@@ -0,0 +1,28 @@
namespace AzureRestApi.Models.Resources
{
public class Resource
{
public string? id { get; set; }
public string? name { get; set; }
public string? type { get; set; }
public string? location { get; set; }
public string? createdTime { get; set; }
public string? changedTime { get; set; }
public Dictionary<string, string> tags { get; set; } = new Dictionary<string, string>();
public string? CreatedOn
{
get
{
if (string.IsNullOrWhiteSpace(createdTime))
{
return changedTime;
}
else
{
return createdTime;
}
}
}
}
}

View File

@@ -0,0 +1,20 @@
namespace AzureRestApi.Models.Resources
{
public class Subscription
{
public string? id { get; set; }
public string? authorizationSource { get; set; }
public string? subscriptionId { get; set; }
public string? tenantId { get; set; }
public string? displayName { get; set; }
public string? state { get; set; }
public bool Enabled
{
get
{
return state == "Enabled";
}
}
}
}

View File

@@ -0,0 +1,7 @@
namespace AzureRestApi.Models.Resources
{
public class TagTags
{
public Dictionary<string, string> tags { get; set; } = new Dictionary<string, string>();
}
}

View File

@@ -0,0 +1,8 @@
namespace AzureRestApi.Models
{
public class Settings
{
public string KeyVaultName { get; set; }
public string AzureTenantId { get; set; }
}
}

View File

@@ -0,0 +1,38 @@
using AzureRestApi.Models;
using AzureRestApi.Repositories;
using AzureRestApi.Services;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace AzureRestApi
{
class Program
{
static Task Main(string[] args) =>
CreateHostBuilder(args).Build().RunAsync();
static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((builder, services) =>
{
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables()
.Build();
Settings settings = config.GetRequiredSection("Settings").Get<Settings>();
services.AddSingleton<AccessTokenRepository>();
services.AddSingleton(settings);
services.AddHttpClient<AzureSubscriptionRepository>();
services.AddHttpClient<AzureResourceRepository>();
services.AddHttpClient<AzureTagRepository>();
services.AddScoped<CreatedOnDateService>();
services.AddHostedService<OptionService>();
} );
}
}

View File

@@ -0,0 +1,40 @@
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using AzureRestApi.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
namespace AzureRestApi.Repositories
{
public class AccessTokenRepository
{
private readonly Settings _settings;
private string? _accessToken;
public AccessTokenRepository(Settings settings)
{
_settings = settings;
}
public async Task<string> GetAccessToken()
{
if (!string.IsNullOrWhiteSpace(_accessToken)) return _accessToken;
var keyvaultUri = "https://" + _settings.KeyVaultName + ".vault.azure.net";
var credential = new DefaultAzureCredential();
var client = new SecretClient(new Uri(keyvaultUri), credential);
var clientId = (await client.GetSecretAsync("ClientID")).Value.Value;
var clientSecret = (await client.GetSecretAsync("ClientSecret")).Value.Value;
ClientCredential cc = new(clientId, clientSecret);
var context = new AuthenticationContext("https://login.microsoftonline.com/" + _settings.AzureTenantId);
var result = context.AcquireTokenAsync("https://management.azure.com/", cc);
if (result == null)
{
throw new InvalidOperationException("Failed to obtain the Access token");
}
_accessToken = result.Result.AccessToken;
return _accessToken;
}
}
}

View File

@@ -0,0 +1,38 @@
using AzureRestApi.Models.Api;
using AzureRestApi.Models.Resources;
using System.Net.Http.Headers;
using System.Text.Json;
namespace AzureRestApi.Repositories
{
public class AzureResourceRepository
{
private readonly HttpClient _httpClient;
private readonly AccessTokenRepository _accessTokenRepository;
public AzureResourceRepository(HttpClient httpClient, AccessTokenRepository accessTokenRepository)
{
_httpClient = httpClient;
_accessTokenRepository = accessTokenRepository;
}
public async Task<List<Resource>?> GetAllResources(string subscriptionId)
{
// GET https://management.azure.com/subscriptions/{subscriptionId}/resources?$filter={$filter}&$expand={$expand}&$top={$top}&api-version=2021-04-01
var accessToken = await _accessTokenRepository.GetAccessToken();
var uri = new Uri("https://management.azure.com/subscriptions/" + subscriptionId + "/resources?$expand=createdTime,changedTime&api-version=2021-04-01");
HttpRequestMessage request = new(HttpMethod.Get, uri);
request.Headers.Accept.Clear();
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var response = await _httpClient.SendAsync(request).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
return JsonSerializer.Deserialize<ResourcesResponse>(responseString)?.value;
}
}
}

View File

@@ -0,0 +1,39 @@
using AzureRestApi.Models.Api;
using AzureRestApi.Models.Resources;
using System.Net.Http.Headers;
using System.Text.Json;
namespace AzureRestApi.Repositories
{
public class AzureSubscriptionRepository
{
private readonly HttpClient _httpClient;
private readonly AccessTokenRepository _accessTokenRepository;
public AzureSubscriptionRepository(HttpClient httpClient, AccessTokenRepository accessTokenRepository)
{
_httpClient = httpClient;
_accessTokenRepository = accessTokenRepository;
}
public async Task<List<Subscription>?> GetAllSubscriptions()
{
// GET https://management.azure.com/subscriptions?api-version=2020-01-01
var accessToken = await _accessTokenRepository.GetAccessToken();
var uri = new Uri("https://management.azure.com/subscriptions?api-version=2020-01-01");
HttpRequestMessage request = new(HttpMethod.Get, uri);
request.Headers.Accept.Clear();
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var response = await _httpClient.SendAsync(request).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
return JsonSerializer.Deserialize<SubscriptionResponse>(responseString)?.value;
}
}
}

View File

@@ -0,0 +1,53 @@
using AzureRestApi.Models.Api;
using Microsoft.Extensions.Logging;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
namespace AzureRestApi.Repositories
{
public class AzureTagRepository
{
private readonly HttpClient _httpClient;
private readonly AccessTokenRepository _accessTokenRepository;
private readonly ILogger<AzureTagRepository> _logger;
public AzureTagRepository(HttpClient httpClient, AccessTokenRepository accessTokenRepository, ILogger<AzureTagRepository> logger)
{
_httpClient = httpClient;
_accessTokenRepository = accessTokenRepository;
_logger = logger;
}
public async Task<bool> SetTag(string scope, string name, string value)
{
// PUT https://management.azure.com/{scope}/providers/Microsoft.Resources/tags/default?api-version=2021-04-01
var result = true;
var accessToken = await _accessTokenRepository.GetAccessToken();
var uri = new Uri("https://management.azure.com/" + scope + "/providers/Microsoft.Resources/tags/default?api-version=2021-04-01");
var tagProperties = new TagProperties();
tagProperties.properties.tags.Add(name, value);
var body = JsonSerializer.Serialize(tagProperties);
HttpRequestMessage request = new(HttpMethod.Put, uri);
request.Headers.Accept.Clear();
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
request.Content = new StringContent(body, Encoding.UTF8, "application/json");
var response = await _httpClient.SendAsync(request).ConfigureAwait(false);
try
{
response.EnsureSuccessStatusCode();
await response.Content.ReadAsStringAsync().ConfigureAwait(false);
}
catch
{
result = false;
}
return result;
}
}
}

View File

@@ -0,0 +1,61 @@
using AzureRestApi.Repositories;
namespace AzureRestApi.Services
{
public class CreatedOnDateService
{
private const string TagName = "CreatedOnDate";
private readonly AzureSubscriptionRepository _azureSubscriptionRepository;
private readonly AzureResourceRepository _azureResourceRepository;
private readonly AzureTagRepository _azureTagRepository;
public CreatedOnDateService(AzureSubscriptionRepository azureSubscriptionRepository, AzureResourceRepository azureResourceRepository, AzureTagRepository azureTagRepository)
{
_azureSubscriptionRepository = azureSubscriptionRepository;
_azureResourceRepository = azureResourceRepository;
_azureTagRepository = azureTagRepository;
}
public async Task SetCreatedOnDateTags(bool skipDone = true)
{
var defaultForeGround = Console.ForegroundColor;
Console.WriteLine("==============================================");
Console.WriteLine("Setting CreatedOnDateTags");
Console.WriteLine("==============================================");
var subscriptions = await _azureSubscriptionRepository.GetAllSubscriptions();
if (subscriptions == null || !subscriptions.Any()) throw new Exception("No subscriptions found");
subscriptions = subscriptions.Where(s => s.Enabled && !string.IsNullOrWhiteSpace(s.subscriptionId)).ToList();
if (!subscriptions.Any()) throw new Exception("No subscriptions found");
foreach (var subscription in subscriptions)
{
Console.WriteLine("----------------------------------------------");
Console.WriteLine(subscription.displayName);
Console.WriteLine("----------------------------------------------");
var resources = await _azureResourceRepository.GetAllResources(subscription.subscriptionId);
if (resources == null || !resources.Any()) continue;
resources = resources.Where(r => !string.IsNullOrWhiteSpace(r.CreatedOn) && !string.IsNullOrWhiteSpace(r.id)).ToList();
if (skipDone)
{
resources = resources.Where(r => !r.tags.Any(t => t.Key == TagName && !string.IsNullOrWhiteSpace(t.Value))).ToList();
}
foreach (var resource in resources)
{
Console.Write(resource.id);
var tagSuccess = await _azureTagRepository.SetTag(resource.id, TagName, resource.CreatedOn);
Console.ForegroundColor = tagSuccess ? ConsoleColor.DarkGreen : ConsoleColor.Red;
Console.Write(tagSuccess ? " V" : " X");
Console.ForegroundColor = defaultForeGround;
Console.WriteLine();
}
}
Console.WriteLine("==============================================");
}
}
}

View File

@@ -0,0 +1,62 @@
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AzureRestApi.Services
{
public class OptionService : IHostedService
{
private readonly ILogger<OptionService> _logger;
private readonly CreatedOnDateService _createdOnDateService;
public OptionService(ILogger<OptionService> logger, CreatedOnDateService createdOnDateService)
{
_logger = logger;
_createdOnDateService = createdOnDateService;
}
public async Task StartAsync(CancellationToken cancellationToken)
{
int userInput = 0;
bool validatedInput = false;
while (!validatedInput)
{
Console.WriteLine("================================================================");
Console.WriteLine("Cloud Egineering Console App");
Console.WriteLine("================================================================");
Console.WriteLine("-- This couldn't be done with Powershell, so here we are.... ");
Console.WriteLine();
Console.WriteLine("Select what you want to do:");
Console.WriteLine("1. Update missing CreatedOnDate tags.");
Console.WriteLine("0. Exit.");
string? result = Console.ReadLine();
bool parsed = int.TryParse(result, out userInput);
validatedInput = (parsed && (new[] { 1, 0 }).Contains(userInput));
if (!validatedInput)
{
Console.WriteLine("Please enter a valid choice");
}
}
if (userInput == 1)
{
await _createdOnDateService.SetCreatedOnDateTags(true);
}
Console.WriteLine("Bye.");
}
public Task StopAsync(CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,13 @@
{
"Settings": {
"KeyVaultName": "consoleapp",
"AzureTenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09"
},
"Logging": {
"LogLevel": {
"Default": "Warning",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "None"
}
}
}

View File

@@ -0,0 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,12 @@
using System;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}

846
ConsoleApps/x.json Normal file
View File

@@ -0,0 +1,846 @@
{
"value": [
{
"id": "/subscriptions/0c50e758-0cfb-4d35-9d52-b39ba918ce30",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "0c50e758-0cfb-4d35-9d52-b39ba918ce30",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Team Yellow",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/0e4ba075-f7d9-4f31-860c-3cb8673f1f08",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "0e4ba075-f7d9-4f31-860c-3cb8673f1f08",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Customer Data",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/0ecf52e9-a2b1-4938-b0b1-f7c1878de642",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "0ecf52e9-a2b1-4938-b0b1-f7c1878de642",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "MyEffectory Project",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/0f35097b-19f1-4baf-b548-f31bc71eccea",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "0f35097b-19f1-4baf-b548-f31bc71eccea",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Logit Production",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/14c2354d-45a9-4e0f-98ff-be58cdbcddc7",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "14c2354d-45a9-4e0f-98ff-be58cdbcddc7",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "EffectoryCore",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/14f042a9-182f-4f09-9df7-d9ebf3eb9968",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "14f042a9-182f-4f09-9df7-d9ebf3eb9968",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription (Maria)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/1ab2120c-947c-40e2-96c7-460d3e9659de",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "1ab2120c-947c-40e2-96c7-460d3e9659de",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Int-Aut Productie",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/1c406a29-e1ad-4be0-849a-9364009af505",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "1c406a29-e1ad-4be0-849a-9364009af505",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Corporate Marketing Campaigns Testing",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDNDevTest_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/2372e452-d101-4fb1-b9ed-664b8cd68e40",
"authorizationSource": "RoleBased",
"managedByTenants": [
{
"tenantId": "2f4a9838-26b7-47ee-be60-ccc1fdec5953"
}
],
"subscriptionId": "2372e452-d101-4fb1-b9ed-664b8cd68e40",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Data warehouse production",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/23e654c9-ed9d-424e-b69a-6a0be116a3ce",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "23e654c9-ed9d-424e-b69a-6a0be116a3ce",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Dev/Test Hans",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDNDevTest_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/27bd000b-3dfb-49c5-afba-be437ecb188c",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "27bd000b-3dfb-49c5-afba-be437ecb188c",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Premium met MSDN (Ramon)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/2c20594a-bb4e-4103-8e3c-017f6ca01431",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "2c20594a-bb4e-4103-8e3c-017f6ca01431",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Participant Invite Import",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/2e7c2d8f-b022-4136-9ea3-81f6daece91b",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "2e7c2d8f-b022-4136-9ea3-81f6daece91b",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription ( Ziyad )",
"state": "Disabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/30ce4e64-4299-4b93-91b8-4c953f63678e",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "30ce4e64-4299-4b93-91b8-4c953f63678e",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Cloud Engineering",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/3190b0fd-4a66-4636-a204-5b9f18be78a6",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "3190b0fd-4a66-4636-a204-5b9f18be78a6",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Authorization",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/31b26889-ee10-480e-be6a-da5d8a58f19f",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "31b26889-ee10-480e-be6a-da5d8a58f19f",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "HR",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/31cb867e-4cb5-47d3-b12a-7692cf746376",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "31cb867e-4cb5-47d3-b12a-7692cf746376",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Orange dev/test",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDNDevTest_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/33fc60b1-a502-44da-acf5-b9fe22b1ea6f",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "33fc60b1-a502-44da-acf5-b9fe22b1ea6f",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Premium met MSDN (Erik AD)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/4db5ca42-c8f1-4392-a9fc-96937874ef74",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "4db5ca42-c8f1-4392-a9fc-96937874ef74",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Survey Software Shared Infrastructure",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/4f5c19be-141c-411b-bf83-6133298dbe7c",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "4f5c19be-141c-411b-bf83-6133298dbe7c",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription (Erik)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/511e74de-3ad1-4aa1-bc74-b6b2833a8551",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "511e74de-3ad1-4aa1-bc74-b6b2833a8551",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Enterprise Subscription (Jurjen)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/54794e27-b714-4346-81bc-05eae7ccb5a5",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "54794e27-b714-4346-81bc-05eae7ccb5a5",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Question Management",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/56378832-ba51-4f4f-99c1-cff97c244e8e",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "56378832-ba51-4f4f-99c1-cff97c244e8e",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription (Reinier)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c",
"authorizationSource": "RoleBased",
"managedByTenants": [
{
"tenantId": "2f4a9838-26b7-47ee-be60-ccc1fdec5953"
}
],
"subscriptionId": "5df09d5a-b1c1-48b8-b72c-ebe9b27e0e0c",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Survey Software Testing",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDNDevTest_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/5e1ac47a-0729-4546-b93f-469d92c5ac4a",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "5e1ac47a-0729-4546-b93f-469d92c5ac4a",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Data warehouse dev/test",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDNDevTest_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/5e6326e8-f587-440a-acdc-3bf7ff5be9cf",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "5e6326e8-f587-440a-acdc-3bf7ff5be9cf",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "VS Pro Sub (Ali)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/602c0bff-e517-4f7c-966b-3664928cbbce",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "602c0bff-e517-4f7c-966b-3664928cbbce",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription (Johannes Ouendag)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/632010d6-01a6-4b0b-b6ff-9fab7f8a4bcf",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "632010d6-01a6-4b0b-b6ff-9fab7f8a4bcf",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional - Mitchell",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/63cc34fe-1aea-4cef-8402-5869c9fff78b",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "63cc34fe-1aea-4cef-8402-5869c9fff78b",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Dynamics CRM",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/63e30762-4d09-4b15-8104-aac48716c7bf",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "63e30762-4d09-4b15-8104-aac48716c7bf",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription (Aris)",
"state": "Disabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/6e2b45e4-5e7b-4628-8827-ec44e23d2f6b",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "6e2b45e4-5e7b-4628-8827-ec44e23d2f6b",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Participant Integration",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/70cae949-5013-4c40-b718-911dbf9b9a80",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "70cae949-5013-4c40-b718-911dbf9b9a80",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Participant Core",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/72474dd4-e94a-4b6e-bb98-3d6cc9884ff4",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "72474dd4-e94a-4b6e-bb98-3d6cc9884ff4",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional (Johannes Oenema)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/750d0421-da63-42fb-9f89-74aeb5dfe05b",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "750d0421-da63-42fb-9f89-74aeb5dfe05b",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Cloud Engineering Dev/Test",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDNDevTest_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/7cc36153-a8a4-4566-86bc-fec178ed176a",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "7cc36153-a8a4-4566-86bc-fec178ed176a",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Hierarchies Dev/Test",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDNDevTest_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/7feeb150-9ee0-4aea-992a-5f3a89d933e6",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "7feeb150-9ee0-4aea-992a-5f3a89d933e6",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Results",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/80eaaecd-37af-4e15-9384-d5729b096740",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "80eaaecd-37af-4e15-9384-d5729b096740",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "EA Logit Testing",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/86945e42-fa5a-4bbc-948f-3f5407f15d3e",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "86945e42-fa5a-4bbc-948f-3f5407f15d3e",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Hierarchies",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/8bc7d396-c37f-4ecd-9041-5c1e0b717ce9",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "8bc7d396-c37f-4ecd-9041-5c1e0b717ce9",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription (Tiago)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/8c282de4-a7df-458e-b151-e10ca7b49966",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "8c282de4-a7df-458e-b151-e10ca7b49966",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "My Effectory Project settings",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/91dcc05c-adec-43b7-9ec9-495f195f3df5",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "91dcc05c-adec-43b7-9ec9-495f195f3df5",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/976c455b-3922-4c4e-b6d3-fcd19432cac9",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "976c455b-3922-4c4e-b6d3-fcd19432cac9",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional (Thimo)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/a134faf1-7a89-4f2c-8389-06d00bd5e2a7",
"authorizationSource": "RoleBased",
"managedByTenants": [
{
"tenantId": "2f4a9838-26b7-47ee-be60-ccc1fdec5953"
}
],
"subscriptionId": "a134faf1-7a89-4f2c-8389-06d00bd5e2a7",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Survey Software Production",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/a6230840-431c-4445-b3ec-41400d584eb2",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "a6230840-431c-4445-b3ec-41400d584eb2",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription (Ekaterina)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/ab77ee05-80f0-4d16-9be3-bc02a5f0455f",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "ab77ee05-80f0-4d16-9be3-bc02a5f0455f",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Int-Aut Testing",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDNDevTest_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/b5676abc-2355-4a1a-8aab-6c7d33dead1a",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "b5676abc-2355-4a1a-8aab-6c7d33dead1a",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Premium met MSDN (Sebas)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/b9652347-25d1-43ce-aa63-33f2826816d8",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "b9652347-25d1-43ce-aa63-33f2826816d8",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription (Khaled)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/ba6bde9e-8690-4c49-a3e1-1576c8ca8ab3",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "ba6bde9e-8690-4c49-a3e1-1576c8ca8ab3",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/baed3117-d2f3-4289-977d-6d4429d9e983",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "baed3117-d2f3-4289-977d-6d4429d9e983",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Team Yellow Dev/Test",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDNDevTest_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/c23331b3-60ac-447c-a978-b9572c577bd9",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "c23331b3-60ac-447c-a978-b9572c577bd9",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription ( Reza )",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/cce2448e-a3b1-493d-90a4-034828a005ab",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "cce2448e-a3b1-493d-90a4-034828a005ab",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Betalen naar gebruik",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "PayAsYouGo_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/dbbb7e6a-5fd3-4db5-bf73-bc940889c209",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "dbbb7e6a-5fd3-4db5-bf73-bc940889c209",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Corporate Website",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/e6daa42b-c939-4ef9-b384-c0cec82b7757",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "e6daa42b-c939-4ef9-b384-c0cec82b7757",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Hierarchy Invite Import",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/eec75831-812e-4b06-a7a4-ec28a5126238",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "eec75831-812e-4b06-a7a4-ec28a5126238",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Teamie Production",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/f17df03f-6856-4d4e-b7ce-67d3ccbfad2e",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "f17df03f-6856-4d4e-b7ce-67d3ccbfad2e",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional Subscription (Jurjen)",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/f612a7cd-5729-45e3-af34-3385b9eef7f4",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "f612a7cd-5729-45e3-af34-3385b9eef7f4",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Visual Studio Professional - Jimmy",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "MSDN_2014-09-01",
"spendingLimit": "On"
}
},
{
"id": "/subscriptions/f929a33f-3956-4f73-82d5-9c52f272ff0f",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "f929a33f-3956-4f73-82d5-9c52f272ff0f",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Corporate Marketing Campaigns Production",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/f9ab522b-4895-492d-b8a8-ca6e1f60c2a8",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "f9ab522b-4895-492d-b8a8-ca6e1f60c2a8",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Participant Exchange",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
},
{
"id": "/subscriptions/fced11a2-8ba7-4596-9ff4-de8b47713c48",
"authorizationSource": "RoleBased",
"managedByTenants": [],
"subscriptionId": "fced11a2-8ba7-4596-9ff4-de8b47713c48",
"tenantId": "e9792fd7-4044-47e7-a40d-3fba46f1cd09",
"displayName": "Result Integration",
"state": "Enabled",
"subscriptionPolicies": {
"locationPlacementId": "Public_2014-09-01",
"quotaId": "EnterpriseAgreement_2014-09-01",
"spendingLimit": "Off"
}
}
],
"count": {
"type": "Total",
"value": 59
}
}