diff --git a/GitVersion.yml b/GitVersion.yml
index b7ab37d..f61d7fa 100644
--- a/GitVersion.yml
+++ b/GitVersion.yml
@@ -1 +1,4 @@
mode: mainline
+major-version-bump-message: "(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\\([\\w\\s]*\\))?(!:|:.*\\n\\n.*\\n\\n.*BREAKING.*).*"
+minor-version-bump-message: "(feat)(\\([\\w\\s]*\\))?:"
+patch-version-bump-message: "(build|chore|ci|docs|fix|perf|refactor|revert|style|test)(\\([\\w\\s]*\\))?:(.*\\n\\n.*\\n\\n.*BREAKING.*){0}"
\ No newline at end of file
diff --git a/deploy/DevelopmentHub.Deployment.csproj b/deploy/DevelopmentHub.Deployment.csproj
index 62ddc9b..9dd6a49 100644
--- a/deploy/DevelopmentHub.Deployment.csproj
+++ b/deploy/DevelopmentHub.Deployment.csproj
@@ -27,47 +27,30 @@
-
+
all
-
+
all
-
+
all
-
+
+
+
+
+
+
all
-
- all
-
-
- all
-
-
- all
-
-
- all
-
-
- all
-
-
- all
-
-
- all
-
-
-
+
all
all
-
+
diff --git a/deploy/PackageTemplate.cs b/deploy/PackageTemplate.cs
index e08751b..292350b 100644
--- a/deploy/PackageTemplate.cs
+++ b/deploy/PackageTemplate.cs
@@ -2,7 +2,11 @@ namespace DevelopmentHub.Deployment
{
using System;
using System.ComponentModel.Composition;
+ using System.Diagnostics;
+ using System.ServiceModel;
using Capgemini.PowerApps.PackageDeployerTemplate;
+ using Microsoft.Xrm.Sdk;
+ using Microsoft.Xrm.Sdk.Query;
using Microsoft.Xrm.Tooling.PackageDeployment.CrmPackageExtentionBase;
///
@@ -15,7 +19,6 @@ public class PackageTemplate : PackageTemplateBase
private string azureDevOpsOrganisation;
private string solutionPublisherPrefix;
private string azureDevOpsConnectionName;
- private string approvalsConnectionName;
private EnvironmentVariableDeploymentService environmentVariableDeploymentSvc;
///
@@ -91,22 +94,6 @@ protected string AzureDevOpsConnectionName
}
}
- ///
- /// Gets a value for the approvals connection name used for the Development Hub (if found).
- ///
- protected string ApprovalsConnectionName
- {
- get
- {
- if (string.IsNullOrEmpty(this.approvalsConnectionName))
- {
- this.approvalsConnectionName = this.GetSetting(nameof(this.ApprovalsConnectionName));
- }
-
- return this.approvalsConnectionName;
- }
- }
-
///
/// Gets an .
///
@@ -131,6 +118,33 @@ public override bool AfterPrimaryImport()
return base.AfterPrimaryImport();
}
+ ///
+ public override void RunSolutionUpgradeMigrationStep(string solutionName, string oldVersion, string newVersion, Guid oldSolutionId, Guid newSolutionId)
+ {
+ if (string.IsNullOrEmpty(solutionName))
+ {
+ throw new ArgumentException($"'{nameof(solutionName)}' cannot be null or empty", nameof(solutionName));
+ }
+
+ if (string.IsNullOrEmpty(oldVersion))
+ {
+ throw new ArgumentException($"'{nameof(oldVersion)}' cannot be null or empty", nameof(oldVersion));
+ }
+
+ if (string.IsNullOrEmpty(newVersion))
+ {
+ throw new ArgumentException($"'{nameof(newVersion)}' cannot be null or empty", nameof(newVersion));
+ }
+
+ base.RunSolutionUpgradeMigrationStep(solutionName, oldVersion, newVersion, oldSolutionId, newSolutionId);
+
+ if (solutionName == "devhub_DevelopmentHub_Develop" && oldVersion.StartsWith("0.2", StringComparison.OrdinalIgnoreCase))
+ {
+ this.DefaultEnvironmentLifetimes();
+ this.DefaultMergeStrategies();
+ }
+ }
+
///
public override string GetNameOfImport(bool plural) => "Development Hub";
@@ -145,6 +159,80 @@ public override UserRequestedImportAction OverrideSolutionImportDecision(string
return base.OverrideSolutionImportDecision(solutionUniqueName, organizationVersion, packageSolutionVersion, inboundSolutionVersion, deployedSolutionVersion, systemSelectedImportAction);
}
+ private void DefaultEnvironmentLifetimes()
+ {
+ this.PackageLog.Log("Default existing environment lifetimes to 'Static'.");
+
+ var environmentQuery = new QueryByAttribute("devhub_environment");
+ environmentQuery.AddAttributeValue("devhub_lifetime", null);
+
+ var environments = this.CrmServiceAdapter.RetrieveMultiple(environmentQuery);
+ this.PackageLog.Log($"Found {environments.Entities.Count} environments to update.");
+
+ foreach (var environment in environments.Entities)
+ {
+ this.PackageLog.Log($"Updating environment {environment.Id}.");
+
+ environment.Attributes.Add("devhub_lifetime", new OptionSetValue(353400000) /*Static*/);
+ try
+ {
+ this.CrmSvc.Update(environment);
+ }
+ catch (FaultException ex)
+ {
+ this.PackageLog.Log($"Failed to update environment {environment.Id}.", TraceEventType.Error, ex);
+ }
+ }
+ }
+
+ private void DefaultMergeStrategies()
+ {
+ this.PackageLog.Log("Default existing solutions to a merge strategy of 'Sequential'.");
+
+ var solutionQuery = new QueryByAttribute("devhub_solution");
+ solutionQuery.AddAttributeValue("devhub_mergestrategy", null);
+ solutionQuery.ColumnSet = new ColumnSet("devhub_stagingenvironment");
+
+ var solutions = this.CrmServiceAdapter.RetrieveMultiple(solutionQuery);
+ this.PackageLog.Log($"Found {solutions.Entities.Count} solutions to update.");
+
+ foreach (var solution in solutions.Entities)
+ {
+ this.PackageLog.Log($"Updating solution {solution.Id}.");
+ solution.Attributes.Add("devhub_mergestrategy", new OptionSetValue(353400000) /*Sequential*/);
+
+ try
+ {
+ this.CrmSvc.Update(solution);
+ }
+ catch (FaultException ex)
+ {
+ this.PackageLog.Log($"Failed to update solution {solution.Id}.", TraceEventType.Error, ex);
+ }
+
+ this.PackageLog.Log("Getting solution merges for solution.");
+
+ var solutionMergeQuery = new QueryByAttribute("devhub_solutionmerge");
+ solutionMergeQuery.AddAttributeValue("devhub_targetsolution", solution.Id);
+ var solutionMerges = this.CrmServiceAdapter.RetrieveMultiple(solutionMergeQuery);
+
+ foreach (var solutionMerge in solutionMerges.Entities)
+ {
+ solutionMerge.Attributes.Add("devhub_environment", solution["devhub_stagingenvironment"]);
+ solutionMerge.Attributes.Add("devhub_mergestrategy", new OptionSetValue(353400000) /*Sequential*/);
+
+ try
+ {
+ this.CrmSvc.Update(solutionMerge);
+ }
+ catch (FaultException ex)
+ {
+ this.PackageLog.Log($"Failed to update solution merge {solutionMerge.Id}.", TraceEventType.Error, ex);
+ }
+ }
+ }
+ }
+
private void SetDevelopmentHubEnvironmentVariables()
{
this.EnvironmentVariableDeploymentSvc.SetEnvironmentVariable("devhub_AzureDevOpsOrganization", this.AzureDevOpsOrganisation);
diff --git a/install.ps1 b/install.ps1
new file mode 100644
index 0000000..de84366
--- /dev/null
+++ b/install.ps1
@@ -0,0 +1,545 @@
+$ErrorActionPreference = 'Stop'
+
+Write-Host "Checking for missing dependencies." -ForegroundColor Blue
+
+if (!(Get-Module -ListAvailable -Name Microsoft.PowerApps.Administration.PowerShell)) {
+ Install-Module -Name Microsoft.PowerApps.Administration.PowerShell -Scope CurrentUser -Force -AllowClobber
+}
+if (!(Get-Module -ListAvailable -Name Microsoft.Xrm.Data.Powershell)) {
+ Install-Module -Name Microsoft.Xrm.Data.Powershell -Scope CurrentUser -Force -AllowClobber
+}
+if (!(Get-Module -ListAvailable -Name Microsoft.Graph)) {
+ Install-Module -Name Microsoft.Graph -Scope CurrentUser -Force -AllowClobber
+}
+
+while ($true) {
+ $url = Read-Host -Prompt "What is the URL of your developent environment? e.g. https://..dynamics.com"
+ if ([uri]::IsWellFormedUriString($url, 'Absolute') -and ([uri] $url).Scheme -eq 'https') { break }
+
+ Write-Host "Invalid environment URL." -ForegroundColor Red
+}
+
+Write-Host "`nPlease sign-in to the account you use to access this environment." -ForegroundColor Blue
+Add-PowerAppsAccount
+
+Write-Host "`nGetting environment details for $url."
+$environment = Get-AdminPowerAppEnvironment | Where-Object {
+ $_.Internal.properties.linkedEnvironmentMetadata.instanceUrl -like "$url*"
+}
+
+if (!$environment) {
+ throw "Unable to find environment."
+}
+
+Write-Host "`nChecking $url for existing cloud flow connections."
+
+$connections = $environment | Get-AdminPowerAppConnection
+
+$approvalsConnections = $connections | Where-Object { $_.ConnectorName -eq "shared_approvals" }
+$approvalsConnection = $null
+foreach ($connection in $approvalsConnections) {
+ $response = $Host.UI.PromptForChoice(
+ "Existing connection found",
+ "Do you want to use existing Approvals connection?`nhttps://make.powerapps.com/environments/$($environment.EnvironmentName)/connections/shared_approvals/$($connection.ConnectionName)/details",
+ @("&Yes", "&No"),
+ 0)
+
+
+ if ($response -eq 0) {
+ $approvalsConnection = $connection.ConnectionName
+ break
+ }
+}
+
+if (!$approvalsConnection) {
+ Write-Host "`nPlease create an Approvals connection at https://make.powerapps.com/environments/$($Environment.EnvironmentName)/connections." -ForegroundColor Blue
+
+ while ($true) {
+ $approvalsUrl = Read-Host -Prompt "What is the URL for your approvals connection? e.g. https://make.powerapps.com/environments//connections/shared_approvals//details.`nFind this by clicking on the details button for the connection."
+ if ($approvalsUrl -match "connections\/shared_approvals\/(?.+)\/details") {
+ $approvalsConnection = $Matches.Connection
+ break
+ }
+
+ Write-Host "Invalid Approvals connection URL." -ForegroundColor Red
+ }
+}
+
+$azureDevOpsConnections = $connections | Where-Object { $_.ConnectorName -eq "shared_visualstudioteamservices" }
+$azureDevOpsConnection = $null
+foreach ($connection in $azureDevOpsConnections) {
+ $response = $Host.UI.PromptForChoice(
+ "Existing connection found",
+ "Do you want to use existing Azure DevOps connection?`nhttps://make.powerapps.com/environments/$($environment.EnvironmentName)/connections/shared_visualstudioteamservices/$($connection.ConnectionName)/details",
+ @("&Yes", "&No"),
+ 0)
+
+
+ if ($response -eq 0) {
+ $azureDevOpsConnection = $connection.ConnectionName
+ break
+ }
+}
+
+if (!$azureDevOpsConnection) {
+ Write-Host "`nPlease create an Azure DevOps connection at https://make.powerapps.com/environments/$($Environment.EnvironmentName)/connections." -ForegroundColor Blue
+
+ while ($true) {
+ $azureDevOpsUrl = Read-Host -Prompt "What is the URL for your Azure DevOps connection? e.g. https://make.powerapps.com/environments//connections/shared_visualstudioteamservices//details"
+ if ($azureDevOpsUrl -match "connections\/shared_visualstudioteamservices\/(?.+)\/details") {
+ $azureDevOpsConnection = $Matches.Connection
+ break
+ }
+
+ Write-Host "Invalid Approvals connection URL." -ForegroundColor Red
+ }
+}
+
+Write-Host "`nGetting Dataverse environment variable values" -ForegroundColor Blue
+
+$conn = Connect-CrmOnline -ServerUrl $url -ForceOAuth
+
+try {
+ $solutionPublisherPrefix = (Invoke-CrmAction -conn $conn -Name RetrieveEnvironmentVariableValue -Parameters @{ DefinitionSchemaName = "devhub_SolutionPublisher" }).Value
+
+ if ($solutionPublisherPrefix) {
+ $response = $Host.UI.PromptForChoice(
+ "Existing environment variable found",
+ "Do you want to use existing solution publisher environment variable value of '$($solutionPublisherPrefix)'?",
+ @("&Yes", "&No"),
+ 0)
+
+ if ($response -eq 1) {
+ throw "New value required"
+ }
+ }
+}
+catch {
+ $solutionPublisherPrefix = Read-Host "`nWhat is you solution publisher prefix (exluding the trailing underscore)?`nThis can be updated later in the devhub_SolutionPublisher Dataverse environment variable"
+}
+
+try {
+ $azureDevOpsOrg = (Invoke-CrmAction -conn $conn -Name RetrieveEnvironmentVariableValue -Parameters @{ DefinitionSchemaName = "devhub_AzureDevOpsOrganization" }).Value
+
+ if ($azureDevOpsOrg) {
+ $response = $Host.UI.PromptForChoice(
+ "Existing environment variable found",
+ "Do you want to use existing Azure DevOps organisation environment variable value of '$($azureDevOpsOrg)'?",
+ @("&Yes", "&No"),
+ 0)
+
+ if ($response -eq 1) {
+ throw "New value required"
+ }
+ }
+}
+catch {
+ $azureDevOpsOrg = Read-Host -Prompt "`nWhat is the name of your Azure DevOps organisation?`nThis can be updated later in the devhub_AzureDevOpsOrganization Dataverse environment variable"
+}
+
+Write-Host "`nDownloading latest Development Hub release to temp directory." -ForegroundColor Blue
+
+$tempPath = Join-Path $env:TEMP ([Guid]::NewGuid())
+New-Item -ItemType Directory -Path $tempPath | Out-Null
+$packageZipPath = Join-Path $tempPath DevelopmentHub.zip
+
+Invoke-WebRequest "https://github.com/ewingjm/development-hub/releases/download/v0.2.30/Development.Hub.v0.2.30.zip" -OutFile $packageZipPath
+
+Write-Host "`nExtracting package from release zip." -ForegroundColor Blue
+
+$releasePath = Join-Path $tempPath Release
+Expand-Archive $packageZipPath -DestinationPath $releasePath
+Write-Host "`nDeploying package." -ForegroundColor Blue
+$settings = @{
+ "ConnRef:devhub_sharedapprovals_6d3fc" = $approvalsConnection
+ "ConnRef:devhub_sharedvisualstudioteamservices_d7fcb" = $azureDevOpsConnection
+ "AzureDevOpsOrganisation" = $azureDevOpsOrg
+ "SolutionPublisherPrefix" = $solutionPublisherPrefix
+}
+$settingsArray = $settings.Keys | ForEach-Object { "$_=$($settings[$_])" }
+$runtimePackageSettings = [string]::Join("|", $settingsArray)
+
+# Running the cmdlets in the Package Deployer PS module causes unrelated things to break and retains locks on the package template files. Quarantining inside a separate job.
+$importJob = Start-Job {
+ if (!(Get-Module -ListAvailable -Name Microsoft.Xrm.Tooling.PackageDeployment.Powershell)) {
+ Install-Module -Name Microsoft.Xrm.Tooling.PackageDeployment.Powershell -Scope CurrentUser -Force -AllowClobber
+ }
+
+ $conn = Connect-CrmOnline -ServerUrl $using:url -ForceOAuth
+ Import-CrmPackage -PackageDirectory (Join-Path $using:releasePath "Development Hub") -PackageName DevelopmentHub.Deployment.dll -CrmConnection $conn -RuntimePackageSettings $using:runtimePackageSettings
+}
+
+$jobResult = Wait-Job $importJob
+if ($jobResult.State -eq "Failed") {
+ Receive-Job $importJob -Wait -AutoRemoveJob
+ return;
+}
+
+Remove-Job $importJob
+
+Remove-Item $tempPath -Recurse -Force
+
+Write-Host "`nPackage deployment complete." -ForegroundColor Blue
+
+Write-Host "`nChecking for existing app registration." -ForegroundColor Blue
+
+Connect-MgGraph -Scopes "Application.ReadWrite.All"
+$applications = Get-MgApplication | Where-Object { $_.Tags -contains "Development Hub" -or $_.DisplayName -like "*Development Hub*" }
+$devHubApp = $null
+foreach ($application in $applications) {
+ $response = $Host.UI.PromptForChoice(
+ "Existing application found",
+ "Do you want to use this application?`n$($application.DisplayName) - $($application.AppId)",
+ @("&Yes", "&No"),
+ 0)
+
+ if ($response -eq 0) {
+ $devHubApp = $application
+ break
+ }
+}
+
+if (!$devHubApp) {
+ Write-Host "`nCreating new app registration." -ForegroundColor Blue
+ [Microsoft.Graph.PowerShell.Models.IMicrosoftGraphRequiredResourceAccess[]]$requiredResourceAccess = @(
+ [Microsoft.Graph.PowerShell.Models.IMicrosoftGraphRequiredResourceAccess]@{
+ ResourceAppId = "00000007-0000-0000-c000-000000000000"
+ ResourceAccess = [Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess[]]@(
+ [Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess]@{
+ Id = "78ce3f0f-a1ce-49c2-8cde-64b5c0896db4"
+ Type = "Scope"
+ }
+ )
+ }
+ )
+
+ $devHubApp = New-MgApplication -DisplayName "Development Hub" -SignInAudience AzureADMyOrg -Tags "Development Hub" -RequiredResourceAccess $requiredResourceAccess
+ New-MgServicePrincipal -BodyParameter @{ AppId = $devHubApp.AppId } | Out-Null
+}
+
+$devHubAppPwd = Add-MgApplicationPassword -ApplicationId $devHubApp.Id -PasswordCredential @{ displayName = "Created by Development Hub install script." }
+
+Write-Host "`nUsing app registration '$($devHubApp.DisplayName)' with app ID '$($devHubApp.AppId)'." -ForegroundColor Blue
+
+Write-Host "`nRegistering app registration as a management app." -ForegroundColor Blue
+New-PowerAppManagementApp -ApplicationId $devHubApp.AppId | Out-Null
+
+Write-Host "`nSetting up application user in development environment." -ForegroundColor Blue
+$systemUser = (Get-CrmRecords -conn $conn -EntityLogicalName systemuser -FilterAttribute applicationid -FilterOperator eq -FilterValue $devHubApp.AppId -TopCount 1).CrmRecords[0]
+if (!$systemUser) {
+ Write-Host "`nExisting application user not found. Creating new application user in development environment." -ForegroundColor Blue
+ $rootBusinessUnit = (Get-CrmRecords -conn $conn -EntityLogicalName businessunit -FilterAttribute parentbusinessunitid -FilterOperator null -Fields businessunitid -TopCount 1).CrmRecords[0]
+
+ while (!$systemUser) {
+ try {
+ $systemUserId = New-CrmRecord -conn $conn -EntityLogicalName systemuser -Fields @{ applicationid = [Guid]::Parse($devHubApp.AppId); businessunitid = $rootBusinessUnit.EntityReference }
+ $systemUser = Get-CrmRecord -conn $conn -EntityLogicalName systemuser -Id $systemUserId -Fields systemuserid
+ }
+ catch {
+ if ($_.Exception.Message -notlike "*Make sure your application is registered in Azure AD*") {
+ throw
+ }
+ Start-Sleep -Seconds 10
+ }
+ }
+}
+else {
+ Write-Host "`nUsing existing application user in development environment." -ForegroundColor Blue
+}
+
+$systemAdmin = (Get-CrmRecords -conn $conn -EntityLogicalName role -FilterAttribute roletemplateid -FilterOperator eq -FilterValue "627090ff-40a3-4053-8790-584edc5be201" -Fields roleid -TopCount 1).CrmRecords[0]
+
+try {
+ Write-Host "`nAssigning system administrator role to application user in development environment." -ForegroundColor Blue
+ Add-CrmSecurityRoleToUser -conn $conn -UserRecord $systemUser -SecurityRoleRecord $systemAdmin
+}
+catch {
+ if ($_.Exception.Message -notlike "*duplicate key*") {
+ throw
+ }
+}
+
+Write-Host "`nConfiguring Azure DevOps." -ForegroundColor Blue
+
+$orgUrl = "https://dev.azure.com/$azureDevOpsOrg"
+$headers = @{
+ "Accept" = "application/json; api-version=7.0"
+ "Content-Type" = "application/json"
+}
+
+while ($true) {
+ $pat = Read-Host -Prompt "Please provide a PAT token for Azure DevOps with the following scopes:`n`tVariable Groups: Read, create, & manage`n`tService Connections: Read, query, & manage`n`tExtensions: Read & manage`n`tCode: Read, write & manage`n`tBuild: Read & execute`n" -AsSecureString
+
+ $token = [System.Convert]::ToBase64String(
+ [System.Text.Encoding]::ASCII.GetBytes(
+ ":$([Runtime.InteropServices.Marshal]::PtrToStringAuto(
+ [Runtime.InteropServices.Marshal]::SecureStringToBSTR($pat)))"))
+ $headers.authorization = "Basic $token"
+
+ $response = Invoke-WebRequest -Headers $headers -Uri "$orgUrl/_apis/projects"
+ if ($response.StatusCode -eq 200) {
+ $projects = $response.Content | ConvertFrom-Json | Select-Object -ExpandProperty value
+ break
+ }
+
+ Write-Host "Invalid PAT." -ForegroundColor Red
+}
+
+$extMgmtUrl = "https://extmgmt.dev.azure.com/$azureDevOpsOrg"
+$extMgmtHeaders = $headers.Clone()
+$extMgmtHeaders.accept = "application/json; api-version=7.0-preview"
+
+Write-Host "`nChecking for Power Platform Build Tools extension." -ForegroundColor Blue
+try {
+ Invoke-RestMethod -Headers $extMgmtHeaders -Uri "$extMgmtUrl/_apis/extensionmanagement/installedextensionsbyname/microsoft-IsvExpTools/PowerPlatform-BuildTools" | Out-Null
+}
+catch [System.Net.WebException] {
+ if (!$_.Exception.Response.StatusCode.Value__ -eq 404) {
+ throw
+ }
+ Write-Host "`nNot installed. Installing Power Platform Build Tools extension." -ForegroundColor Blue
+ Invoke-RestMethod -Method POST -Headers $extMgmtHeaders -Uri "$extMgmtUrl/_apis/extensionmanagement/installedextensionsbyname/microsoft-IsvExpTools/PowerPlatform-BuildTools"
+}
+
+while ($true) {
+ $project = Read-Host -Prompt "What Azure DevOps project do you want to use?"
+
+ if ($project -in $projects.name) {
+ break
+ }
+
+ Write-Host "Project not found." -ForegroundColor Red
+}
+
+Write-Host "`nChecking for service connection." -ForegroundColor Blue
+
+$projectReference = @{
+ name = $project
+ id = ($projects | Where-Object name -eq $project | Select-Object -First 1 -ExpandProperty id)
+}
+$serviceConnection = Invoke-RestMethod -Headers $headers -Uri "$orgUrl/$project/_apis/serviceendpoint/endpoints?endpointNames=Development Hub" | Select-Object -ExpandProperty value
+if (!$serviceConnection) {
+ Write-Host "`nService connection not found. Creating service connection." -ForegroundColor Blue
+ $serviceConnection = Invoke-RestMethod -Method POST -Headers $headers -Uri "$orgUrl/_apis/serviceendpoint/endpoints" -Body (ConvertTo-Json -Depth 5 @{
+ name = "Development Hub"
+ type = "powerplatform-spn"
+ url = "https://placeholder.crm.dynamics.com"
+ authorization = @{
+ parameters = @{
+ tenantId = $conn.TenantId.ToString()
+ applicationId = $devHubApp.AppId
+ clientSecret = $devHubAppPwd.SecretText
+ }
+ scheme = "None"
+ }
+ isShared = $false
+ serviceEndpointProjectReferences = @(
+ @{
+ name = "Development Hub"
+ projectReference = $projectReference
+ }
+ )
+ })
+}
+else {
+ Write-Host "`nUsing existing service connection. Updating secret." -ForegroundColor Blue
+ $serviceConnection.authorization.parameters | Add-Member -MemberType NoteProperty -Name clientSecret -Value $devHubAppPwd.SecretText
+ Invoke-RestMethod -Method PUT -Headers $headers -Uri "$orgUrl/_apis/serviceendpoint/endpoints/$($serviceConnection.id)" -Body (ConvertTo-Json -Depth 5 $serviceConnection) | Out-Null
+}
+
+Write-Host "`nChecking for variable group." -ForegroundColor Blue
+
+$variableGroupVariables = @{
+ "DevelopmentHub.Application.TenantId" = @{
+ value = $conn.TenantId.ToString()
+ isSecret = $false
+ }
+ "DevelopmentHub.Application.ClientId" = @{
+ value = $devHubApp.AppId
+ isSecret = $false
+ }
+ "DevelopmentHub.Application.ClientSecret" = @{
+ value = $devHubAppPwd.SecretText
+ isSecret = $true
+ }
+}
+$variableGroup = Invoke-RestMethod -Headers $headers -Uri "$orgUrl/$project/_apis/distributedtask/variablegroups?groupName=Development Hub" | Select-Object -ExpandProperty value -First 1
+if (!$variableGroup) {
+ Write-Host "`nVariable group not found. Creating variable group." -ForegroundColor Blue
+ $variableGroup = Invoke-RestMethod -Method Post -Headers $headers -Uri "$orgUrl/$project/_apis/distributedtask/variablegroups" -Body (ConvertTo-Json -Depth 5 @{
+ name = "Development Hub"
+ description = "Variables that support the Development Hub pipelines"
+ type = "Vsts"
+ variableGroupProjectReferences = @(
+ @{
+ name = "Development Hub"
+ projectReference = $projectReference
+ }
+ )
+ variables = $variableGroupVariables
+ })
+}
+else {
+ Write-Host "`nUsing existing variable group. Updating values." -ForegroundColor Blue
+ $variableGroup.variableGroupProjectReferences = @(
+ @{
+ name = "Development Hub"
+ projectReference = $projectReference
+ }
+ )
+ $variableGroup.variables = $variableGroupVariables
+ Invoke-RestMethod -Method Put -Headers $headers -Uri "$orgUrl/$project/_apis/distributedtask/variablegroups/$($variableGroup.id)" -Body (ConvertTo-Json -Depth 5 $variableGroup) | Out-Null
+}
+
+Write-Host "`nChecking for development-hub-pipelines repository." -ForegroundColor Blue
+try {
+ $pipelinesRepo = Invoke-RestMethod -Headers $headers -Uri "$orgUrl/$project/_apis/git/repositories/development-hub-pipelines"
+ Write-Host "`nExisting repository found." -ForegroundColor Blue
+}
+catch [System.Net.WebException] {
+ if (!$_.Exception.Response.StatusCode.Value__ -eq 404) {
+ throw
+ }
+
+ Write-Host "`nRepository not found. Creating development-hub-pipelines repository." -ForegroundColor Blue
+ $pipelinesRepo = Invoke-RestMethod -Method Post -Headers $headers -Uri "$orgUrl/$project/_apis/git/repositories" -Body (ConvertTo-Json -Depth 5 @{
+ name = "development-hub-pipelines"
+ project = $projectReference
+ })
+
+ Write-Host "`nImporting repository from github.com/ewingjm/development-hub-pipelines." -ForegroundColor Blue
+ $importRequest = Invoke-RestMethod -Method Post -Headers $headers -Uri "$orgUrl/$project/_apis/git/repositories/development-hub-pipelines/importRequests" -Body (ConvertTo-Json -Depth 5 @{
+ parameters = @{
+ gitSource = @{
+ url = "https://github.com/ewingjm/development-hub-pipelines.git"
+ }
+ }
+ })
+
+ while ($true) {
+ Write-Host "`nWaiting for repository import to complete..." -ForegroundColor Blue
+ $importRequest = Invoke-RestMethod -Headers $headers -Uri "$orgUrl/$project/_apis/git/repositories/development-hub-pipelines/importRequests/$($importRequest.importRequestId)"
+
+ if ($importRequest.status -eq "completed") {
+ Write-Host "`nRepository import complete." -ForegroundColor Blue
+ break
+ }
+ else {
+ Start-Sleep -Seconds 10
+ }
+ }
+}
+
+Write-Host "`nChecking for existing Development Hub project configuration for '$project'." -ForegroundColor Blue
+$devHubProject = (Get-CrmRecords -conn $conn -EntityLogicalName devhub_project -FilterAttribute devhub_name -FilterOperator eq -FilterValue $project -Fields devhub_deleteenvironmentpipelineid, devhub_mergepipelineid -TopCount 1).CrmRecords[0]
+if (!$devHubProject) {
+ Write-Host "`nDevelopment Hub project not found. Creating project record." -ForegroundColor Blue
+ $devHubProjectId = New-CrmRecord -conn $conn -EntityLogicalName devhub_project -Fields @{
+ devhub_name = $project
+ }
+ $devHubProject = Get-CrmRecord -conn $conn -EntityLogicalName devhub_project -Id $devHubProjectId -Fields devhub_name, devhub_deleteenvironmentpipelineid, devhub_mergepipelineid
+}
+else {
+ Write-Host "`nUsing existing project." -ForegroundColor Blue
+}
+
+Write-Host "`nChecking for existing Development Hub pipeline configuration." -ForegroundColor Blue
+$pipelines = Invoke-RestMethod -Headers $headers -Uri "$orgUrl/$project/_apis/pipelines" | Select-Object -ExpandProperty value
+if (!$devHubProject.devhub_mergepipelineid) {
+ Write-Host "`nExisting Development Hub project solution merge pipeline not configured. Checking for existing Azure DevOps pipeline." -ForegroundColor Blue
+ $mergePipeline = $pipelines | Where-Object name -eq "development-hub.merge" | Select-Object -First 1
+
+ if ($mergePipeline) {
+ Write-Host "`nUpdating project using existing Azure DevOps pipeline '$($mergePipeline.name)'." -ForegroundColor Blue
+ }
+ else {
+ Write-Host "`nExisting Azure DevOps pipeline not found. Creating new solution merge pipeline." -ForegroundColor Blue
+ $mergePipeline = Invoke-RestMethod -Method Post -Headers $headers -Uri "$orgUrl/$project/_apis/pipelines" -Body (ConvertTo-Json -Depth 5 @{
+ folder = "development-hub"
+ name = "development-hub.merge"
+ configuration = @{
+ type = "yaml"
+ path = "/azure-pipelines-merge.yml"
+ repository = @{
+ id = $pipelinesRepo.id
+ name = "development-hub-pipelines"
+ type = "azureReposGit"
+ }
+ }
+ })
+ }
+
+ $devHubProject | Add-Member -MemberType NoteProperty -Name devhub_mergepipelineid -Value $mergePipeline.id.ToString()
+ Update-CrmRecord -conn $conn -CrmRecord $devHubProject
+}
+else {
+ Write-Host "`nUsing existing solution merge pipeline configured for project." -ForegroundColor Blue
+}
+
+if (!$devHubProject.devhub_deleteenvironmentpipelineid) {
+ Write-Host "`nExisting Development Hub project environment deletion pipeline not configured. Checking for existing Azure DevOps pipeline." -ForegroundColor Blue
+ $deleteEnvironmentPipeline = $pipelines | Where-Object name -eq "development-hub.delete-environment" | Select-Object -First 1
+
+ if ($deleteEnvironmentPipeline) {
+ Write-Host "`nUpdating project using existing Azure DevOps pipeline '$($deleteEnvironmentPipeline.name)'." -ForegroundColor Blue
+ }
+ else {
+ Write-Host "`nExisting Azure DevOps pipeline not found. Creating new environment deletion pipeline." -ForegroundColor Blue
+ $deleteEnvironmentPipeline = Invoke-RestMethod -Method Post -Headers $headers -Uri "$orgUrl/$project/_apis/pipelines" -Body (ConvertTo-Json -Depth 5 @{
+ folder = "development-hub"
+ name = "development-hub.delete-environment"
+ configuration = @{
+ type = "yaml"
+ path = "/azure-pipelines-environment-delete.yml"
+ repository = @{
+ id = $pipelinesRepo.id
+ name = "development-hub-pipelines"
+ type = "azureReposGit"
+ }
+ }
+ })
+ }
+
+ $devHubProject | Add-Member -MemberType NoteProperty -Name devhub_deleteenvironmentpipelineid -Value $deleteEnvironmentPipeline.id.ToString()
+ Update-CrmRecord -conn $conn -CrmRecord $devHubProject
+}
+else {
+ Write-Host "`nUsing existing environment deletion pipeline configured for project." -ForegroundColor Blue
+}
+
+Write-Host "`nGranting Azure DevOps pipelines permission to resources." -ForegroundColor Blue
+$headers.Accept = $headers.Accept + "-preview"
+$pipelines = @(
+ @{
+ id = $deleteEnvironmentPipeline.id
+ authorized = $true
+ },
+ @{
+ id = $mergePipeline.id
+ authorized = $true
+ })
+Invoke-RestMethod -Method Patch -Headers $headers -Uri "$orgUrl/$project/_apis/pipelines/pipelinepermissions" -Body (ConvertTo-json -Depth 5 @(
+ @{
+ resource = @{
+ type = "variablegroup"
+ id = $variableGroup.id
+ }
+ pipelines = $pipelines
+ },
+ @{
+ resource = @{
+ type = "endpoint"
+ id = $serviceConnection.id
+ }
+ pipelines = $pipelines
+ },
+ @{
+ resource = @{
+ type = "repository"
+ id = "$($projectReference.id).$($pipelinesRepo.id)"
+ }
+ pipelines = $pipelines
+ }
+ )) | Out-Null
+
+Write-Host "`nDone." -ForegroundColor Green
\ No newline at end of file
diff --git a/samples/azure-pipelines-extract.yml b/samples/azure-pipelines-extract.yml
deleted file mode 100644
index 9e4c5b3..0000000
--- a/samples/azure-pipelines-extract.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-name: 'Solution merge'
-pool:
- vmImage: windows-latest
-trigger: none
-steps:
- - checkout: self
- persistCredentials: true
- - task: PowerShell@2
- inputs:
- workingDirectory: $(Build.SourcesDirectory)
- filePath: 'scripts/Merge-SolutionMerge.ps1'
- arguments: '-ClientId "$(clientId)" -TenantId "$(tenantId)" -ClientSecret (ConvertTo-SecureString "$(clientSecret)" -AsPlainText -Force) -SolutionMergeId "$(solutionMergeId)" -DevEnvironmentUrl "$(devEnvironmentUrl)"'
- displayName: Extract and commit
- env:
- SYSTEM_ACCESSTOKEN: $(System.AccessToken)
\ No newline at end of file
diff --git a/samples/scripts/Merge-SolutionMerge.ps1 b/samples/scripts/Merge-SolutionMerge.ps1
deleted file mode 100644
index 2d1a6e6..0000000
--- a/samples/scripts/Merge-SolutionMerge.ps1
+++ /dev/null
@@ -1,244 +0,0 @@
-param (
- [Parameter()]
- [String]
- $ClientId,
- [Parameter()]
- [String]
- $TenantId,
- [Parameter()]
- [SecureString]
- $ClientSecret,
- [Parameter()]
- [String]
- $SolutionMergeId,
- [Parameter()]
- [String]
- $DevEnvironmentUrl
-)
-
-Install-Module ADAL.PS -Scope CurrentUser -Force
-
-Write-Host "Installing solution packager."
-
-$coreToolsPath = nuget install Microsoft.CrmSdk.CoreTools -o (Join-Path $env:TEMP -ChildPath packages) | Where-Object { $_ -like "*Installing package *'Microsoft.CrmSdk.CoreTools' to '*'." } | Select-String -Pattern "to '(.*)'" | ForEach-Object { $_.Matches[0].Groups[1].Value }
-$solutionPackager = Get-ChildItem -Filter "SolutionPackager.exe" -Path $coreToolsPath -Recurse
-
-function Get-WebApiHeaders ($url, $clientId, $tenantId, $clientSecret) {
- Write-Host "Getting access token for $url for client ID $clientId."
- $tokenResponse = Get-AdalToken -Resource $url -ClientId $clientId -Authority "https://login.microsoftonline.com/$tenantId" -ClientSecret $clientSecret -Verbose
- $token = $tokenResponse.AccessToken
-
- return @{
- "method" = "GET"
- "authorization" = "Bearer $token"
- "content-type" = "application/json"
- }
-}
-
-function Merge-SourceBranch ($Branch) {
- Write-Host "Source branch provided. Squashing $Branch."
- git merge origin/$Branch --squash --no-commit;
- $result = git merge HEAD
- if ($result[0] -like "*error*") {
- Write-Error "Unable to automatically merge the source branch due to a conflict."
- }
-}
-
-function Export-Solution ($Headers, $SolutionName, $Managed, $Path) {
- Write-Host "Exporting $SolutionName. Managed: $Managed."
- $response = Invoke-RestMethod -Uri "$($extractWebApiUrl)/ExportSolutionAsync" `
- -Method POST `
- -Headers $Headers `
- -UseBasicParsing `
- -Body (ConvertTo-Json @{ SolutionName = $SolutionName; Managed = $Managed })
- Write-Host "Waiting for solution export job to complete. AsyncOperationId: $($response.AsyncOperationId) ExportJobId:$($response.ExportJobId)"
-
- $timeOutEnd = [DateTime]::Now.AddMinutes(15);
- $complete = $false
- while (!$complete) {
- Start-Sleep -Seconds 10
- if ($timeOutEnd -lt [DateTime]::Now) {
- throw "Solution did not export within 15 minute timeout"
- }
-
- $asyncOperation = Invoke-RestMethod -Uri "$($extractWebApiUrl)/asyncoperations($($response.AsyncOperationId))?`$select=statuscode,message" -Headers $Headers -UseBasicParsing
- $complete = $asyncOperation.statuscode -eq 30
- if (!$complete -and $asyncOperation.statuscode -in @(22, 31, 32)) {
- throw "Solution export async operation failed: $($asyncOperation.message)"
- }
- }
-
- Write-Host "Export job completed. Downloading solution export data."
- $downloadResponse = Invoke-RestMethod -Uri "$($extractWebApiUrl)/DownloadSolutionExportData" `
- -Method POST `
- -Headers $Headers `
- -UseBasicParsing `
- -Body (ConvertTo-Json @{ ExportJobId = $response.ExportJobId })
-
- Write-Host "Writing solution to $Path."
- [IO.File]::WriteAllBytes($Path, [Convert]::FromBase64String($downloadResponse.ExportSolutionFile));
-}
-
-Write-Host "Authenticating to development environment."
-$devWebApiHeaders = Get-WebApiHeaders -url $DevEnvironmentUrl -clientId $ClientId -tenantId $TenantId -clientSecret $ClientSecret
-$devWebApiUrl = "$DevEnvironmentUrl/api/data/v9.1"
-
-Write-Host "Getting solution merge $SolutionMergeId."
-$select = 'devhub_sourcebranch,statuscode'
-$expand = 'createdby($select=fullname,internalemailaddress),devhub_TargetSolution($select=devhub_uniquename;$expand=devhub_StagingEnvironment($select=devhub_url),devhub_Repository($select=devhub_sourcecontrolstrategy,devhub_extractbuilddefinitionid,devhub_targetbranch)),devhub_Issue($select=devhub_type,devhub_name,devhub_azuredevopsworkitemid,devhub_developmentsolution)'
-$solutionMerge = Invoke-RestMethod -Uri "$devWebApiUrl/devhub_solutionmerges($SolutionMergeId)?`$select=$select&`$expand=$expand" -Headers $devWebApiHeaders
-
-Write-Host "Setting git user configuration to solution merge creator: $($solutionMerge.createdby.internalemailaddress)."
-git config --global user.email $solutionMerge.createdby.internalemailaddress
-git config --global user.name $solutionMerge.createdby.fullname
-
-Write-Host "Checking source control strategy."
-if ($solutionMerge.devhub_TargetSolution.devhub_Repository.devhub_sourcecontrolstrategy -eq 353400000) {
- Write-Host "Source control strategy is pull request."
- Write-Host "Calculating branch name from solution merge issue."
- $branchPrefix = if ($solutionMerge.devhub_Issue.devhub_type -eq 353400001) { "feature/" } else { "bugfix/" }
- $branchName = $solutionMerge.devhub_Issue.devhub_name.ToLower().Replace(' ', '-') -replace "[^a-zA-Z0-9\s-]"
- $calculatedBranch = "$branchPrefix$branchName"
-
- Write-Host "Checking if $calculatedBranch exists."
- $updateExistingBranch = $null -ne (git rev-parse --verify --quiet "origin/$calculatedBranch")
- if ($updateExistingBranch) {
- Write-Host "Branch already exists. Updating existing branch at $calculatedBranch."
- git checkout "$calculatedBranch"
- }
- else {
- Write-Host "Branch not found. Creating branch $calculatedBranch."
- git checkout -b "$calculatedBranch"
- }
-}
-else {
- Write-Host "Source control strategy is push. Checking out $($solutionMerge.devhub_TargetSolution.devhub_Repository.devhub_targetbranch)"
- git checkout $($solutionMerge.devhub_TargetSolution.devhub_Repository.devhub_targetbranch)
-}
-
-if ($solutionMerge.devhub_sourcebranch) {
- Merge-SourceBranch -Branch $solutionMerge.devhub_sourcebranch
-}
-
-Write-Host "Authenticating to extract environment."
-$extractUrl = $solutionMerge.devhub_TargetSolution.devhub_StagingEnvironment.devhub_url
-$extractWebApiHeaders = Get-WebApiHeaders -url $extractUrl -clientId $ClientId -tenantId $TenantId -clientSecret $ClientSecret
-$extractWebApiUrl = "$($extractUrl)/api/data/v9.1"
-
-$unmanagedZipFilePath = Join-Path -Path $env:TEMP -ChildPath "$($solutionMerge.devhub_TargetSolution.devhub_uniquename).zip"
-Export-Solution `
- -Headers $extractWebApiHeaders `
- -SolutionName $solutionMerge.devhub_TargetSolution.devhub_uniquename `
- -Managed $false `
- -Path $unmanagedZipFilePath
-
-Export-Solution `
- -Headers $extractWebApiHeaders `
- -SolutionName $solutionMerge.devhub_TargetSolution.devhub_uniquename `
- -Managed $true `
- -Path (Join-Path -Path $env:TEMP -ChildPath "$($solutionMerge.devhub_TargetSolution.devhub_uniquename)_managed.zip")
-
-$solutionFolder = Get-ChildItem -Filter $solutionMerge.devhub_TargetSolution.devhub_uniquename -Path "./src/solutions" -Directory
-$extractFolder = Join-Path -Path $solutionFolder.FullName -ChildPath "extract"
-Write-Host "Extracting solutions with the Solution Packager to $extractFolder."
-$solutionPackagerPath = $solutionPackager.FullName
-& $solutionPackagerPath /action:Extract /zipfile:$unmanagedZipFilePath /folder:$extractFolder /packagetype:Both /allowWrite:Yes /allowDelete:Yes
-
-git add .
-git reset -- NuGet.config
-
-Write-Host "Calculating commit message from solution merge issue."
-$commitPrefix = if ($solutionMerge.devhub_Issue.devhub_type -eq 353400001) { "feat: " } else { "fix: " }
-$commitMessage = $solutionMerge.devhub_Issue.devhub_name
-$buildNumber = $commitMessage -replace "[^a-zA-Z0-9\s]"
-Write-Host "##vso[build.updatebuildnumber]$buildNumber"
-
-$commitTrailers = @"
-Solution-merge-id: $SolutionMergeId
-Solution-merge-creator: $($solutionMerge.createdby.fullname) <$($solutionMerge.createdby.internalemailaddress)>
-"@
-
-if ($solutionMerge.devhub_Issue.devhub_azuredevopsworkitemid) {
- Write-Host "Committing '$commitPrefix$commitMessage' with work item $($solutionMerge.devhub_Issue.devhub_azuredevopsworkitemid)."
- git commit -m "$commitPrefix$commitMessage" -m "#$($solutionMerge.devhub_Issue.devhub_azuredevopsworkitemid)" -m "$commitTrailers";
-}
-else {
- Write-Host "Committing '$commitPrefix$commitMessage'."
- git commit -m "$commitPrefix$commitMessage" -m "$commitTrailers"
-}
-
-if ($solutionMerge.devhub_TargetSolution.devhub_Repository.devhub_sourcecontrolstrategy -eq 353400000) {
- $remoteOrigin = [Uri]::new((git config --get remote.origin.url))
- if ($remoteOrigin.Host -eq 'dev.azure.com') {
- $org = $remoteOrigin.UserInfo
- $project = $remoteOrigin.Segments[2].Replace('/', '')
- $repository = $remoteOrigin.Segments[4]
- }
- else {
- $org = $remoteOrigin.Host.Split('.')[0]
- $project = $remoteOrigin.Segments[1].Replace('/', '')
- $repository = $remoteOrigin.Segments[3]
- }
-
- Write-Host "Checking for existing pull request"
- $result = Invoke-RestMethod `
- -Uri "https://dev.azure.com/$org/$project/_apis/git/repositories/$repository/pullRequests?searchCriteria.sourceRefName=refs/heads/$calculatedBranch&searchCriteria.targetRefName=refs/heads/$($solutionMerge.devhub_TargetSolution.devhub_Repository.devhub_targetbranch)&api-version=6.0" `
- -Headers @{ 'authorization' = "Bearer $env:SYSTEM_ACCESSTOKEN"; 'content-type' = 'application/json' }
-
- if ($result.value.Count -eq 0) {
- Write-Host "Publishing pull request branch."
- git push -u origin HEAD
-
- Write-Host "Creating pull request from refs/heads/$calculatedBranch into refs/heads/$($solutionMerge.devhub_TargetSolution.devhub_Repository.devhub_targetbranch)."
- $result = Invoke-RestMethod `
- -Uri "https://dev.azure.com/$org/$project/_apis/git/repositories/$repository/pullRequests?api-version=6.0" `
- -Method POST `
- -Headers @{ 'authorization' = "Bearer $env:SYSTEM_ACCESSTOKEN"; 'content-type' = 'application/json' } `
- -UseBasicParsing `
- -Body (ConvertTo-Json `
- @{
- title = "$commitPrefix$commitMessage";
- sourceRefName = "refs/heads/$calculatedBranch";
- targetRefName = "refs/heads/$($solutionMerge.devhub_TargetSolution.devhub_Repository.devhub_targetbranch)";
- description = @"
-
-$commitTrailers
-"@
- })
-
- if ($solutionMerge.devhub_Issue.devhub_azuredevopsworkitemid) {
- Write-Host "Linking pull request to work item $($solutionMerge.devhub_Issue.devhub_azuredevopsworkitemid)"
- $result = Invoke-RestMethod `
- -Uri "https://dev.azure.com/$org/$project/_apis/wit/workItems/$($solutionMerge.devhub_Issue.devhub_azuredevopsworkitemid)?api-version=4.0-preview" `
- -Headers @{ 'authorization' = "Bearer $env:SYSTEM_ACCESSTOKEN"; 'content-type' = 'application/json-patch+json' } `
- -Method PATCH `
- -Body (ConvertTo-Json -Depth 100 @(
- @{
- op = 'add';
- path = '/relations/-';
- value =
- @{
- rel = "ArtifactLink";
- url = $($result.artifactId)
- attributes = @{
- name = "Pull Request"
- }
- }
- }
- )
- )
- }
- }
-
- Write-Host "Updating solution merge status to 'Awaiting PR Approval'."
- $solutionMerge = Invoke-RestMethod `
- -Method PATCH `
- -Uri "$devWebApiUrl/devhub_solutionmerges($SolutionMergeId)" `
- -Headers $devWebApiHeaders `
- -Body (ConvertTo-Json @{
- statuscode = 353400007
- })
-}
-
-Write-Host "Pushing new commit."
-git push origin
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/AppModuleSiteMaps/devhub_DevelopmentHub/AppModuleSiteMap.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/AppModuleSiteMaps/devhub_DevelopmentHub/AppModuleSiteMap.xml
index eeeec2f..696ad9f 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/AppModuleSiteMaps/devhub_DevelopmentHub/AppModuleSiteMap.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/AppModuleSiteMaps/devhub_DevelopmentHub/AppModuleSiteMap.xml
@@ -1,6 +1,10 @@
devhub_DevelopmentHub
+ False
+ True
+ True
+ True
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/AppModuleSiteMaps/devhub_DevelopmentHub/AppModuleSiteMap_managed.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/AppModuleSiteMaps/devhub_DevelopmentHub/AppModuleSiteMap_managed.xml
index db3911f..fb9316b 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/AppModuleSiteMaps/devhub_DevelopmentHub/AppModuleSiteMap_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/AppModuleSiteMaps/devhub_DevelopmentHub/AppModuleSiteMap_managed.xml
@@ -1,6 +1,10 @@
devhub_DevelopmentHub
+ False
+ True
+ True
+ True
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/Entity.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/Entity.xml
index af9ece8..6f4f3a6 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/Entity.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/Entity.xml
@@ -131,6 +131,86 @@
+
+ nvarchar
+ devhub_deleteenvironmentpipelineid
+ devhub_deleteenvironmentpipelineid
+ none
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
+ auto
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0.2.22
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+
+ 0
+ 0
+ 0
+ 0
+ text
+ 10
+ 20
+
+
+
+
+
+
+
+
+ nvarchar
+ devhub_mergepipelineid
+ devhub_mergepipelineid
+ required
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
+ auto
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0.2.22
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+
+ 0
+ 0
+ 0
+ 0
+ text
+ 10
+ 20
+
+
+
+
+
+
+
nvarchar
devhub_name
@@ -453,6 +533,7 @@
owningbusinessunit
owningbusinessunit
none
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
0
1
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/card/{4cf86fbb-f255-4cdb-8669-270a06a16047}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/card/{4cf86fbb-f255-4cdb-8669-270a06a16047}.xml
index b8e01c0..55c10f6 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/card/{4cf86fbb-f255-4cdb-8669-270a06a16047}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/card/{4cf86fbb-f255-4cdb-8669-270a06a16047}.xml
@@ -18,6 +18,15 @@
+
+
+
+
+
+
+ |
+
+
@@ -61,6 +70,14 @@
+
+
+
+
+
+
+ |
+
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/card/{4cf86fbb-f255-4cdb-8669-270a06a16047}_managed.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/card/{4cf86fbb-f255-4cdb-8669-270a06a16047}_managed.xml
index f9dd5ab..55c10f6 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/card/{4cf86fbb-f255-4cdb-8669-270a06a16047}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/card/{4cf86fbb-f255-4cdb-8669-270a06a16047}_managed.xml
@@ -18,6 +18,15 @@
+
+
+
+
+
+
+ |
+
+
@@ -31,7 +40,7 @@
-
+
|
@@ -56,11 +65,19 @@
-
+
|
+
+
+
+
+
+
+ |
+
@@ -71,13 +88,13 @@
-
+
|
-
+
|
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/main/{c6c5322c-30c9-4984-a93e-7f9b1f2056bc}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/main/{c6c5322c-30c9-4984-a93e-7f9b1f2056bc}.xml
index 058e21f..eac343e 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/main/{c6c5322c-30c9-4984-a93e-7f9b1f2056bc}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/main/{c6c5322c-30c9-4984-a93e-7f9b1f2056bc}.xml
@@ -7,14 +7,14 @@
1
-
+
+
+
+
+
+ |
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
-
+
devhub_repository
{111D5D2E-1995-4AE6-A327-817F2BBE5898}
+ {111D5D2E-1995-4AE6-A327-817F2BBE5898}
true
devhub_Project_devhub_Repository
5
- Fixed
+ Auto
|
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/main/{c6c5322c-30c9-4984-a93e-7f9b1f2056bc}_managed.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/main/{c6c5322c-30c9-4984-a93e-7f9b1f2056bc}_managed.xml
index 058e21f..eac343e 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/main/{c6c5322c-30c9-4984-a93e-7f9b1f2056bc}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/main/{c6c5322c-30c9-4984-a93e-7f9b1f2056bc}_managed.xml
@@ -7,14 +7,14 @@
1
-
+
+
+
+
+
+ |
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
-
+
devhub_repository
{111D5D2E-1995-4AE6-A327-817F2BBE5898}
+ {111D5D2E-1995-4AE6-A327-817F2BBE5898}
true
devhub_Project_devhub_Repository
5
- Fixed
+ Auto
|
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quick/{2f6666e0-ca2d-407d-97ca-ce29ff9abc72}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quick/{2f6666e0-ca2d-407d-97ca-ce29ff9abc72}.xml
index f88fedf..2b0111d 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quick/{2f6666e0-ca2d-407d-97ca-ce29ff9abc72}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quick/{2f6666e0-ca2d-407d-97ca-ce29ff9abc72}.xml
@@ -28,7 +28,15 @@
-
+
+
+
+
+
+ |
+ |
+
+
@@ -42,6 +50,9 @@
+
+
+
1
1
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quick/{2f6666e0-ca2d-407d-97ca-ce29ff9abc72}_managed.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quick/{2f6666e0-ca2d-407d-97ca-ce29ff9abc72}_managed.xml
index 37f57bd..2b0111d 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quick/{2f6666e0-ca2d-407d-97ca-ce29ff9abc72}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quick/{2f6666e0-ca2d-407d-97ca-ce29ff9abc72}_managed.xml
@@ -22,15 +22,23 @@
-
+
|
-
+
-
+
+
+
+ |
+ |
+
+
+
+
|
@@ -42,6 +50,9 @@
+
+
+
1
1
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quickCreate/{637990c3-2b78-eb11-a812-000d3ab314cb}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quickCreate/{637990c3-2b78-eb11-a812-000d3ab314cb}.xml
index b8bf3a8..9dc56f2 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quickCreate/{637990c3-2b78-eb11-a812-000d3ab314cb}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quickCreate/{637990c3-2b78-eb11-a812-000d3ab314cb}.xml
@@ -27,6 +27,22 @@
|
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quickCreate/{637990c3-2b78-eb11-a812-000d3ab314cb}_managed.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quickCreate/{637990c3-2b78-eb11-a812-000d3ab314cb}_managed.xml
index b8bf3a8..9dc56f2 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quickCreate/{637990c3-2b78-eb11-a812-000d3ab314cb}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Project/FormXml/quickCreate/{637990c3-2b78-eb11-a812-000d3ab314cb}_managed.xml
@@ -27,6 +27,22 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/Entity.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/Entity.xml
index 2b71012..b4cdb18 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/Entity.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/Entity.xml
@@ -131,46 +131,6 @@
-
- nvarchar
- devhub_extractbuilddefinitionid
- devhub_extractbuilddefinitionid
- required
- ValidForAdvancedFind|ValidForForm|ValidForGrid
- auto
- 1
- 1
- 1
- 1
- 1
- 0
- 0.2.1
- 1
- 1
- 1
- 1
- 1
- 0
- 0
- 0
- 1
- 1
- 0
-
- 0
- 0
- 1
- 0
- text
- 10
- 20
-
-
-
-
-
-
-
nvarchar
devhub_name
@@ -217,6 +177,7 @@
devhub_project
required
ValidForAdvancedFind|ValidForForm|ValidForGrid
+ auto
1
1
1
@@ -292,6 +253,7 @@
devhub_solutionmergecommitflow
none
ValidForAdvancedFind|ValidForForm|ValidForGrid
+ auto
1
1
1
@@ -648,6 +610,7 @@
owningbusinessunit
owningbusinessunit
none
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
0
1
@@ -969,18 +932,6 @@
-
- devhub_ExtractBuildDefinitionID
- devhub_extractbuilddefinitionid
- 0.2.1
- 0
-
- devhub_extractbuilddefinitionid
-
-
-
-
-
devhub_ProjectRepository
devhub_projectrepository
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/card/{9566d163-0a00-4c16-9274-2e5b6cf87421}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/card/{9566d163-0a00-4c16-9274-2e5b6cf87421}.xml
index 6c919de..23f820b 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/card/{9566d163-0a00-4c16-9274-2e5b6cf87421}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/card/{9566d163-0a00-4c16-9274-2e5b6cf87421}.xml
@@ -20,7 +20,7 @@
-
+
@@ -78,14 +78,6 @@
|
|
-
-
-
-
-
-
- |
-
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/card/{9566d163-0a00-4c16-9274-2e5b6cf87421}_managed.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/card/{9566d163-0a00-4c16-9274-2e5b6cf87421}_managed.xml
index 6c919de..23f820b 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/card/{9566d163-0a00-4c16-9274-2e5b6cf87421}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/card/{9566d163-0a00-4c16-9274-2e5b6cf87421}_managed.xml
@@ -20,7 +20,7 @@
-
+
@@ -78,14 +78,6 @@
|
|
-
-
-
-
-
-
- |
-
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/main/{f2a1e497-d02a-43b1-8466-f2c2723ef745}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/main/{f2a1e497-d02a-43b1-8466-f2c2723ef745}.xml
index a731b45..c7085f0 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/main/{f2a1e497-d02a-43b1-8466-f2c2723ef745}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/main/{f2a1e497-d02a-43b1-8466-f2c2723ef745}.xml
@@ -35,14 +35,6 @@
-
-
-
-
-
-
- |
-
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/main/{f2a1e497-d02a-43b1-8466-f2c2723ef745}_managed.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/main/{f2a1e497-d02a-43b1-8466-f2c2723ef745}_managed.xml
index a731b45..c7085f0 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/main/{f2a1e497-d02a-43b1-8466-f2c2723ef745}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/main/{f2a1e497-d02a-43b1-8466-f2c2723ef745}_managed.xml
@@ -35,14 +35,6 @@
-
-
-
-
-
-
- |
-
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/quick/{a6308f8a-72f9-4050-aaa5-c51c6846c657}_managed.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/quick/{a6308f8a-72f9-4050-aaa5-c51c6846c657}_managed.xml
index 66c7163..2b35022 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/quick/{a6308f8a-72f9-4050-aaa5-c51c6846c657}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/quick/{a6308f8a-72f9-4050-aaa5-c51c6846c657}_managed.xml
@@ -22,7 +22,7 @@
-
+
|
@@ -30,7 +30,7 @@
-
+
|
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/quickCreate/{cc49a47b-2e78-eb11-a812-000d3ab20581}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/quickCreate/{cc49a47b-2e78-eb11-a812-000d3ab20581}.xml
index dab8647..77e1292 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/quickCreate/{cc49a47b-2e78-eb11-a812-000d3ab20581}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/quickCreate/{cc49a47b-2e78-eb11-a812-000d3ab20581}.xml
@@ -35,14 +35,6 @@
-
-
-
-
-
-
- |
-
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/quickCreate/{cc49a47b-2e78-eb11-a812-000d3ab20581}_managed.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/quickCreate/{cc49a47b-2e78-eb11-a812-000d3ab20581}_managed.xml
index dab8647..77e1292 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/quickCreate/{cc49a47b-2e78-eb11-a812-000d3ab20581}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/FormXml/quickCreate/{cc49a47b-2e78-eb11-a812-000d3ab20581}_managed.xml
@@ -35,14 +35,6 @@
-
-
-
-
-
-
- |
-
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{111d5d2e-1995-4ae6-a327-817f2bbe5898}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{111d5d2e-1995-4ae6-a327-817f2bbe5898}.xml
index 9bec86e..9a50603 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{111d5d2e-1995-4ae6-a327-817f2bbe5898}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{111d5d2e-1995-4ae6-a327-817f2bbe5898}.xml
@@ -14,7 +14,6 @@
|
|
|
- |
@@ -22,7 +21,6 @@
-
@@ -31,7 +29,7 @@
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{7c0c4b09-490e-4b46-8056-8cae14e1c81b}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{7c0c4b09-490e-4b46-8056-8cae14e1c81b}.xml
index bd0367c..9999efe 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{7c0c4b09-490e-4b46-8056-8cae14e1c81b}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{7c0c4b09-490e-4b46-8056-8cae14e1c81b}.xml
@@ -14,7 +14,6 @@
|
|
|
- |
@@ -22,13 +21,12 @@
-
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{b3814242-8d40-47c5-91a7-597ae9c6c6f9}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{b3814242-8d40-47c5-91a7-597ae9c6c6f9}.xml
index df54b55..08a1279 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{b3814242-8d40-47c5-91a7-597ae9c6c6f9}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{b3814242-8d40-47c5-91a7-597ae9c6c6f9}.xml
@@ -14,7 +14,6 @@
|
|
|
- |
@@ -22,7 +21,6 @@
-
@@ -30,8 +28,8 @@
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{b8582426-2c72-424d-bb66-9ae8a502b4a7}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{b8582426-2c72-424d-bb66-9ae8a502b4a7}.xml
index 065be27..c899ef3 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{b8582426-2c72-424d-bb66-9ae8a502b4a7}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{b8582426-2c72-424d-bb66-9ae8a502b4a7}.xml
@@ -14,7 +14,6 @@
|
|
|
- |
@@ -22,7 +21,6 @@
-
@@ -34,7 +32,7 @@
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{d73c3d97-9d01-4245-9f80-c55c34393305}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{d73c3d97-9d01-4245-9f80-c55c34393305}.xml
index 8382fd3..22f269f 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{d73c3d97-9d01-4245-9f80-c55c34393305}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_Repository/SavedQueries/{d73c3d97-9d01-4245-9f80-c55c34393305}.xml
@@ -14,7 +14,6 @@
|
|
|
- |
@@ -22,7 +21,6 @@
-
@@ -30,8 +28,8 @@
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_issue/FormXml/main/{97b0d9e0-dab1-41ae-8174-d252bfe633e6}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_issue/FormXml/main/{97b0d9e0-dab1-41ae-8174-d252bfe633e6}.xml
index d561049..5abaa55 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_issue/FormXml/main/{97b0d9e0-dab1-41ae-8174-d252bfe633e6}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_issue/FormXml/main/{97b0d9e0-dab1-41ae-8174-d252bfe633e6}.xml
@@ -5,132 +5,22 @@
0.0.1.0
1
1
-
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_solution/Entity.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_solution/Entity.xml
index 209b61a..ce9b7c8 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_solution/Entity.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_solution/Entity.xml
@@ -4,12 +4,53 @@
+
+ nvarchar
+ devhub_provisionenvironmentpipelineid
+ devhub_provisionenvironmentpipelineid
+ none
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
+ auto
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0.2.22
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+
+ 0
+ 0
+ 0
+ 0
+ text
+ 10
+ 20
+
+
+
+
+
+
+
lookup
devhub_repository
devhub_repository
required
ValidForAdvancedFind|ValidForForm|ValidForGrid
+ auto
1
1
1
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}.xml
index a1934eb..bc274ff 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}.xml
@@ -5,82 +5,37 @@
0.0.1.0
1
1
-
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}_managed.xml b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}_managed.xml
index 5a11746..bc274ff 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}_managed.xml
@@ -5,22 +5,58 @@
0.0.1.0
1
1
-
-
+
nvarchar
- devhub_clientid
- devhub_clientid
- required
+ devhub_commithash
+ devhub_commithash
+ none
ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
1
@@ -162,33 +162,33 @@
0
0
text
- 36
- 72
+ 40
+ 80
-
+
-
+
-
- nvarchar
- devhub_clientsecret
- devhub_clientsecret
- required
- ValidForAdvancedFind|ValidForForm|ValidForGrid
+
+ primarykey
+ devhub_environmentid
+ devhub_environmentid
+ systemrequired
+ ValidForAdvancedFind|RequiredForGrid
auto
- 1
+ 0
1
1
- 1
- 1
+ 0
+ 0
0
- 0.2.0
+ 0.0.1.0
1
1
1
- 1
+ 0
1
0
0
@@ -198,37 +198,34 @@
0
0
- 0
- 0
+ 1
+ 1
0
- text
- 100
- 200
-
+
-
+
-
- primarykey
- devhub_environmentid
- devhub_environmentid
- systemrequired
- ValidForAdvancedFind|RequiredForGrid
+
+ picklist
+ devhub_lifetime
+ devhub_lifetime
+ required
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
- 0
+ 1
1
1
- 0
- 0
+ 1
+ 1
0
- 0.0.1.0
+ 0.2.0
1
1
1
- 0
+ 1
1
0
0
@@ -238,14 +235,16 @@
0
0
- 1
+ 0
1
0
+ 353400000
+ devhub_lifetime
-
+
-
+
@@ -288,18 +287,18 @@
-
- nvarchar
- devhub_tenantid
- devhub_tenantid
- required
+
+ lookup
+ devhub_solution
+ devhub_solution
+ none
ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
1
1
1
1
- 1
+ 0
0
0.2.0
1
@@ -318,14 +317,13 @@
0
0
0
- text
- 36
- 72
+ single
+
-
+
-
+
@@ -354,9 +352,9 @@
1
0
- 0
+ 1
0
- 0
+ 1
0
url
200
@@ -613,6 +611,7 @@
owningbusinessunit
owningbusinessunit
none
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
0
1
@@ -733,7 +732,7 @@
auto
1
1
- 0
+ 1
0
1
0
@@ -812,7 +811,7 @@
0
0
- 0
+ 1
0
status
@@ -825,14 +824,34 @@
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -923,20 +942,6 @@
-
-
- devhub_Url
- devhub_url
- 0.0.1.0
- 0
-
- devhub_url
-
-
-
-
-
-
devhub_environments
1
0
@@ -995,7 +1000,7 @@
devhub_/Images/devhub_Environment.svg
devhub_/Images/devhub_Environment.svg
devhub_/Images/devhub_Environment.svg
- 0
+ 1
1
0
0
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/main/{9055186e-ceb9-4d30-bc5f-88433ecb87f1}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/main/{9055186e-ceb9-4d30-bc5f-88433ecb87f1}.xml
index 1352997..68c1f0a 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/main/{9055186e-ceb9-4d30-bc5f-88433ecb87f1}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/main/{9055186e-ceb9-4d30-bc5f-88433ecb87f1}.xml
@@ -12,7 +12,7 @@
-
+
@@ -36,54 +36,48 @@
-
+
-
+
+
|
|
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+ {3FE92E4D-4835-4CE6-A1BD-A85092283B6D}
+ true
+
+
|
|
-
+
-
+
-
- |
- |
-
-
-
-
-
-
+
|
+
+
+
-
+
@@ -106,7 +100,7 @@
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/main/{9055186e-ceb9-4d30-bc5f-88433ecb87f1}_managed.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/main/{9055186e-ceb9-4d30-bc5f-88433ecb87f1}_managed.xml
index 1352997..68c1f0a 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/main/{9055186e-ceb9-4d30-bc5f-88433ecb87f1}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/main/{9055186e-ceb9-4d30-bc5f-88433ecb87f1}_managed.xml
@@ -12,7 +12,7 @@
-
+
|
|
-
+
-
+
+
|
|
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+ {3FE92E4D-4835-4CE6-A1BD-A85092283B6D}
+ true
+
+
|
|
-
+
-
+
-
- |
- |
-
-
-
-
-
-
+
|
+
+
+
-
+
@@ -106,7 +100,7 @@
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quick/{a4a4927d-ee98-49e2-b2e8-80daf3f97bdf}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quick/{a4a4927d-ee98-49e2-b2e8-80daf3f97bdf}.xml
index 2c61e49..8a1619f 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quick/{a4a4927d-ee98-49e2-b2e8-80daf3f97bdf}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quick/{a4a4927d-ee98-49e2-b2e8-80daf3f97bdf}.xml
@@ -20,7 +20,7 @@
-
+
@@ -36,11 +36,11 @@
|
|
-
+
-
+
-
+
|
|
@@ -56,6 +56,14 @@
|
|
+
+
+
+
+
+
+ |
+
@@ -63,6 +71,9 @@
+
+
+
1
1
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quick/{a4a4927d-ee98-49e2-b2e8-80daf3f97bdf}_managed.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quick/{a4a4927d-ee98-49e2-b2e8-80daf3f97bdf}_managed.xml
index 2c61e49..8a1619f 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quick/{a4a4927d-ee98-49e2-b2e8-80daf3f97bdf}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quick/{a4a4927d-ee98-49e2-b2e8-80daf3f97bdf}_managed.xml
@@ -20,7 +20,7 @@
-
+
@@ -36,11 +36,11 @@
|
|
-
+
-
+
-
+
|
|
@@ -56,6 +56,14 @@
+
+
+
+
+
+
+ |
+
@@ -63,6 +71,9 @@
+
+
+
1
1
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quickCreate/{91515219-2b79-eb11-a812-002248414025}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quickCreate/{91515219-2b79-eb11-a812-002248414025}.xml
index ccae1d6..a2c3056 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quickCreate/{91515219-2b79-eb11-a812-002248414025}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quickCreate/{91515219-2b79-eb11-a812-002248414025}.xml
@@ -47,27 +47,10 @@
-
+
-
-
-
- |
- |
-
-
-
-
-
-
- |
-
-
-
-
-
+
-
|
@@ -82,7 +65,7 @@
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quickCreate/{91515219-2b79-eb11-a812-002248414025}_managed.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quickCreate/{91515219-2b79-eb11-a812-002248414025}_managed.xml
index ccae1d6..a2c3056 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quickCreate/{91515219-2b79-eb11-a812-002248414025}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/FormXml/quickCreate/{91515219-2b79-eb11-a812-002248414025}_managed.xml
@@ -47,27 +47,10 @@
-
+
-
-
-
- |
- |
-
-
-
-
-
-
- |
-
-
-
-
-
+
-
|
@@ -82,7 +65,7 @@
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{0ef451fd-9013-49fc-a71d-65288fff4cd5}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{0ef451fd-9013-49fc-a71d-65288fff4cd5}.xml
index a59f5fe..9f5baac 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{0ef451fd-9013-49fc-a71d-65288fff4cd5}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{0ef451fd-9013-49fc-a71d-65288fff4cd5}.xml
@@ -11,7 +11,9 @@
|
- |
+ |
+ |
+ |
@@ -21,7 +23,9 @@
-
+
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{315fb094-91e7-46be-a7bb-e3dd68c0431e}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{315fb094-91e7-46be-a7bb-e3dd68c0431e}.xml
index 804dd3e..301c6a4 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{315fb094-91e7-46be-a7bb-e3dd68c0431e}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{315fb094-91e7-46be-a7bb-e3dd68c0431e}.xml
@@ -11,8 +11,9 @@
|
- |
- |
+ |
+ |
+ |
@@ -27,6 +28,7 @@
+
| | | |
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{3bc6edba-36b0-4dd7-a26c-03c3a6d9e6f8}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{3bc6edba-36b0-4dd7-a26c-03c3a6d9e6f8}.xml
index bab7be6..2b3ff70 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{3bc6edba-36b0-4dd7-a26c-03c3a6d9e6f8}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{3bc6edba-36b0-4dd7-a26c-03c3a6d9e6f8}.xml
@@ -11,7 +11,9 @@
|
- |
+ |
+ |
+ |
@@ -21,10 +23,12 @@
-
+
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{698f250a-0eba-428c-adc4-1b8c4a2faf83}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{698f250a-0eba-428c-adc4-1b8c4a2faf83}.xml
index cffe60d..312c7b6 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{698f250a-0eba-428c-adc4-1b8c4a2faf83}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{698f250a-0eba-428c-adc4-1b8c4a2faf83}.xml
@@ -11,8 +11,9 @@
|
- |
- |
+ |
+ |
+ |
@@ -25,9 +26,10 @@
-
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{6bf35967-f49b-4411-93a1-31ccf95debe1}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{6bf35967-f49b-4411-93a1-31ccf95debe1}.xml
index 8e414db..1561cf8 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{6bf35967-f49b-4411-93a1-31ccf95debe1}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{6bf35967-f49b-4411-93a1-31ccf95debe1}.xml
@@ -11,8 +11,9 @@
|
- |
- |
+ |
+ |
+ |
@@ -28,6 +29,7 @@
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{eae132e9-cdcc-4e8c-90bd-3acb38bca6be}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{eae132e9-cdcc-4e8c-90bd-3acb38bca6be}.xml
index 64e068f..0f01fab 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{eae132e9-cdcc-4e8c-90bd-3acb38bca6be}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/SavedQueries/{eae132e9-cdcc-4e8c-90bd-3acb38bca6be}.xml
@@ -11,8 +11,9 @@
|
- |
- |
+ |
+ |
+ |
@@ -21,7 +22,6 @@
-
@@ -32,6 +32,8 @@
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_issue/FormXml/main/{97b0d9e0-dab1-41ae-8174-d252bfe633e6}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_issue/FormXml/main/{97b0d9e0-dab1-41ae-8174-d252bfe633e6}.xml
index 1f4bcd6..c19f08f 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_issue/FormXml/main/{97b0d9e0-dab1-41ae-8174-d252bfe633e6}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_issue/FormXml/main/{97b0d9e0-dab1-41ae-8174-d252bfe633e6}.xml
@@ -7,72 +7,20 @@
1
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/Entity.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/Entity.xml
index 8f1acd1..bca0a30 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/Entity.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/Entity.xml
@@ -131,6 +131,44 @@
+
+ multiselectpicklist
+ devhub_apptemplates
+ devhub_apptemplates
+ none
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
+ auto
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0.2.0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+
+ 0
+ 0
+ 0
+ 0
+ devhub_apptemplates
+
+
+
+
+
+
+
ntext
devhub_description
@@ -157,9 +195,9 @@
1
0
- 0
+ 1
0
- 0
+ 1
0
2000
@@ -250,6 +288,45 @@
+
+ picklist
+ devhub_mergestrategy
+ devhub_mergestrategy
+ required
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
+ auto
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0.2.0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+
+ 0
+ 0
+ 1
+ 0
+ 353400000
+ devhub_mergestrategy
+
+
+
+
+
+
+
int
devhub_minorversion
@@ -371,7 +448,7 @@
lookup
devhub_stagingenvironment
devhub_stagingenvironment
- required
+ none
ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
1
@@ -393,7 +470,7 @@
1
0
- 0
+ 1
0
0
0
@@ -432,9 +509,9 @@
1
0
- 0
+ 1
0
- 0
+ 1
0
text
65
@@ -732,6 +809,7 @@
owningbusinessunit
owningbusinessunit
none
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
0
1
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}.xml
index 90eddb5..178d288 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}.xml
@@ -14,7 +14,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+
-
+
-
+
|
@@ -57,29 +80,46 @@
|
-
+
-
+
+
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+ |
+ |
+
+
-
+
-
|
-
+
-
+
-
|
-
+
-
+
-
|
| |
@@ -167,6 +207,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1
1
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}_managed.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}_managed.xml
index 90eddb5..178d288 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}_managed.xml
@@ -14,7 +14,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+
-
+
-
+
|
@@ -57,29 +80,46 @@
|
-
+
-
+
+
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+ |
+ |
+
+
-
+
-
|
-
+
-
+
-
|
-
+
-
+
-
|
| |
@@ -167,6 +207,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1
1
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/quickCreate/{cb116382-2b79-eb11-a812-002248414025}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/quickCreate/{cb116382-2b79-eb11-a812-002248414025}.xml
index 94bfef1..d23e502 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/quickCreate/{cb116382-2b79-eb11-a812-002248414025}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/quickCreate/{cb116382-2b79-eb11-a812-002248414025}.xml
@@ -43,8 +43,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
-
+
+
+
+
+
+ |
+ |
+
+
@@ -57,13 +84,13 @@
|
-
+
-
+
@@ -71,7 +98,7 @@
|
|
-
+
@@ -79,26 +106,15 @@
|
|
-
+
|
|
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -116,6 +132,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1
1
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/quickCreate/{cb116382-2b79-eb11-a812-002248414025}_managed.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/quickCreate/{cb116382-2b79-eb11-a812-002248414025}_managed.xml
index 94bfef1..d23e502 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/quickCreate/{cb116382-2b79-eb11-a812-002248414025}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/quickCreate/{cb116382-2b79-eb11-a812-002248414025}_managed.xml
@@ -43,8 +43,35 @@
|
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
-
+
+
+
+
+
+ |
+ |
+
+
@@ -57,13 +84,13 @@
|
-
+
-
+
@@ -71,7 +98,7 @@
|
|
-
+
@@ -79,26 +106,15 @@
|
|
-
+
|
|
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -116,6 +132,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1
1
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{3fe92e4d-4835-4ce6-a1bd-a85092283b6d}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{3fe92e4d-4835-4ce6-a1bd-a85092283b6d}.xml
index 347a588..3c46185 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{3fe92e4d-4835-4ce6-a1bd-a85092283b6d}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{3fe92e4d-4835-4ce6-a1bd-a85092283b6d}.xml
@@ -11,8 +11,9 @@
|
- |
- |
+ |
+ |
+ |
@@ -25,9 +26,10 @@
-
-
+
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{62d1fe69-baec-452c-8dc6-b36843c1f186}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{62d1fe69-baec-452c-8dc6-b36843c1f186}.xml
index dca0a45..742b9c9 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{62d1fe69-baec-452c-8dc6-b36843c1f186}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{62d1fe69-baec-452c-8dc6-b36843c1f186}.xml
@@ -11,9 +11,9 @@
|
- |
+ |
|
- |
+ |
@@ -22,7 +22,6 @@
-
@@ -33,9 +32,10 @@
-
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{b387e88d-e36f-4847-b447-2e62155cd888}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{b387e88d-e36f-4847-b447-2e62155cd888}.xml
index 1c4af2a..18d5769 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{b387e88d-e36f-4847-b447-2e62155cd888}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{b387e88d-e36f-4847-b447-2e62155cd888}.xml
@@ -13,7 +13,7 @@
|
|
|
- |
+ |
| |
@@ -27,9 +27,9 @@
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{d0e17777-70d6-4b40-9c51-84212aab6740}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{d0e17777-70d6-4b40-9c51-84212aab6740}.xml
index 37c1335..c2cf40f 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{d0e17777-70d6-4b40-9c51-84212aab6740}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{d0e17777-70d6-4b40-9c51-84212aab6740}.xml
@@ -13,7 +13,7 @@
|
|
|
- |
+ |
@@ -24,8 +24,8 @@
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{dc37d79a-d704-4a34-9e50-1d27bc75c416}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{dc37d79a-d704-4a34-9e50-1d27bc75c416}.xml
index 8d06e95..d7089ea 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{dc37d79a-d704-4a34-9e50-1d27bc75c416}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{dc37d79a-d704-4a34-9e50-1d27bc75c416}.xml
@@ -13,7 +13,7 @@
|
|
|
- |
+ |
@@ -27,8 +27,8 @@
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{fe73ecfd-3c1e-4dc3-a6f6-3f8ed36ba3d4}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{fe73ecfd-3c1e-4dc3-a6f6-3f8ed36ba3d4}.xml
index 48c3c9e..8e04551 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{fe73ecfd-3c1e-4dc3-a6f6-3f8ed36ba3d4}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/SavedQueries/{fe73ecfd-3c1e-4dc3-a6f6-3f8ed36ba3d4}.xml
@@ -13,7 +13,7 @@
|
|
|
- |
+ |
@@ -27,8 +27,8 @@
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/Entity.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/Entity.xml
index 6447da2..88a615b 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/Entity.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/Entity.xml
@@ -210,41 +210,43 @@
-
- file
- devhub_developmentsolution
- devhub_developmentsolution
+
+ lookup
+ devhub_environment
+ devhub_environment
none
- ValidForForm|ValidForGrid
- disabled
- 0
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
+ auto
+ 1
1
- 0
+ 1
1
- 1
+ 0
0
- 0.1.20.0
+ 0.2.0
1
1
- 0
- 0
+ 1
+ 1
1
0
0
0
1
- 0
+ 1
0
0
0
0
0
+ single
+
-
+
-
+
@@ -347,6 +349,45 @@
+
+ picklist
+ devhub_mergestrategy
+ devhub_mergestrategy
+ required
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
+ auto
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0.2.0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+
+ 0
+ 0
+ 0
+ 0
+ -1
+ devhub_mergestrategy
+
+
+
+
+
+
+
nvarchar
devhub_name
@@ -849,6 +890,7 @@
owningbusinessunit
owningbusinessunit
none
+ ValidForAdvancedFind|ValidForForm|ValidForGrid
auto
0
1
@@ -969,7 +1011,7 @@
auto
1
1
- 0
+ 1
0
1
0
@@ -1076,19 +1118,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}.xml
index 314560d..f1b292f 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}.xml
@@ -12,11 +12,11 @@
-
+
-
+
-
+
@@ -35,12 +35,6 @@
-
-
-
-
-
- |
@@ -49,13 +43,14 @@
|
-
-
-
-
-
- |
+
+
+
+
+
+
+
@@ -63,19 +58,12 @@
|
-
+
|
|
-
-
-
-
-
-
-
@@ -83,19 +71,20 @@
|
-
+
|
|
-
+
-
+
+
|
-
+
@@ -103,49 +92,41 @@
| | |
-
+
-
+
-
+
-
+
+
+
+ |
+ |
+
+
+
+
-
+
+
+ false
+ <QuickFormIds><QuickFormId entityname="devhub_environment">a4a4927d-ee98-49e2-b2e8-80daf3f97bdf</QuickFormId></QuickFormIds>
+
+
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
@@ -164,11 +145,6 @@
-
-
-
-
- |
@@ -177,47 +153,25 @@
|
-
-
-
-
- |
-
-
-
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
-
-
- |
-
-
-
-
- |
+
+
+
+
+
+
+
-
+
-
-
- |
-
-
-
+
+
+
+ {"sortNotesByValue":"createdon"}
+ true
+
+
|
|
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}_managed.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}_managed.xml
index 314560d..f1b292f 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}_managed.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}_managed.xml
@@ -12,11 +12,11 @@
-
+
-
+
-
+
@@ -35,12 +35,6 @@
-
-
-
-
-
- |
@@ -49,13 +43,14 @@
|
-
-
-
-
-
- |
+
+
+
+
+
+
+
@@ -63,19 +58,12 @@
|
-
+
|
|
-
-
-
-
-
-
-
@@ -83,19 +71,20 @@
|
-
+
|
|
-
+
-
+
+
|
-
+
@@ -103,49 +92,41 @@
| | |
-
+
-
+
-
+
-
+
+
+
+ |
+ |
+
+
+
+
-
+
+
+ false
+ <QuickFormIds><QuickFormId entityname="devhub_environment">a4a4927d-ee98-49e2-b2e8-80daf3f97bdf</QuickFormId></QuickFormIds>
+
+
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
@@ -164,11 +145,6 @@
-
-
-
-
- |
@@ -177,47 +153,25 @@
|
-
-
-
-
- |
-
-
-
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
-
-
- |
-
-
-
-
- |
+
+
+
+
+
+
+
-
+
-
-
- |
-
-
-
+
+
+
+ {"sortNotesByValue":"createdon"}
+ true
+
+
|
|
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/RibbonDiff.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/RibbonDiff.xml
index 2f3a6d3..baba7bc 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/RibbonDiff.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/RibbonDiff.xml
@@ -6,6 +6,11 @@
+
+
+
+
+
@@ -32,6 +37,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -59,6 +75,9 @@
+
+
+
@@ -90,6 +109,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{131f5dd1-9e4a-ea11-a812-000d3a0b97ca}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{131f5dd1-9e4a-ea11-a812-000d3a0b97ca}.xml
index bc3f0d5..74f4e77 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{131f5dd1-9e4a-ea11-a812-000d3a0b97ca}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{131f5dd1-9e4a-ea11-a812-000d3a0b97ca}.xml
@@ -10,13 +10,14 @@
- |
- |
- |
- |
- |
+ |
|
- |
+ |
+ |
+ |
+ |
+ |
+ |
@@ -25,19 +26,22 @@
-
-
+
-
+
+
+
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{2baece6c-461c-4a01-9ab5-cae63af2eb7c}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{2baece6c-461c-4a01-9ab5-cae63af2eb7c}.xml
index cfa82ec..e1323ab 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{2baece6c-461c-4a01-9ab5-cae63af2eb7c}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{2baece6c-461c-4a01-9ab5-cae63af2eb7c}.xml
@@ -10,14 +10,14 @@
- |
- |
- |
- |
- |
- |
+ |
|
- |
+ |
+ |
+ |
+ |
+ |
+ |
@@ -32,11 +32,13 @@
-
-
+
+
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{4e38cbe4-9e4a-ea11-a812-000d3a0b97ca}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{4e38cbe4-9e4a-ea11-a812-000d3a0b97ca}.xml
index 9fa65d5..2720129 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{4e38cbe4-9e4a-ea11-a812-000d3a0b97ca}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{4e38cbe4-9e4a-ea11-a812-000d3a0b97ca}.xml
@@ -10,13 +10,14 @@
- |
- |
- |
- |
- |
+ |
|
- |
+ |
+ |
+ |
+ |
+ |
+ |
@@ -25,19 +26,22 @@
-
-
+
+
+
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{93d7173f-5b4a-4585-9aac-de791fe4d445}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{93d7173f-5b4a-4585-9aac-de791fe4d445}.xml
index 97c3e7e..9e5a1c2 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{93d7173f-5b4a-4585-9aac-de791fe4d445}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{93d7173f-5b4a-4585-9aac-de791fe4d445}.xml
@@ -10,14 +10,14 @@
- |
- |
- |
- |
- |
- |
+ |
|
- |
+ |
+ |
+ |
+ |
+ |
+ |
@@ -35,11 +35,13 @@
-
-
+
+
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{bcabbfd7-a184-e911-a97e-0022480186c3}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{bcabbfd7-a184-e911-a97e-0022480186c3}.xml
index 71f3c4a..9d2bd76 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{bcabbfd7-a184-e911-a97e-0022480186c3}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{bcabbfd7-a184-e911-a97e-0022480186c3}.xml
@@ -10,14 +10,14 @@
- |
- |
- |
- |
- |
- |
+ |
|
- |
+ |
+ |
+ |
+ |
+ |
+ |
@@ -29,14 +29,16 @@
-
-
+
+
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{c3ae2ff7-0bef-4f99-a9f5-55130a4a6790}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{c3ae2ff7-0bef-4f99-a9f5-55130a4a6790}.xml
index ad26e80..e8fd6d5 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{c3ae2ff7-0bef-4f99-a9f5-55130a4a6790}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{c3ae2ff7-0bef-4f99-a9f5-55130a4a6790}.xml
@@ -10,14 +10,14 @@
- |
- |
- |
- |
- |
- |
+ |
|
- |
+ |
+ |
+ |
+ |
+ |
+ |
@@ -33,13 +33,15 @@
-
+
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{f926172c-9e4a-ea11-a812-000d3a0b97ca}.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{f926172c-9e4a-ea11-a812-000d3a0b97ca}.xml
index a9518bf..e32471e 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{f926172c-9e4a-ea11-a812-000d3a0b97ca}.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/SavedQueries/{f926172c-9e4a-ea11-a812-000d3a0b97ca}.xml
@@ -10,14 +10,14 @@
- |
- |
- |
- |
- |
- |
+ |
|
- |
+ |
+ |
+ |
+ |
+ |
+ |
@@ -26,20 +26,22 @@
-
-
+
+
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/OptionSets/devhub_apptemplates.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/OptionSets/devhub_apptemplates.xml
new file mode 100644
index 0000000..561976b
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/OptionSets/devhub_apptemplates.xml
@@ -0,0 +1,40 @@
+
+
+ picklist
+ 1
+ 0.2.0
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/OptionSets/devhub_lifetime.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/OptionSets/devhub_lifetime.xml
new file mode 100644
index 0000000..cc91f9a
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/OptionSets/devhub_lifetime.xml
@@ -0,0 +1,25 @@
+
+
+ picklist
+ 1
+ 0.2.0
+ 1
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/OptionSets/devhub_mergestrategy.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/OptionSets/devhub_mergestrategy.xml
new file mode 100644
index 0000000..1ec0c35
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/OptionSets/devhub_mergestrategy.xml
@@ -0,0 +1,25 @@
+
+
+ picklist
+ 1
+ 0.2.0
+ 1
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships.xml
index 4fd9b84..e99dc85 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships.xml
@@ -3,12 +3,13 @@
+
+
-
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/FileAttachment.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/FileAttachment.xml
deleted file mode 100644
index a7521b1..0000000
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/FileAttachment.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
- OneToMany
- 0
- 0.1.20.0
- 0
- devhub_solutionmerge
- FileAttachment
- NoCascade
- RemoveLink
- NoCascade
- NoCascade
- NoCascade
- 0
- devhub_DevelopmentSolution
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_environment.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_environment.xml
index 3e9698e..97d4cf8 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_environment.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_environment.xml
@@ -34,4 +34,38 @@
+
+ OneToMany
+ 1
+ 0.2.0
+ 0
+ devhub_solutionmerge
+ devhub_environment
+ NoCascade
+ RemoveLink
+ NoCascade
+ NoCascade
+ NoCascade
+ NoCascade
+ 1
+ devhub_Environment
+
+
+
+
+
+
+
+ UseCollectionName
+ Details
+ 10000
+ devhub_Environment
+ 1
+
+
+ devhub_solutionmerge_Environment_Environment
+ 0
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_solution.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_solution.xml
index 4d65fa1..05a3e31 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_solution.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_solution.xml
@@ -1,5 +1,39 @@
+
+ OneToMany
+ 1
+ 0.2.0
+ 0
+ devhub_environment
+ devhub_solution
+ NoCascade
+ RemoveLink
+ NoCascade
+ NoCascade
+ NoCascade
+ NoCascade
+ 1
+ devhub_Solution
+
+
+
+
+
+
+
+ UseCollectionName
+ Details
+ 10000
+ devhub_Solution
+ 1
+
+
+ devhub_environment_Solution_devhub_solution
+ 0
+
+
+
OneToMany
1
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Solution.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Solution.xml
index 8d9cfed..74eedf7 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Solution.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Solution.xml
@@ -1,5 +1,6 @@
-
+
devhub_DevelopmentHub_Develop
@@ -8,7 +9,7 @@
- 0.2.22
+ 0.3.0
2
developmenthub
@@ -86,41 +87,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
@@ -137,7 +144,7 @@
-
+
@@ -153,219 +160,191 @@
-
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -377,59 +356,59 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/WebResources/devhub_/Js/develop.common.js.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/WebResources/devhub_/Js/develop.common.js.data.xml
index dc98081..fa2037c 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/WebResources/devhub_/Js/develop.common.js.data.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/WebResources/devhub_/Js/develop.common.js.data.xml
@@ -4,6 +4,7 @@
devhub_/Js/develop.common.js
develop.common.js
Common JavaScript event handlers.
+ 0
3
0.1.15.0
0
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Button-Getaccesstoken-DB657A26-1D37-EB11-A813-000D3A0B97CA.json b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Button-Getaccesstoken-DB657A26-1D37-EB11-A813-000D3A0B97CA.json
index d1f42dc..58015f1 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Button-Getaccesstoken-DB657A26-1D37-EB11-A813-000D3A0B97CA.json
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Button-Getaccesstoken-DB657A26-1D37-EB11-A813-000D3A0B97CA.json
@@ -1 +1,140 @@
-{"properties":{"connectionReferences":{},"definition":{"$schema":"https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#","contentVersion":"1.0.0.0","parameters":{"$authentication":{"defaultValue":{},"type":"SecureObject"}},"triggers":{"manual":{"type":"Request","kind":"Button","inputs":{"schema":{"type":"object","properties":{"text":{"title":"Tenant ID","type":"string","x-ms-dynamically-added":true,"description":"Please enter your input","x-ms-content-hint":"TEXT"},"text_1":{"title":"Client ID","type":"string","x-ms-dynamically-added":true,"description":"Please enter your input","x-ms-content-hint":"TEXT"},"text_2":{"title":"Client Secret","type":"string","x-ms-dynamically-added":true,"description":"Please enter your input","x-ms-content-hint":"TEXT"},"text_3":{"title":"Resource","type":"string","x-ms-dynamically-added":true,"description":"Please enter your input","x-ms-content-hint":"TEXT"}},"required":["text","text_1","text_2","text_3"]}}}},"actions":{"Get_access_token":{"runAfter":{},"type":"Http","inputs":{"method":"POST","uri":"https://login.microsoftonline.com/@{triggerBody()['text']}/oauth2/token","headers":{"Content-Type":"application/x-www-form-urlencoded"},"body":"client_id=@{triggerBody()['text_1']}&\nclient_secret=@{triggerBody()['text_2']}&\ngrant_type=client_credentials&\nresource=@{triggerBody()['text_3']}"}},"Parse_JSON":{"runAfter":{"Get_access_token":["Succeeded"]},"type":"ParseJson","inputs":{"content":"@body('Get_access_token')","schema":{"type":"object","properties":{"token_type":{"type":"string"},"expires_in":{"type":"string"},"ext_expires_in":{"type":"string"},"expires_on":{"type":"string"},"not_before":{"type":"string"},"resource":{"type":"string"},"access_token":{"type":"string"}}}}},"Respond_to_a_PowerApp_or_flow":{"runAfter":{"Parse_JSON":["Succeeded"]},"type":"Response","kind":"PowerApp","inputs":{"statusCode":200,"body":{"access_token":"@body('Parse_JSON')?['access_token']"},"schema":{"type":"object","properties":{"access_token":{"title":"Access Token","x-ms-dynamically-added":true,"type":"string"}}}}}},"outputs":{}}},"schemaVersion":"1.0.0.0"}
\ No newline at end of file
+{
+ "properties": {
+ "connectionReferences": {},
+ "definition": {
+ "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "$authentication": {
+ "defaultValue": {},
+ "type": "SecureObject"
+ }
+ },
+ "triggers": {
+ "manual": {
+ "type": "Request",
+ "kind": "Button",
+ "inputs": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "text": {
+ "title": "Tenant ID",
+ "type": "string",
+ "x-ms-dynamically-added": true,
+ "description": "Please enter your input",
+ "x-ms-content-hint": "TEXT"
+ },
+ "text_1": {
+ "title": "Client ID",
+ "type": "string",
+ "x-ms-dynamically-added": true,
+ "description": "Please enter your input",
+ "x-ms-content-hint": "TEXT"
+ },
+ "text_2": {
+ "title": "Client Secret",
+ "type": "string",
+ "x-ms-dynamically-added": true,
+ "description": "Please enter your input",
+ "x-ms-content-hint": "TEXT"
+ },
+ "text_3": {
+ "title": "Resource",
+ "type": "string",
+ "x-ms-dynamically-added": true,
+ "description": "Please enter your input",
+ "x-ms-content-hint": "TEXT"
+ }
+ },
+ "required": [
+ "text",
+ "text_1",
+ "text_2",
+ "text_3"
+ ]
+ }
+ }
+ }
+ },
+ "actions": {
+ "Get_access_token": {
+ "runAfter": {},
+ "type": "Http",
+ "inputs": {
+ "method": "POST",
+ "uri": "https://login.microsoftonline.com/@{triggerBody()['text']}/oauth2/token",
+ "headers": {
+ "Content-Type": "application/x-www-form-urlencoded"
+ },
+ "body": "client_id=@{triggerBody()['text_1']}&\nclient_secret=@{triggerBody()['text_2']}&\ngrant_type=client_credentials&\nresource=@{triggerBody()['text_3']}"
+ }
+ },
+ "Parse_JSON": {
+ "runAfter": {
+ "Get_access_token": [
+ "Succeeded"
+ ]
+ },
+ "type": "ParseJson",
+ "inputs": {
+ "content": "@body('Get_access_token')",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "token_type": {
+ "type": "string"
+ },
+ "expires_in": {
+ "type": "string"
+ },
+ "ext_expires_in": {
+ "type": "string"
+ },
+ "expires_on": {
+ "type": "string"
+ },
+ "not_before": {
+ "type": "string"
+ },
+ "resource": {
+ "type": "string"
+ },
+ "access_token": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "Respond_to_a_PowerApp_or_flow": {
+ "runAfter": {
+ "Parse_JSON": [
+ "Succeeded"
+ ]
+ },
+ "type": "Response",
+ "kind": "PowerApp",
+ "inputs": {
+ "statusCode": 200,
+ "body": {
+ "access_token": "@body('Parse_JSON')?['access_token']"
+ },
+ "schema": {
+ "type": "object",
+ "properties": {
+ "access_token": {
+ "title": "Access Token",
+ "x-ms-dynamically-added": true,
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "outputs": {}
+ }
+ },
+ "schemaVersion": "1.0.0.0"
+}
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/CommithashandURLarerequiredforareadyephemeralenvir-E7882336-BA02-EC11-B6E6-00224841D7FF.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/CommithashandURLarerequiredforareadyephemeralenvir-E7882336-BA02-EC11-B6E6-00224841D7FF.xaml
new file mode 100644
index 0000000..d1b236d
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/CommithashandURLarerequiredforareadyephemeralenvir-E7882336-BA02-EC11-B6E6-00224841D7FF.xaml
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400001", "Picklist" }]
+
+
+
+ [ConditionBranchStep2_3]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_3 }]
+ [ConditionBranchStep2_2]
+ [ConditionBranchStep2_1]
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "1", "Status" }]
+
+
+
+ [ConditionBranchStep2_6]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_6 }]
+ [ConditionBranchStep2_5]
+ [ConditionBranchStep2_4]
+
+
+
+
+ And
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_4]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ If Lifetime is Ephemeral and Status Reason is Ready
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/CommithashandURLarerequiredforareadyephemeralenvir-E7882336-BA02-EC11-B6E6-00224841D7FF.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/CommithashandURLarerequiredforareadyephemeralenvir-E7882336-BA02-EC11-B6E6-00224841D7FF.xaml.data.xml
new file mode 100644
index 0000000..bdede21
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/CommithashandURLarerequiredforareadyephemeralenvir-E7882336-BA02-EC11-B6E6-00224841D7FF.xaml.data.xml
@@ -0,0 +1,30 @@
+
+
+ /Workflows/CommithashandURLarerequiredforareadyephemeralenvir-E7882336-BA02-EC11-B6E6-00224841D7FF.xaml
+ 1
+ 0
+ 2
+ 1
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 1
+ 1
+ 0.2.0
+ 1
+ 0
+ 1
+ 2
+ devhub_environment
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Commithashisshownwhenenvironmentisephemeral-5849B0A6-1FFD-EB11-94EF-000D3AD6738D.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Commithashisshownwhenenvironmentisephemeral-5849B0A6-1FFD-EB11-94EF-000D3AD6738D.xaml
new file mode 100644
index 0000000..7da4841
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Commithashisshownwhenenvironmentisephemeral-5849B0A6-1FFD-EB11-94EF-000D3AD6738D.xaml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400001", "Picklist" }]
+
+
+
+ [ConditionBranchStep2_2]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_2 }]
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+ If Lifetime is Ephemeral
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Commithashisshownwhenenvironmentisephemeral-5849B0A6-1FFD-EB11-94EF-000D3AD6738D.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Commithashisshownwhenenvironmentisephemeral-5849B0A6-1FFD-EB11-94EF-000D3AD6738D.xaml.data.xml
new file mode 100644
index 0000000..9d0f5e9
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Commithashisshownwhenenvironmentisephemeral-5849B0A6-1FFD-EB11-94EF-000D3AD6738D.xaml.data.xml
@@ -0,0 +1,30 @@
+
+
+ /Workflows/Commithashisshownwhenenvironmentisephemeral-5849B0A6-1FFD-EB11-94EF-000D3AD6738D.xaml
+ 1
+ 0
+ 2
+ 1
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 1
+ 1
+ 0.2.0
+ 1
+ 0
+ 1
+ 2
+ devhub_environment
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Environmentisrequiredtoapproveasequentialsolutionm-823F6D6B-D5FA-EB11-94EF-000D3AD6738D.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Environmentisrequiredtoapproveasequentialsolutionm-823F6D6B-D5FA-EB11-94EF-000D3AD6738D.xaml
new file mode 100644
index 0000000..98c231f
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Environmentisrequiredtoapproveasequentialsolutionm-823F6D6B-D5FA-EB11-94EF-000D3AD6738D.xaml
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400000", "Picklist" }]
+
+
+
+ [ConditionBranchStep2_3]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_3 }]
+ [ConditionBranchStep2_2]
+ [ConditionBranchStep2_1]
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400000", "Status" }]
+
+
+
+ [ConditionBranchStep2_6]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_6 }]
+ [ConditionBranchStep2_5]
+ [ConditionBranchStep2_4]
+
+
+
+
+ And
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_4]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Environment is required for sequential solution merges
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "True" }]
+
+
+
+ [ConditionBranchStep3_1]
+
+
+
+
+ [True]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Environmentisrequiredtoapproveasequentialsolutionm-823F6D6B-D5FA-EB11-94EF-000D3AD6738D.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Environmentisrequiredtoapproveasequentialsolutionm-823F6D6B-D5FA-EB11-94EF-000D3AD6738D.xaml.data.xml
new file mode 100644
index 0000000..82f251f
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Environmentisrequiredtoapproveasequentialsolutionm-823F6D6B-D5FA-EB11-94EF-000D3AD6738D.xaml.data.xml
@@ -0,0 +1,30 @@
+
+
+ /Workflows/Environmentisrequiredtoapproveasequentialsolutionm-823F6D6B-D5FA-EB11-94EF-000D3AD6738D.xaml
+ 1
+ 0
+ 2
+ 1
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 1
+ 1
+ 0.2.0
+ 1
+ 0
+ 1
+ 2
+ devhub_solutionmerge
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/FieldsAreLockedAfterApproval-EE9BC39C-FFB2-E911-A97B-002248019881.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Fieldsarelockedduringmergingprocess-EE9BC39C-FFB2-E911-A97B-002248019881.xaml
similarity index 79%
rename from src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/FieldsAreLockedAfterApproval-EE9BC39C-FFB2-E911-A97B-002248019881.xaml
rename to src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Fieldsarelockedduringmergingprocess-EE9BC39C-FFB2-E911-A97B-002248019881.xaml
index 21ffdb2..d743258 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/FieldsAreLockedAfterApproval-EE9BC39C-FFB2-E911-A97B-002248019881.xaml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Fieldsarelockedduringmergingprocess-EE9BC39C-FFB2-E911-A97B-002248019881.xaml
@@ -20,6 +20,8 @@
+
+
@@ -43,10 +45,30 @@
[ConditionBranchStep2_2]
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400002", "Status" }]
+
+
+
+ [ConditionBranchStep2_3]
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400009", "Status" }]
+
+
+
+ [ConditionBranchStep2_4]
+
+
NotEqual
- [New Object() { ConditionBranchStep2_2 }]
+ [New Object() { ConditionBranchStep2_2, ConditionBranchStep2_3, ConditionBranchStep2_4 }]
[ConditionBranchStep2_1]
[ConditionBranchStep2_condition]
@@ -69,6 +91,9 @@
+
+
+
@@ -104,6 +129,9 @@
+
+
+
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/FieldsAreLockedAfterApproval-EE9BC39C-FFB2-E911-A97B-002248019881.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Fieldsarelockedduringmergingprocess-EE9BC39C-FFB2-E911-A97B-002248019881.xaml.data.xml
similarity index 64%
rename from src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/FieldsAreLockedAfterApproval-EE9BC39C-FFB2-E911-A97B-002248019881.xaml.data.xml
rename to src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Fieldsarelockedduringmergingprocess-EE9BC39C-FFB2-E911-A97B-002248019881.xaml.data.xml
index a2e8454..bbbd558 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/FieldsAreLockedAfterApproval-EE9BC39C-FFB2-E911-A97B-002248019881.xaml.data.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Fieldsarelockedduringmergingprocess-EE9BC39C-FFB2-E911-A97B-002248019881.xaml.data.xml
@@ -1,6 +1,6 @@
-
- /Workflows/FieldsAreLockedAfterApproval-EE9BC39C-FFB2-E911-A97B-002248019881.xaml
+
+ /Workflows/Fieldsarelockedduringmergingprocess-EE9BC39C-FFB2-E911-A97B-002248019881.xaml
1
0
2
@@ -22,9 +22,9 @@
1
devhub_solutionmerge
-
+
-
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/MarkAsPrepared-A0F9AE2C-DE8B-4A1B-9604-0A24F2C1E36C.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/MarkAsPrepared-A0F9AE2C-DE8B-4A1B-9604-0A24F2C1E36C.xaml
new file mode 100644
index 0000000..8d29f28
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/MarkAsPrepared-A0F9AE2C-DE8B-4A1B-9604-0A24F2C1E36C.xaml
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+ CustomOperationArguments
+ [New Object() { CommitHash }]
+
+
+
+
+
+ [ConditionBranchStep3_2]
+
+
+
+
+ Null
+
+ [ConditionBranchStep3_2]
+ [ConditionBranchStep3_1]
+
+
+
+
+ CustomOperationArguments
+ [New Object() { Url }]
+
+
+
+
+
+ [ConditionBranchStep3_4]
+
+
+
+
+ Null
+
+ [ConditionBranchStep3_4]
+ [ConditionBranchStep3_3]
+
+
+
+
+ Or
+ [ConditionBranchStep3_1]
+ [ConditionBranchStep3_3]
+ [ConditionBranchStep3_condition]
+
+
+
+
+ [ConditionBranchStep3_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "A commit hash and URL must be provided to ready an environment.", "String" }]
+
+
+
+ [StopWorkflowStep4_1]
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CustomOperationArguments
+ [New Object() { Url }]
+
+
+
+ [UpdateStep1_2]
+
+
+
+
+ SelectFirstNonNull
+ [New Object() { UpdateStep1_2 }]
+
+
+
+ [UpdateStep1_1]
+
+
+
+
+
+
+
+
+
+
+
+ CustomOperationArguments
+ [New Object() { CommitHash }]
+
+
+
+ [UpdateStep1_4]
+
+
+
+
+ SelectFirstNonNull
+ [New Object() { UpdateStep1_4 }]
+
+
+
+ [UpdateStep1_3]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/MarkAsPrepared-A0F9AE2C-DE8B-4A1B-9604-0A24F2C1E36C.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/MarkAsPrepared-A0F9AE2C-DE8B-4A1B-9604-0A24F2C1E36C.xaml.data.xml
new file mode 100644
index 0000000..06aa2bd
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/MarkAsPrepared-A0F9AE2C-DE8B-4A1B-9604-0A24F2C1E36C.xaml.data.xml
@@ -0,0 +1,34 @@
+
+
+ /Workflows/MarkAsPrepared-A0F9AE2C-DE8B-4A1B-9604-0A24F2C1E36C.xaml
+ 1
+ 0
+ 3
+ 0
+ 4
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 2
+ 40
+ 1
+ {e3577782-20fd-eb11-94ef-000d3ad6738d}
+ MarkAsPrepared
+ 1
+ 0.2.0
+ 1
+ {00000000-0000-0000-0000-000000000000}
+ 1
+ devhub_environment
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Mergestrategyisrequiredtoapproveasolutionmerge-FA0BDFA2-BBFA-EB11-94EF-000D3AD6738D.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Mergestrategyisrequiredtoapproveasolutionmerge-FA0BDFA2-BBFA-EB11-94EF-000D3AD6738D.xaml
new file mode 100644
index 0000000..7de08dd
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Mergestrategyisrequiredtoapproveasolutionmerge-FA0BDFA2-BBFA-EB11-94EF-000D3AD6738D.xaml
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400000", "Status" }]
+
+
+
+ [ConditionBranchStep2_2]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_2 }]
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Status Reason is Approved
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "True" }]
+
+
+
+ [ConditionBranchStep3_1]
+
+
+
+
+ [True]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Mergestrategyisrequiredtoapproveasolutionmerge-FA0BDFA2-BBFA-EB11-94EF-000D3AD6738D.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Mergestrategyisrequiredtoapproveasolutionmerge-FA0BDFA2-BBFA-EB11-94EF-000D3AD6738D.xaml.data.xml
new file mode 100644
index 0000000..4974654
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Mergestrategyisrequiredtoapproveasolutionmerge-FA0BDFA2-BBFA-EB11-94EF-000D3AD6738D.xaml.data.xml
@@ -0,0 +1,27 @@
+
+
+ /Workflows/Mergestrategyisrequiredtoapproveasolutionmerge-FA0BDFA2-BBFA-EB11-94EF-000D3AD6738D.xaml
+ 1
+ 0
+ 2
+ 1
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 1
+ 1
+ 0.2.0
+ 1
+ 0
+ 1
+ 2
+ devhub_solutionmerge
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Nameisread-onlywhenenvironmentisephemeral-2EDB6882-1AFD-EB11-94EF-000D3AD6738D.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Nameisread-onlywhenenvironmentisephemeral-2EDB6882-1AFD-EB11-94EF-000D3AD6738D.xaml
new file mode 100644
index 0000000..745bdc3
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Nameisread-onlywhenenvironmentisephemeral-2EDB6882-1AFD-EB11-94EF-000D3AD6738D.xaml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400001", "Picklist" }]
+
+
+
+ [ConditionBranchStep2_2]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_2 }]
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+ If Lifetime is Ephemeral
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Nameisread-onlywhenenvironmentisephemeral-2EDB6882-1AFD-EB11-94EF-000D3AD6738D.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Nameisread-onlywhenenvironmentisephemeral-2EDB6882-1AFD-EB11-94EF-000D3AD6738D.xaml.data.xml
new file mode 100644
index 0000000..21309ba
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Nameisread-onlywhenenvironmentisephemeral-2EDB6882-1AFD-EB11-94EF-000D3AD6738D.xaml.data.xml
@@ -0,0 +1,30 @@
+
+
+ /Workflows/Nameisread-onlywhenenvironmentisephemeral-2EDB6882-1AFD-EB11-94EF-000D3AD6738D.xaml
+ 1
+ 0
+ 2
+ 1
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 1
+ 1
+ 0.2.0
+ 1
+ 0
+ 1
+ 1
+ devhub_environment
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Solutionisshownwhenenvironmentisephemeral-810626DD-19FD-EB11-94EF-000D3AD6738D.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Solutionisshownwhenenvironmentisephemeral-810626DD-19FD-EB11-94EF-000D3AD6738D.xaml
new file mode 100644
index 0000000..0084845
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Solutionisshownwhenenvironmentisephemeral-810626DD-19FD-EB11-94EF-000D3AD6738D.xaml
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400001", "Picklist" }]
+
+
+
+ [ConditionBranchStep2_2]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_2 }]
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+ If Lifetime is Ephemeral
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "True" }]
+
+
+
+ [ConditionBranchStep3_1]
+
+
+
+
+ [True]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Solutionisshownwhenenvironmentisephemeral-810626DD-19FD-EB11-94EF-000D3AD6738D.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Solutionisshownwhenenvironmentisephemeral-810626DD-19FD-EB11-94EF-000D3AD6738D.xaml.data.xml
new file mode 100644
index 0000000..a068311
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Solutionisshownwhenenvironmentisephemeral-810626DD-19FD-EB11-94EF-000D3AD6738D.xaml.data.xml
@@ -0,0 +1,30 @@
+
+
+ /Workflows/Solutionisshownwhenenvironmentisephemeral-810626DD-19FD-EB11-94EF-000D3AD6738D.xaml
+ 1
+ 0
+ 2
+ 1
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 1
+ 1
+ 0.2.0
+ 1
+ 0
+ 1
+ 2
+ devhub_environment
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/StagingEnvironmentisrequiredwhenMergeStrategyisSeq-D7EA745D-BAFA-EB11-94EF-000D3AD6738D.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/StagingEnvironmentisrequiredwhenMergeStrategyisSeq-D7EA745D-BAFA-EB11-94EF-000D3AD6738D.xaml
new file mode 100644
index 0000000..ae5bfab
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/StagingEnvironmentisrequiredwhenMergeStrategyisSeq-D7EA745D-BAFA-EB11-94EF-000D3AD6738D.xaml
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400000", "Picklist" }]
+
+
+
+ [ConditionBranchStep2_2]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_2 }]
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ If Merging Strategy is Sequential
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "True" }]
+
+
+
+ [ConditionBranchStep3_1]
+
+
+
+
+ [True]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/StagingEnvironmentisrequiredwhenMergeStrategyisSeq-D7EA745D-BAFA-EB11-94EF-000D3AD6738D.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/StagingEnvironmentisrequiredwhenMergeStrategyisSeq-D7EA745D-BAFA-EB11-94EF-000D3AD6738D.xaml.data.xml
new file mode 100644
index 0000000..757d557
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/StagingEnvironmentisrequiredwhenMergeStrategyisSeq-D7EA745D-BAFA-EB11-94EF-000D3AD6738D.xaml.data.xml
@@ -0,0 +1,30 @@
+
+
+ /Workflows/StagingEnvironmentisrequiredwhenMergeStrategyisSeq-D7EA745D-BAFA-EB11-94EF-000D3AD6738D.xaml
+ 1
+ 0
+ 2
+ 1
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 1
+ 1
+ 0.2.0
+ 1
+ 0
+ 1
+ 2
+ devhub_solution
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/URLisnotrequiredwhenstatusispendingprovision-0A0D90B3-CBFE-EB11-94EF-000D3AD6738D.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/URLisnotrequiredwhenstatusispendingprovision-0A0D90B3-CBFE-EB11-94EF-000D3AD6738D.xaml
new file mode 100644
index 0000000..f74a662
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/URLisnotrequiredwhenstatusispendingprovision-0A0D90B3-CBFE-EB11-94EF-000D3AD6738D.xaml
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400004", "Status" }]
+
+
+
+ [ConditionBranchStep2_2]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_2 }]
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ If Status Reason is Pending Provision
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/URLisnotrequiredwhenstatusispendingprovision-0A0D90B3-CBFE-EB11-94EF-000D3AD6738D.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/URLisnotrequiredwhenstatusispendingprovision-0A0D90B3-CBFE-EB11-94EF-000D3AD6738D.xaml.data.xml
new file mode 100644
index 0000000..3c76c3c
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/URLisnotrequiredwhenstatusispendingprovision-0A0D90B3-CBFE-EB11-94EF-000D3AD6738D.xaml.data.xml
@@ -0,0 +1,30 @@
+
+
+ /Workflows/URLisnotrequiredwhenstatusispendingprovision-0A0D90B3-CBFE-EB11-94EF-000D3AD6738D.xaml
+ 1
+ 0
+ 2
+ 1
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 1
+ 1
+ 0.2.0
+ 1
+ 0
+ 1
+ 2
+ devhub_environment
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/URLisread-onlywhenenvironmentisephemeral-1CCF96D9-1AFD-EB11-94EF-000D3AD6738D.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/URLisread-onlywhenenvironmentisephemeral-1CCF96D9-1AFD-EB11-94EF-000D3AD6738D.xaml
new file mode 100644
index 0000000..01fbcea
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/URLisread-onlywhenenvironmentisephemeral-1CCF96D9-1AFD-EB11-94EF-000D3AD6738D.xaml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400001", "Picklist" }]
+
+
+
+ [ConditionBranchStep2_2]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_2 }]
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+ If Lifetime is Ephemeral
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/URLisread-onlywhenenvironmentisephemeral-1CCF96D9-1AFD-EB11-94EF-000D3AD6738D.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/URLisread-onlywhenenvironmentisephemeral-1CCF96D9-1AFD-EB11-94EF-000D3AD6738D.xaml.data.xml
new file mode 100644
index 0000000..c5182c6
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/URLisread-onlywhenenvironmentisephemeral-1CCF96D9-1AFD-EB11-94EF-000D3AD6738D.xaml.data.xml
@@ -0,0 +1,30 @@
+
+
+ /Workflows/URLisread-onlywhenenvironmentisephemeral-1CCF96D9-1AFD-EB11-94EF-000D3AD6738D.xaml
+ 1
+ 0
+ 2
+ 1
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 1
+ 1
+ 0.2.0
+ 1
+ 0
+ 1
+ 1
+ devhub_environment
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Versionnumbersarehiddenwhenmergestrategyisparallel-061D64F1-D7FA-EB11-94EF-000D3AD6738D.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Versionnumbersarehiddenwhenmergestrategyisparallel-061D64F1-D7FA-EB11-94EF-000D3AD6738D.xaml
new file mode 100644
index 0000000..6836445
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Versionnumbersarehiddenwhenmergestrategyisparallel-061D64F1-D7FA-EB11-94EF-000D3AD6738D.xaml
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400001", "Picklist" }]
+
+
+
+ [ConditionBranchStep2_2]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_2 }]
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Merge strategy is Parallel
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "True" }]
+
+
+
+ [ConditionBranchStep3_1]
+
+
+
+
+ [True]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Versionnumbersarehiddenwhenmergestrategyisparallel-061D64F1-D7FA-EB11-94EF-000D3AD6738D.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Versionnumbersarehiddenwhenmergestrategyisparallel-061D64F1-D7FA-EB11-94EF-000D3AD6738D.xaml.data.xml
new file mode 100644
index 0000000..a9520b6
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Versionnumbersarehiddenwhenmergestrategyisparallel-061D64F1-D7FA-EB11-94EF-000D3AD6738D.xaml.data.xml
@@ -0,0 +1,30 @@
+
+
+ /Workflows/Versionnumbersarehiddenwhenmergestrategyisparallel-061D64F1-D7FA-EB11-94EF-000D3AD6738D.xaml
+ 1
+ 0
+ 2
+ 1
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 1
+ 1
+ 0.2.0
+ 1
+ 0
+ 1
+ 2
+ devhub_solution
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenaparallelsolutionmergeisdeleted-Setenvironment-FF45DEE1-34AA-4C9B-92C2-97DABDBFFF74.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenaparallelsolutionmergeisdeleted-Setenvironment-FF45DEE1-34AA-4C9B-92C2-97DABDBFFF74.xaml
new file mode 100644
index 0000000..55c0311
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenaparallelsolutionmergeisdeleted-Setenvironment-FF45DEE1-34AA-4C9B-92C2-97DABDBFFF74.xaml
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400001", "Picklist" }]
+
+
+
+ [ConditionBranchStep2_3]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_3 }]
+ [ConditionBranchStep2_2]
+ [ConditionBranchStep2_1]
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NotNull
+
+ [ConditionBranchStep2_5]
+ [ConditionBranchStep2_4]
+
+
+
+
+ And
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_4]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenaparallelsolutionmergeisdeleted-Setenvironment-FF45DEE1-34AA-4C9B-92C2-97DABDBFFF74.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenaparallelsolutionmergeisdeleted-Setenvironment-FF45DEE1-34AA-4C9B-92C2-97DABDBFFF74.xaml.data.xml
new file mode 100644
index 0000000..fdb72c8
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenaparallelsolutionmergeisdeleted-Setenvironment-FF45DEE1-34AA-4C9B-92C2-97DABDBFFF74.xaml.data.xml
@@ -0,0 +1,28 @@
+
+
+ /Workflows/Whenaparallelsolutionmergeisdeleted-Setenvironment-FF45DEE1-34AA-4C9B-92C2-97DABDBFFF74.xaml
+ 1
+ 0
+ 0
+ 1
+ 4
+ 0
+
+ 0
+ 1
+ 0
+ 1
+ 1
+ 2
+ 40
+ 20
+ 1
+ 1
+ 0.2.0
+ 1
+ 1
+ devhub_solutionmerge
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenaparallelsolutionmergeismergedorcancelled-Sete-49C25D1D-FFFD-EB11-94EF-000D3AD6738D.json b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenaparallelsolutionmergeismergedorcancelled-Sete-49C25D1D-FFFD-EB11-94EF-000D3AD6738D.json
new file mode 100644
index 0000000..098fac2
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenaparallelsolutionmergeismergedorcancelled-Sete-49C25D1D-FFFD-EB11-94EF-000D3AD6738D.json
@@ -0,0 +1,71 @@
+{
+ "properties": {
+ "connectionReferences": {
+ "shared_commondataserviceforapps": {
+ "runtimeSource": "embedded",
+ "connection": {
+ "connectionReferenceLogicalName": "devhub_sharedcommondataserviceforapps_f7ca3"
+ },
+ "api": {
+ "name": "shared_commondataserviceforapps"
+ }
+ }
+ },
+ "definition": {
+ "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "$connections": {
+ "defaultValue": {},
+ "type": "Object"
+ },
+ "$authentication": {
+ "defaultValue": {},
+ "type": "SecureObject"
+ }
+ },
+ "triggers": {
+ "When_a_parallel_solution_merge_is_merged_or_cancelled": {
+ "type": "OpenApiConnectionWebhook",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "SubscribeWebhookTrigger",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "subscriptionRequest/message": 3,
+ "subscriptionRequest/entityname": "devhub_solutionmerge",
+ "subscriptionRequest/scope": 4,
+ "subscriptionRequest/filteringattributes": "statuscode",
+ "subscriptionRequest/filterexpression": "devhub_mergestrategy eq 353400001 and (statuscode eq 353400001 or statuscode eq 2)"
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ }
+ },
+ "actions": {
+ "Update_environment_status_to_pending_delete": {
+ "runAfter": {},
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "UpdateRecord",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_environments",
+ "recordId": "@triggerOutputs()?['body/_devhub_environment_value']",
+ "item/statecode": 1,
+ "item/statuscode": 353400003
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ }
+ },
+ "outputs": {}
+ }
+ },
+ "schemaVersion": "1.0.0.0"
+}
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenaparallelsolutionmergeismergedorcancelled-Sete-49C25D1D-FFFD-EB11-94EF-000D3AD6738D.json.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenaparallelsolutionmergeismergedorcancelled-Sete-49C25D1D-FFFD-EB11-94EF-000D3AD6738D.json.data.xml
new file mode 100644
index 0000000..d664691
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenaparallelsolutionmergeismergedorcancelled-Sete-49C25D1D-FFFD-EB11-94EF-000D3AD6738D.json.data.xml
@@ -0,0 +1,26 @@
+
+
+ /Workflows/Whenaparallelsolutionmergeismergedorcancelled-Sete-49C25D1D-FFFD-EB11-94EF-000D3AD6738D.json
+ 1
+ 0
+ 5
+ 0
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 1
+ 1
+ 0.2.0
+ 1
+ 0
+ 1
+ none
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasequentialsolutionmergeiscreated-Inheritenvir-3CDF61F8-4EA9-4892-8D0A-C0C60F374B91.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasequentialsolutionmergeiscreated-Inheritenvir-3CDF61F8-4EA9-4892-8D0A-C0C60F374B91.xaml
new file mode 100644
index 0000000..fc31e66
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasequentialsolutionmergeiscreated-Inheritenvir-3CDF61F8-4EA9-4892-8D0A-C0C60F374B91.xaml
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreateCrmType
+ [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400000", "Picklist" }]
+
+
+
+ [ConditionBranchStep2_2]
+
+
+
+
+ Equal
+ [New Object() { ConditionBranchStep2_2 }]
+ [ConditionBranchStep2_1]
+ [ConditionBranchStep2_condition]
+
+
+
+
+ [ConditionBranchStep2_condition]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SelectFirstNonNull
+ [New Object() { UpdateStep3_2 }]
+
+
+
+ [UpdateStep3_1]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasequentialsolutionmergeiscreated-Inheritenvir-3CDF61F8-4EA9-4892-8D0A-C0C60F374B91.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasequentialsolutionmergeiscreated-Inheritenvir-3CDF61F8-4EA9-4892-8D0A-C0C60F374B91.xaml.data.xml
new file mode 100644
index 0000000..8a482bd
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasequentialsolutionmergeiscreated-Inheritenvir-3CDF61F8-4EA9-4892-8D0A-C0C60F374B91.xaml.data.xml
@@ -0,0 +1,28 @@
+
+
+ /Workflows/Whenasequentialsolutionmergeiscreated-Inheritenvir-3CDF61F8-4EA9-4892-8D0A-C0C60F374B91.xaml
+ 1
+ 0
+ 0
+ 1
+ 4
+ 0
+ devhub_mergestrategy
+ 1
+ 0
+ 0
+ 1
+ 1
+ 2
+ 40
+ 40
+ 1
+ 1
+ 0.2.0
+ 1
+ 1
+ devhub_solutionmerge
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasequentialsolutionmergeismerged-Approvethefir-C976585F-06B4-EA11-A812-000D3A86AD99.json b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasequentialsolutionmergeismerged-Approvethefir-C976585F-06B4-EA11-A812-000D3A86AD99.json
new file mode 100644
index 0000000..c8e59a0
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasequentialsolutionmergeismerged-Approvethefir-C976585F-06B4-EA11-A812-000D3A86AD99.json
@@ -0,0 +1,156 @@
+{
+ "properties": {
+ "connectionReferences": {
+ "shared_commondataserviceforapps": {
+ "runtimeSource": "embedded",
+ "connection": {
+ "connectionReferenceLogicalName": "devhub_sharedcommondataserviceforapps_f7ca3"
+ },
+ "api": {
+ "name": "shared_commondataserviceforapps"
+ }
+ }
+ },
+ "definition": {
+ "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "$connections": {
+ "defaultValue": {},
+ "type": "Object"
+ },
+ "$authentication": {
+ "defaultValue": {},
+ "type": "SecureObject"
+ }
+ },
+ "triggers": {
+ "When_a_sequential_solution_merge_is_merged_or_cancelled": {
+ "type": "OpenApiConnectionWebhook",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "SubscribeWebhookTrigger",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "subscriptionRequest/message": 3,
+ "subscriptionRequest/entityname": "devhub_solutionmerge",
+ "subscriptionRequest/scope": 4,
+ "subscriptionRequest/filteringattributes": "statuscode",
+ "subscriptionRequest/filterexpression": "devhub_mergestrategy eq 353400000 and (statuscode eq 353400001 or statuscode eq 2)"
+ },
+ "authentication": "@parameters('$authentication')"
+ },
+ "runtimeConfiguration": {
+ "concurrency": {
+ "runs": 1
+ }
+ }
+ }
+ },
+ "actions": {
+ "Get_the_first_queued_solution_merge": {
+ "runAfter": {
+ "If_there_is_an_in-progress_solution_merge": [
+ "Succeeded"
+ ]
+ },
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "ListRecords",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_solutionmerges",
+ "$select": "devhub_approvedon",
+ "$filter": "statuscode eq 353400004",
+ "$orderby": "devhub_queuedon asc",
+ "$top": 1
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ },
+ "If_there_is_a_queued_solution_merge": {
+ "actions": {
+ "Set_the_solution_merge_status_to_approved": {
+ "runAfter": {},
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "UpdateRecord",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_solutionmerges",
+ "recordId": "@body('Get_the_first_queued_solution_merge')['value'][0]['devhub_solutionmergeid']",
+ "item/statuscode": 353400000
+ },
+ "authentication": "@parameters('$authentication')"
+ },
+ "description": "Triggering update to reviewed on field as triggering by statuscode wasn't working"
+ }
+ },
+ "runAfter": {
+ "Get_the_first_queued_solution_merge": [
+ "Succeeded"
+ ]
+ },
+ "expression": {
+ "equals": [
+ "@length(outputs('Get_the_first_queued_solution_merge')?['body/value'])",
+ 1
+ ]
+ },
+ "type": "If"
+ },
+ "Get_in-progress_merge": {
+ "runAfter": {},
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "ListRecords",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_solutionmerges",
+ "$select": "devhub_name",
+ "$filter": "devhub_solutionmergeid ne @{triggerOutputs()?['body/devhub_solutionmergeid']} and devhub_mergestrategy eq 353400000 and (statuscode eq 353400000 or statuscode eq 353400003 or statuscode eq 353400002 or statuscode eq 353400006)",
+ "$top": 1
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ },
+ "If_there_is_an_in-progress_solution_merge": {
+ "actions": {
+ "Terminate": {
+ "runAfter": {},
+ "type": "Terminate",
+ "inputs": {
+ "runStatus": "Cancelled"
+ }
+ }
+ },
+ "runAfter": {
+ "Get_in-progress_merge": [
+ "Succeeded"
+ ]
+ },
+ "expression": {
+ "greater": [
+ "@length(outputs('Get_in-progress_merge')?['body/value'])",
+ 0
+ ]
+ },
+ "type": "If"
+ }
+ },
+ "outputs": {}
+ }
+ },
+ "schemaVersion": "1.0.0.0"
+}
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasequentialsolutionmergeismerged-Approvethefir-C976585F-06B4-EA11-A812-000D3A86AD99.json.data.xml
similarity index 65%
rename from src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json.data.xml
rename to src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasequentialsolutionmergeismerged-Approvethefir-C976585F-06B4-EA11-A812-000D3A86AD99.json.data.xml
index 92492d3..f2ea46b 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json.data.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasequentialsolutionmergeismerged-Approvethefir-C976585F-06B4-EA11-A812-000D3A86AD99.json.data.xml
@@ -1,6 +1,6 @@
-
- /Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json
+
+ /Workflows/Whenasequentialsolutionmergeismerged-Approvethefir-C976585F-06B4-EA11-A812-000D3A86AD99.json
1
0
5
@@ -20,6 +20,6 @@
1
none
-
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/WhenasolutionmergeisMerged-Deletethedevelopmentsol-C4E3B5C5-BD78-EB11-A812-000D3ADC8ABB.json b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/WhenasolutionmergeisMerged-Deletethedevelopmentsol-C4E3B5C5-BD78-EB11-A812-000D3ADC8ABB.json
new file mode 100644
index 0000000..03364ef
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/WhenasolutionmergeisMerged-Deletethedevelopmentsol-C4E3B5C5-BD78-EB11-A812-000D3ADC8ABB.json
@@ -0,0 +1,112 @@
+{
+ "properties": {
+ "connectionReferences": {
+ "shared_commondataserviceforapps": {
+ "runtimeSource": "embedded",
+ "connection": {
+ "connectionReferenceLogicalName": "devhub_sharedcommondataserviceforapps_f7ca3"
+ },
+ "api": {
+ "name": "shared_commondataserviceforapps"
+ }
+ }
+ },
+ "definition": {
+ "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "$connections": {
+ "defaultValue": {},
+ "type": "Object"
+ },
+ "$authentication": {
+ "defaultValue": {},
+ "type": "SecureObject"
+ }
+ },
+ "triggers": {
+ "When_a_solution_merge_is_'Merged'": {
+ "type": "OpenApiConnectionWebhook",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "SubscribeWebhookTrigger",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "subscriptionRequest/message": 3,
+ "subscriptionRequest/entityname": "devhub_solutionmerge",
+ "subscriptionRequest/scope": 4,
+ "subscriptionRequest/filteringattributes": "statuscode",
+ "subscriptionRequest/filterexpression": "statuscode eq 353400001"
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ }
+ },
+ "actions": {
+ "Get_development_solution": {
+ "runAfter": {
+ "Get_a_row_by_ID": [
+ "Succeeded"
+ ]
+ },
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "ListRecords",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "solutions",
+ "$select": "solutionid",
+ "$filter": "uniquename eq '@{outputs('Get_a_row_by_ID')?['body/devhub_developmentsolution']}'",
+ "$top": 1
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ },
+ "Delete_development_solution": {
+ "runAfter": {
+ "Get_development_solution": [
+ "Succeeded"
+ ]
+ },
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "DeleteRecord",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "solutions",
+ "recordId": "@body('Get_development_solution')?['value']?[0]['solutionid']"
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ },
+ "Get_a_row_by_ID": {
+ "runAfter": {},
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "GetItem",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_issues",
+ "recordId": "@triggerOutputs()?['body/_devhub_issue_value']",
+ "$select": "devhub_developmentsolution"
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ }
+ },
+ "outputs": {}
+ }
+ },
+ "schemaVersion": "1.0.0.0"
+}
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Workflows/WhenasolutionmergeisMerged-Deletethedevelopmentsol-C4E3B5C5-BD78-EB11-A812-000D3ADC8ABB.json.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/WhenasolutionmergeisMerged-Deletethedevelopmentsol-C4E3B5C5-BD78-EB11-A812-000D3ADC8ABB.json.data.xml
similarity index 96%
rename from src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Workflows/WhenasolutionmergeisMerged-Deletethedevelopmentsol-C4E3B5C5-BD78-EB11-A812-000D3ADC8ABB.json.data.xml
rename to src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/WhenasolutionmergeisMerged-Deletethedevelopmentsol-C4E3B5C5-BD78-EB11-A812-000D3ADC8ABB.json.data.xml
index 302238d..0989772 100644
--- a/src/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Workflows/WhenasolutionmergeisMerged-Deletethedevelopmentsol-C4E3B5C5-BD78-EB11-A812-000D3ADC8ABB.json.data.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/WhenasolutionmergeisMerged-Deletethedevelopmentsol-C4E3B5C5-BD78-EB11-A812-000D3ADC8ABB.json.data.xml
@@ -17,7 +17,6 @@
1
0.2.1
1
- 0
1
none
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json
index 4174259..0dcc2d4 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json
@@ -1 +1,488 @@
-{"properties":{"connectionReferences":{"shared_commondataserviceforapps":{"runtimeSource":"embedded","connection":{"connectionReferenceLogicalName":"devhub_sharedcommondataserviceforapps_f7ca3"},"api":{"name":"shared_commondataserviceforapps"}},"shared_approvals":{"runtimeSource":"embedded","connection":{"connectionReferenceLogicalName":"devhub_sharedapprovals_6d3fc"},"api":{"name":"shared_approvals"}}},"definition":{"$schema":"https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#","contentVersion":"1.0.0.0","parameters":{"$connections":{"defaultValue":{},"type":"Object"},"$authentication":{"defaultValue":{},"type":"SecureObject"}},"triggers":{"When_a_solution_merge_is_approved":{"type":"OpenApiConnectionWebhook","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"SubscribeWebhookTrigger","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"subscriptionRequest/message":3,"subscriptionRequest/entityname":"devhub_solutionmerge","subscriptionRequest/scope":4,"subscriptionRequest/filteringattributes":"statuscode","subscriptionRequest/filterexpression":"statuscode eq 353400000"},"authentication":"@parameters('$authentication')"},"description":"Using devhub_approvedon rather than statuscode as the flow wasn't triggering with statuscode as a filtering attribute"}},"actions":{"Merge_development_solution":{"actions":{"Get_the_last_approved_solution_merge":{"runAfter":{},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"ListRecords","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionmerges","$select":"devhub_name","$filter":"devhub_solutionmergeid ne @{triggerOutputs()?['body/devhub_solutionmergeid']} and (statuscode eq 353400000 or statuscode eq 353400003 or statuscode eq 353400002 or statuscode eq 353400006)","$orderby":"devhub_approvedon desc","$top":1},"authentication":"@parameters('$authentication')"}},"If_another_solution_merge_is_in_progress":{"actions":{"Create_a_note_stating_the_solution_merge_is_queued":{"runAfter":{},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"CreateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"annotations","item/subject":"Solution merge queued","item/notetext":"This solution merge has been queued behind '@{outputs('Get_the_last_approved_solution_merge')?['body/value'][0]['devhub_name']}'.","item/objectid_devhub_solutionmerge@odata.bind":"devhub_solutionmerges(@{triggerOutputs()?['body/devhub_solutionmergeid']})"},"authentication":"@parameters('$authentication')"}},"Cancel_the_flow":{"runAfter":{"Queue_the_solution_merge":["Succeeded"]},"type":"Terminate","inputs":{"runStatus":"Cancelled"}},"Queue_the_solution_merge":{"runAfter":{"Create_a_note_stating_the_solution_merge_is_queued":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"PerformBoundAction","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionmerges","actionName":"Microsoft.Dynamics.CRM.devhub_QueueSolutionMerge","recordId":"@triggerOutputs()?['body/devhub_solutionmergeid']"},"authentication":"@parameters('$authentication')"}}},"runAfter":{"Get_the_last_approved_solution_merge":["Succeeded"]},"expression":{"not":{"equals":["@outputs('Get_the_last_approved_solution_merge')?['body/value']?[0]?['devhub_solutionmergeid']","@null"]}},"type":"If"},"Get_the_target_environment":{"runAfter":{"If_another_solution_merge_is_in_progress":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"GetItem","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutions","recordId":"@triggerOutputs()?['body/_devhub_targetsolution_value']","$select":"devhub_solutionid,devhub_uniquename","$expand":"devhub_StagingEnvironment($select=devhub_environmentid,devhub_tenantid,devhub_clientid,devhub_clientsecret,devhub_url)"},"authentication":"@parameters('$authentication')"}},"Update_the_solution_merge_status_to_merging":{"runAfter":{"Get_the_target_environment":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"UpdateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionmerges","recordId":"@triggerOutputs()?['body/devhub_solutionmergeid']","item/statuscode":353400003},"authentication":"@parameters('$authentication')"}},"Get_the_developed_issue":{"runAfter":{"Update_the_solution_merge_status_to_merging":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"GetItem","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_issues","recordId":"@outputs('Update_the_solution_merge_status_to_merging')?['body/_devhub_issue_value']","$select":"devhub_developmentsolution,devhub_type"},"authentication":"@parameters('$authentication')"}},"Export_the_development_solution":{"runAfter":{"Get_the_developed_issue":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"PerformUnboundAction","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"actionName":"ExportSolution","item/SolutionName":"@outputs('Get_the_developed_issue')?['body/devhub_developmentsolution']","item/Managed":false,"item/ExportAutoNumberingSettings":false,"item/ExportCalendarSettings":false,"item/ExportCustomizationSettings":false,"item/ExportEmailTrackingSettings":false,"item/ExportGeneralSettings":false,"item/ExportMarketingSettings":false,"item/ExportOutlookSynchronizationSettings":false,"item/ExportRelationshipRoles":false,"item/ExportIsvConfig":false,"item/ExportSales":false,"item/ExportExternalApplications":false},"authentication":"@parameters('$authentication')"}},"Get_access_token_for_staging_environment":{"runAfter":{"Export_the_development_solution":["Succeeded"]},"type":"Workflow","inputs":{"host":{"workflowReferenceName":"db657a26-1d37-eb11-a813-000d3a0b97ca"},"body":{"text":"@outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_tenantid']","text_1":"@outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_clientid']","text_2":"@outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_clientsecret']","text_3":"@outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_url']"}}},"Import_development_solution":{"runAfter":{"Get_access_token_for_staging_environment":["Succeeded"]},"type":"Http","inputs":{"method":"POST","uri":"@{outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_url']}/api/data/v9.1/ImportSolution","headers":{"Content-Type":"application/json"},"body":{"CustomizationFile":"@{outputs('Export_the_development_solution')?['body/ExportSolutionFile']}","OverwriteUnmanagedCustomizations":true,"PublishWorkflows":true,"ImportJobId":"@{variables('importJobId')}"},"authentication":{"type":"Raw","value":"Bearer @{outputs('Get_access_token_for_staging_environment')?['Body']?['access_token']}"},"retryPolicy":{"type":"none"}}},"Query_import_job_until_done":{"actions":{"Parse_import_job_JSON":{"runAfter":{"Get_import_job":["Succeeded"]},"type":"ParseJson","inputs":{"content":"@body('Get_import_job')","schema":{"type":"object","properties":{"progress":{"type":"number"},"data":{"type":"string"},"completedon":{"type":"string"}}}}},"Get_import_job":{"runAfter":{},"type":"Http","inputs":{"method":"GET","uri":"@{outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_url']}/api/data/v9.1/importjobs(@{variables('importJobId')})","authentication":{"type":"Raw","value":"Bearer @{outputs('Get_access_token_for_staging_environment')?['Body']?['access_token']}"},"retryPolicy":{"type":"none"}}},"Set_importJobComplete":{"runAfter":{"Parse_import_job_JSON":["Succeeded"]},"type":"SetVariable","inputs":{"name":"importJobComplete","value":"@not(equals(body('Parse_import_job_JSON')?['completedon'], null))"}},"If_incomplete":{"actions":{"Delay":{"runAfter":{},"type":"Wait","inputs":{"interval":{"count":30,"unit":"Second"}}}},"runAfter":{"Set_importJobComplete":["Succeeded"]},"expression":{"equals":["@variables('importJobComplete')","@false"]},"type":"If"}},"runAfter":{"Import_development_solution":["Succeeded","TimedOut"]},"expression":"@equals(variables('importJobComplete'), true)","limit":{"count":40,"timeout":"PT30M "},"type":"Until"},"If_importing_the_development_solution_failed":{"actions":{"Create_a_note_stating_the_solution_import_failed":{"runAfter":{},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"CreateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"annotations","item/subject":"Solution import failed","item/notetext":"The import into the staging environment failed with the following error:\n\n@{xpath(xml(body('Parse_import_job_JSON')?['data']), 'string(/importexportxml/solutionManifests/solutionManifest/result/@errortext)')}","item/objectid_devhub_solutionmerge@odata.bind":"devhub_solutionmerges(@{triggerOutputs()?['body/devhub_solutionmergeid']})"},"authentication":"@parameters('$authentication')"}},"Fail_the_flow":{"runAfter":{"Update_the_solution_merge_to_failed":["Succeeded"]},"type":"Terminate","inputs":{"runStatus":"Failed","runError":{"message":"The development solution import failed"}}},"Update_the_solution_merge_to_failed":{"runAfter":{"Create_a_note_stating_the_solution_import_failed":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"UpdateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionmerges","recordId":"@triggerOutputs()?['body/devhub_solutionmergeid']","item/statuscode":353400002},"authentication":"@parameters('$authentication')"}}},"runAfter":{"Query_import_job_until_done":["Succeeded"]},"expression":{"equals":["@xpath(xml(body('Parse_import_job_JSON')?['data']), 'string(/importexportxml/solutionManifests/solutionManifest/result/@result)')","failure"]},"type":"If"},"Get_solutions":{"runAfter":{"If_importing_the_development_solution_failed":["Succeeded"]},"type":"Http","inputs":{"method":"GET","uri":"@{outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_url']}/api/data/v9.1/solutions?$filter=uniquename eq '@{outputs('Get_the_developed_issue')?['body/devhub_developmentsolution']}' or uniquename eq '@{outputs('Get_the_target_environment')?['body/devhub_uniquename']}'&$select=uniquename&$expand=solution_solutioncomponent($select=objectid,componenttype,rootcomponentbehavior)","authentication":{"type":"Raw","value":"Bearer @{outputs('Get_access_token_for_staging_environment')?['Body']?['access_token']}"},"retryPolicy":{"type":"none"}}},"Parse_solutions_JSON":{"runAfter":{"Get_solutions":["Succeeded"]},"type":"ParseJson","inputs":{"content":"@body('Get_solutions')","schema":{"type":"object","properties":{"@@odata.context":{"type":"string"},"value":{"type":"array","items":{"type":"object","properties":{"@@odata.etag":{"type":"string"},"uniquename":{"type":"string"},"solutionid":{"type":"string"},"solution_solutioncomponent":{"type":"array"},"solution_solutioncomponent@odata.nextLink":{"type":"string"}},"required":["@@odata.etag","uniquename","solutionid","solution_solutioncomponent","solution_solutioncomponent@odata.nextLink"]}}}}}},"Filter_development_solution":{"runAfter":{"Parse_solutions_JSON":["Succeeded"]},"type":"Query","inputs":{"from":"@body('Parse_solutions_JSON')?['value']","where":"@equals(item()?['uniquename'], outputs('Get_the_developed_issue')?['body/devhub_developmentsolution'])"}},"Filter_target_solution":{"runAfter":{"Set_developmentSolutionComponents":["Succeeded"]},"type":"Query","inputs":{"from":"@body('Parse_solutions_JSON')?['value']","where":"@equals(item()?['uniquename'], outputs('Get_the_target_environment')?['body/devhub_uniquename'])"}},"Apply_to_each_development_solution_component":{"foreach":"@variables('developmentSolutionComponents')","actions":{"Find_target_solution_component_for_same_object_ID":{"runAfter":{},"type":"Query","inputs":{"from":"@variables('targetSolutionComponents')","where":"@equals(item()?['objectid'], items('Apply_to_each_development_solution_component')?['objectid'])"}},"If_matching_target_solution_component":{"actions":{"If_root_component_behavior_should_be_updated":{"actions":{"Update_solution_component":{"runAfter":{},"type":"Http","inputs":{"method":"POST","uri":"@{outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_url']}/api/data/v9.1/UpdateSolutionComponent","headers":{"Content-Type":"application/json"},"body":{"ComponentId":"@{items('Apply_to_each_development_solution_component')?['objectid']}","ComponentType":"@items('Apply_to_each_development_solution_component')?['componenttype']","SolutionUniqueName":"@{outputs('Get_the_target_environment')?['body/devhub_uniquename']}","IncludedComponentSettingsValues":"@if(equals(item()?['rootcomponentbehaviour'], 2), createArray(), null)"},"authentication":{"type":"Raw","value":"Bearer @{outputs('Get_access_token_for_staging_environment')?['Body']?['access_token']}"}}}},"runAfter":{},"expression":{"and":[{"not":{"equals":["@first(body('Find_target_solution_component_for_same_object_ID'))['rootcomponentbehavior']","@item()?['rootcomponentbehavior']"]}},{"not":{"equals":["@first(body('Find_target_solution_component_for_same_object_ID'))['rootcomponentbehavior']",0]}},{"not":{"equals":["@item()?['rootcomponentbehavior']","@null"]}}]},"type":"If"}},"runAfter":{"Find_target_solution_component_for_same_object_ID":["Succeeded"]},"else":{"actions":{"Add_solution_component":{"runAfter":{},"type":"Http","inputs":{"method":"POST","uri":"@{outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_url']}/api/data/v9.1/AddSolutionComponent","headers":{"Content-Type":"application/json"},"body":{"ComponentId":"@{string(item()?['objectid'])}","ComponentType":"@items('Apply_to_each_development_solution_component')?['componenttype']","SolutionUniqueName":"@{outputs('Get_the_target_environment')?['body/devhub_uniquename']}","AddRequiredComponents":false,"DoNotIncludeSubcomponents":"@if(equals(item()?['rootcomponentbehavior'], 0), false, true)","IncludedComponentSettingsValues":"@if(equals(item()?['rootcomponentbehaviour'], 2), createArray(), null)"},"authentication":{"type":"Raw","value":"Bearer @{outputs('Get_access_token_for_staging_environment')?['Body']?['access_token']}"}}}}},"expression":{"greater":["@length(body('Find_target_solution_component_for_same_object_ID'))",0]},"type":"If"}},"runAfter":{"Set_targetSolutionComponents":["Succeeded"]},"type":"Foreach"},"Get_the_post-merge_solution_version":{"runAfter":{"Apply_to_each_development_solution_component":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"PerformBoundAction","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionmerges","actionName":"Microsoft.Dynamics.CRM.devhub_GetPostMergeSolutionVersion","recordId":"@triggerOutputs()?['body/devhub_solutionmergeid']"},"authentication":"@parameters('$authentication')"}},"Update_target_solution_version":{"runAfter":{"Get_the_post-merge_solution_version":["Succeeded"]},"type":"Http","inputs":{"method":"PATCH","uri":"@{outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_url']}/api/data/v9.1/solutions(@{first(body('Filter_target_solution'))?['solutionid']})","headers":{"Content-Type":"application/json"},"body":{"version":"@{outputs('Get_the_post-merge_solution_version')?['body/MajorVersion']}.@{outputs('Get_the_post-merge_solution_version')?['body/MinorVersion']}.@{outputs('Get_the_post-merge_solution_version')?['body/PatchVersion']}"},"authentication":{"type":"Raw","value":"Bearer @{outputs('Get_access_token_for_staging_environment')?['Body']?['access_token']}"}}},"Publish":{"runAfter":{"Update_target_solution_version":["Succeeded"]},"type":"Http","inputs":{"method":"POST","uri":"@{outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_url']}/api/data/v9.1/PublishAllXml","headers":{"Content-Type":"application/json"},"authentication":{"type":"Raw","value":"Bearer @{outputs('Get_access_token_for_staging_environment')?['Body']?['access_token']}"}}},"If_there_are_manual_merge_activities":{"actions":{"Update_the_solution_merge_status_to_awaiting_manual_merge":{"runAfter":{},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"UpdateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionmerges","recordId":"@triggerOutputs()?['body/devhub_solutionmergeid']","item/statuscode":353400006},"authentication":"@parameters('$authentication')"}},"Start_and_wait_for_an_approval":{"runAfter":{"Get_the_solution_merge_creator":["Succeeded"]},"type":"OpenApiConnectionWebhook","inputs":{"host":{"connectionName":"shared_approvals","operationId":"StartAndWaitForAnApproval","apiId":"/providers/Microsoft.PowerApps/apis/shared_approvals"},"parameters":{"approvalType":"CustomResponse","WebhookApprovalCreationInput/responseOptions":["Merged"],"WebhookApprovalCreationInput/title":"Solution merge awaiting manual merge activities - @{triggerOutputs()?['body/devhub_name']}","WebhookApprovalCreationInput/assignedTo":"@outputs('Get_the_solution_merge_creator')?['body/internalemailaddress']","WebhookApprovalCreationInput/enableNotifications":true,"WebhookApprovalCreationInput/enableReassignment":true},"authentication":"@parameters('$authentication')"}},"Get_the_solution_merge_creator":{"runAfter":{"Update_the_solution_merge_status_to_awaiting_manual_merge":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"GetItem","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"systemusers","recordId":"@triggerOutputs()?['body/_createdby_value']","$select":"internalemailaddress,personalemailaddress"},"authentication":"@parameters('$authentication')"}}},"runAfter":{"Publish":["Succeeded"]},"expression":{"equals":["@triggerOutputs()?['body/devhub_manualmergeactivities']",true]},"type":"If"},"Delete_development_solution":{"runAfter":{"If_there_are_manual_merge_activities":["Succeeded"]},"type":"Http","inputs":{"method":"DELETE","uri":"@{outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_url']}/api/data/v9.1/solutions(@{first(body('Filter_development_solution'))?['solutionid']})","headers":{"Content-Type":"application/json"},"authentication":{"type":"Raw","value":"Bearer @{outputs('Get_access_token_for_staging_environment')?['Body']?['access_token']}"}}},"Export_managed_solution":{"runAfter":{"Delete_development_solution":["Succeeded"]},"type":"Http","inputs":{"method":"POST","uri":"@{outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_url']}/api/data/v9.1/ExportSolution","headers":{"Content-Type":"application/json"},"body":{"Managed":true,"SolutionName":"@{outputs('Get_the_target_environment')?['body/devhub_uniquename']}"},"authentication":{"type":"Raw","value":"Bearer @{outputs('Get_access_token_for_staging_environment')?['Body']?['access_token']}"}}},"Parse_export_managed_solution_JSON":{"runAfter":{"Export_managed_solution":["Succeeded"]},"type":"ParseJson","inputs":{"content":"@body('Export_managed_solution')","schema":{"type":"object","properties":{"@@odata.context":{"type":"string"},"ExportSolutionFile":{"type":"string"}}}}},"Export_unmanaged_solution":{"runAfter":{"Parse_export_managed_solution_JSON":["Succeeded"]},"type":"Http","inputs":{"method":"POST","uri":"@{outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_url']}/api/data/v9.1/ExportSolution","headers":{"Content-Type":"application/json"},"body":{"Managed":false,"SolutionName":"@{outputs('Get_the_target_environment')?['body/devhub_uniquename']}"},"authentication":{"type":"Raw","value":"Bearer @{outputs('Get_access_token_for_staging_environment')?['Body']?['access_token']}"}}},"Parse_export_unmanaged_solution_JSON":{"runAfter":{"Export_unmanaged_solution":["Succeeded"]},"type":"ParseJson","inputs":{"content":"@body('Export_unmanaged_solution')","schema":{"type":"object","properties":{"@@odata.context":{"type":"string"},"ExportSolutionFile":{"type":"string"}}}}},"Set_developmentSolutionComponents":{"runAfter":{"Filter_development_solution":["Succeeded"]},"type":"SetVariable","inputs":{"name":"developmentSolutionComponents","value":"@first(body('Filter_development_solution'))['solution_solutioncomponent']"}},"Set_targetSolutionComponents":{"runAfter":{"Filter_target_solution":["Succeeded"]},"type":"SetVariable","inputs":{"name":"targetSolutionComponents","value":"@first(body('Filter_target_solution'))['solution_solutioncomponent']"}}},"runAfter":{"Initialize_targetSolutionComponents":["Succeeded"]},"type":"Scope"},"Initialize_importJobId":{"runAfter":{},"type":"InitializeVariable","inputs":{"variables":[{"name":"importJobId","type":"string","value":"@{guid()}"}]}},"Initialize_importJobProgress":{"runAfter":{"Initialize_importJobId":["Succeeded"]},"type":"InitializeVariable","inputs":{"variables":[{"name":"importJobComplete","type":"boolean","value":"@false"}]}},"Initialize_developmentSolutionComponents":{"runAfter":{"Initialize_importJobProgress":["Succeeded"]},"type":"InitializeVariable","inputs":{"variables":[{"name":"developmentSolutionComponents","type":"array"}]}},"Initialize_targetSolutionComponents":{"runAfter":{"Initialize_developmentSolutionComponents":["Succeeded"]},"type":"InitializeVariable","inputs":{"variables":[{"name":"targetSolutionComponents","type":"array"}]}},"Set_solution_merge_status_to_'Failed'_(merge_development_solution)":{"runAfter":{"Merge_development_solution":["Failed","TimedOut"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"UpdateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionmerges","recordId":"@triggerOutputs()?['body/devhub_solutionmergeid']","item/statecode":0,"item/statuscode":353400002},"authentication":"@parameters('$authentication')"}},"Update_the_solution_merge_to_'Merged'":{"runAfter":{"If_issue_is_feature":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"UpdateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionmerges","recordId":"@triggerOutputs()?['body/devhub_solutionmergeid']","item/statecode":1,"item/statuscode":353400001},"authentication":"@parameters('$authentication')"}},"Archive_development_solution_on_solution_merge":{"runAfter":{"Update_the_solution_merge_to_'Merged'":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"UpdateEntityFileImageFieldContent","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionmerges","recordId":"@triggerOutputs()?['body/devhub_solutionmergeid']","fileImageFieldName":"devhub_developmentsolution","item":"@base64ToBinary(outputs('Export_the_development_solution')?['body/ExportSolutionFile'])","x-ms-file-name":"@{outputs('Get_the_developed_issue')?['body/devhub_developmentsolution']}.zip"},"authentication":"@parameters('$authentication')"}},"Get_the_development_solution_by_unique_name":{"runAfter":{"Archive_development_solution_on_solution_merge":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"ListRecords","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"solutions","$select":"solutionid","$filter":"uniquename eq '@{outputs('Get_the_developed_issue')?['body/devhub_developmentsolution']}'","$top":1},"authentication":"@parameters('$authentication')"}},"Delete_the_development_solution":{"runAfter":{"Get_the_development_solution_by_unique_name":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"DeleteRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"solutions","recordId":"@first(outputs('Get_the_development_solution_by_unique_name')?['body/value'])['solutionid']"},"authentication":"@parameters('$authentication')"}},"Create_a_failure_note_on_the_solution_merge_(merge_development_solution)":{"runAfter":{"Set_solution_merge_status_to_'Failed'_(merge_development_solution)":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"CreateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"annotations","item/subject":"Failed to merge","item/notetext":"Failed to merge the development solution with the target solution. Please refer to the flow run for more detail. \n\n","item/objectid_devhub_solutionmerge@odata.bind":"devhub_solutionmerges(@{triggerOutputs()?['body/devhub_solutionmergeid']})"},"authentication":"@parameters('$authentication')"}},"If_issue_is_feature":{"actions":{"Update_solution_minor_version":{"runAfter":{},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"UpdateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutions","recordId":"@triggerOutputs()?['body/_devhub_targetsolution_value']","item/devhub_minorversion":"@outputs('Get_the_post-merge_solution_version')?['body/MinorVersion']"},"authentication":"@parameters('$authentication')"}}},"runAfter":{"Merge_development_solution":["Succeeded"]},"else":{"actions":{"Update_solution_patch_version":{"runAfter":{},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"UpdateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutions","recordId":"@triggerOutputs()?['body/_devhub_targetsolution_value']","item/devhub_patchversion":"@outputs('Get_the_post-merge_solution_version')?['body/PatchVersion']"},"authentication":"@parameters('$authentication')"}}}},"expression":{"equals":["@outputs('Get_the_developed_issue')?['body/devhub_type']",353400001]},"type":"If"}},"outputs":{}}},"schemaVersion":"1.0.0.0"}
\ No newline at end of file
+{
+ "properties": {
+ "connectionReferences": {
+ "shared_commondataserviceforapps": {
+ "runtimeSource": "embedded",
+ "connection": {
+ "connectionReferenceLogicalName": "devhub_sharedcommondataserviceforapps_f7ca3"
+ },
+ "api": {
+ "name": "shared_commondataserviceforapps"
+ }
+ }
+ },
+ "definition": {
+ "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "$connections": {
+ "defaultValue": {},
+ "type": "Object"
+ },
+ "$authentication": {
+ "defaultValue": {},
+ "type": "SecureObject"
+ }
+ },
+ "triggers": {
+ "When_a_solution_merge_is_approved": {
+ "metadata": {
+ "operationMetadataId": "69ff95c5-a314-4bde-bd82-1a60234d4fc2"
+ },
+ "type": "OpenApiConnectionWebhook",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "SubscribeWebhookTrigger",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "subscriptionRequest/message": 3,
+ "subscriptionRequest/entityname": "devhub_solutionmerge",
+ "subscriptionRequest/scope": 4,
+ "subscriptionRequest/filteringattributes": "statuscode",
+ "subscriptionRequest/filterexpression": "statuscode eq 353400000"
+ },
+ "authentication": "@parameters('$authentication')"
+ },
+ "description": "Using devhub_approvedon rather than statuscode as the flow wasn't triggering with statuscode as a filtering attribute"
+ }
+ },
+ "actions": {
+ "Set_solution_merge_status_as_pending_merge_or_queued": {
+ "actions": {
+ "Switch_on_merge_strategy": {
+ "runAfter": {},
+ "cases": {
+ "Parallel": {
+ "case": 353400001,
+ "actions": {
+ "If_environment_is_not_set": {
+ "actions": {
+ "Create_an_environment_pending_provision": {
+ "runAfter": {},
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "CreateRecord",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_environments",
+ "item/devhub_lifetime": 353400001,
+ "item/devhub_name": "Extract @{triggerOutputs()?['body/devhub_name']}",
+ "item/devhub_url": "@null",
+ "item/ownerid@odata.bind": "systemusers(@{triggerOutputs()?['body/_createdby_value']})",
+ "item/devhub_Solution@odata.bind": "devhub_solutions(@{triggerOutputs()?['body/_devhub_targetsolution_value']})",
+ "item/statecode": 0,
+ "item/statuscode": 353400004
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ },
+ "Set_the_environment_on_the_solution_merge_and_update_status": {
+ "runAfter": {
+ "Create_an_environment_pending_provision": [
+ "Succeeded"
+ ]
+ },
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "UpdateRecord",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_solutionmerges",
+ "recordId": "@triggerOutputs()?['body/devhub_solutionmergeid']",
+ "item/devhub_Environment@odata.bind": "devhub_environments(@{outputs('Create_an_environment_pending_provision')?['body/devhub_environmentid']})",
+ "item/statuscode": 353400008
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ },
+ "When_the_environment_is_ready": {
+ "runAfter": {
+ "Set_the_environment_on_the_solution_merge_and_update_status": [
+ "Succeeded"
+ ]
+ },
+ "type": "OpenApiConnectionWebhook",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "SubscribeWebhookTrigger",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "subscriptionRequest/message": 3,
+ "subscriptionRequest/entityname": "devhub_environment",
+ "subscriptionRequest/scope": 4,
+ "subscriptionRequest/filteringattributes": "statuscode",
+ "subscriptionRequest/filterexpression": "devhub_environmentid eq @{outputs('Create_an_environment_pending_provision')?['body/devhub_environmentid']} and statuscode eq 1"
+ },
+ "authentication": "@parameters('$authentication')"
+ },
+ "description": "This flow does not handle the preparation of the environment. There is a dependency on Git, thus this is better suited to the CI/CD solution layered on top."
+ }
+ },
+ "runAfter": {},
+ "expression": {
+ "equals": [
+ "@triggerOutputs()?['body/_devhub_environment_value']",
+ "@null"
+ ]
+ },
+ "type": "If"
+ }
+ }
+ },
+ "Sequential": {
+ "case": 353400000,
+ "actions": {
+ "Get_the_last_approved_solution_merge": {
+ "runAfter": {},
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "ListRecords",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_solutionmerges",
+ "$select": "devhub_name",
+ "$filter": "devhub_solutionmergeid ne @{triggerOutputs()?['body/devhub_solutionmergeid']} and devhub_mergestrategy eq 353400000 and _devhub_environment_value eq @{triggerOutputs()?['body/_devhub_environment_value']} and statecode eq 0 and statuscode ne 1 and statuscode ne 353400004",
+ "$orderby": "devhub_approvedon desc",
+ "$top": 1
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ },
+ "If_another_solution_merge_is_in_progress": {
+ "actions": {
+ "Create_a_note_stating_the_solution_merge_is_queued": {
+ "runAfter": {},
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "CreateRecord",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "annotations",
+ "item/subject": "Solution merge queued",
+ "item/notetext": "This solution merge has been queued behind '@{outputs('Get_the_last_approved_solution_merge')?['body/value'][0]['devhub_name']}'.",
+ "item/objectid_devhub_solutionmerge@odata.bind": "devhub_solutionmerges(@{triggerOutputs()?['body/devhub_solutionmergeid']})"
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ },
+ "Cancel_the_flow": {
+ "runAfter": {
+ "Queue_the_solution_merge": [
+ "Succeeded"
+ ]
+ },
+ "type": "Terminate",
+ "inputs": {
+ "runStatus": "Cancelled"
+ }
+ },
+ "Queue_the_solution_merge": {
+ "runAfter": {
+ "Create_a_note_stating_the_solution_merge_is_queued": [
+ "Succeeded"
+ ]
+ },
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "PerformBoundAction",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_solutionmerges",
+ "actionName": "Microsoft.Dynamics.CRM.devhub_QueueSolutionMerge",
+ "recordId": "@triggerOutputs()?['body/devhub_solutionmergeid']"
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ }
+ },
+ "runAfter": {
+ "Get_the_last_approved_solution_merge": [
+ "Succeeded"
+ ]
+ },
+ "expression": {
+ "not": {
+ "equals": [
+ "@outputs('Get_the_last_approved_solution_merge')?['body/value']?[0]?['devhub_solutionmergeid']",
+ "@null"
+ ]
+ }
+ },
+ "type": "If"
+ }
+ }
+ }
+ },
+ "default": {
+ "actions": {
+ "Terminate": {
+ "runAfter": {},
+ "type": "Terminate",
+ "inputs": {
+ "runStatus": "Failed",
+ "runError": {
+ "message": "The merge strategy was not set or is unrecognised."
+ }
+ }
+ }
+ }
+ },
+ "expression": "@triggerOutputs()?['body/devhub_mergestrategy']",
+ "metadata": {
+ "operationMetadataId": "bdd6278a-9d44-4880-a1bf-ee37c8467ed1"
+ },
+ "type": "Switch"
+ },
+ "Update_status_to_pending_merge": {
+ "runAfter": {
+ "Switch_on_merge_strategy": [
+ "Succeeded"
+ ]
+ },
+ "metadata": {
+ "operationMetadataId": "cbfc069a-1223-4cb0-9a79-d5bef64aec6f"
+ },
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "UpdateRecord",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_solutionmerges",
+ "recordId": "@triggerOutputs()?['body/devhub_solutionmergeid']",
+ "item/statuscode": 353400009
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ }
+ },
+ "runAfter": {},
+ "metadata": {
+ "operationMetadataId": "820ee2f4-bdd8-4296-98d0-95ce89a0e95e"
+ },
+ "type": "Scope"
+ },
+ "Set_solution_merge_status_to_'Failed'_(merge_development_solution)": {
+ "runAfter": {
+ "Set_solution_merge_status_as_pending_merge_or_queued": [
+ "Failed",
+ "TimedOut"
+ ]
+ },
+ "metadata": {
+ "operationMetadataId": "331c4f98-f492-47f6-b27f-3ad912b136f0"
+ },
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "UpdateRecord",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_solutionmerges",
+ "recordId": "@triggerOutputs()?['body/devhub_solutionmergeid']",
+ "item/statecode": 0,
+ "item/statuscode": 353400002
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ },
+ "Create_a_failure_note_on_the_solution_merge_(merge_development_solution)": {
+ "runAfter": {
+ "Set_solution_merge_status_to_'Failed'_(merge_development_solution)": [
+ "Succeeded"
+ ]
+ },
+ "metadata": {
+ "operationMetadataId": "d09b106a-6314-4e47-a872-0a61a8923ef0"
+ },
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "CreateRecord",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "annotations",
+ "item/subject": "Failed to merge",
+ "item/notetext": "Failed to initiate the merging of the development solution with the target solution. Please refer to the flow run for more detail. \n\n",
+ "item/objectid_devhub_solutionmerge@odata.bind": "devhub_solutionmerges(@{triggerOutputs()?['body/devhub_solutionmergeid']})"
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ },
+ "If_the_merge_strategy_is_sequential": {
+ "actions": {
+ "Get_the_target_solution": {
+ "runAfter": {},
+ "metadata": {
+ "operationMetadataId": "ff0b3aa6-7f9d-4c4e-b7fb-180d9c2e6e86"
+ },
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "GetItem",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_solutions",
+ "recordId": "@triggerOutputs()?['body/_devhub_targetsolution_value']",
+ "$select": "devhub_minorversion, devhub_patchversion"
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ },
+ "Switch_on_issue_type": {
+ "runAfter": {
+ "Get_the_target_solution": [
+ "Succeeded"
+ ]
+ },
+ "cases": {
+ "Feature": {
+ "case": 353400001,
+ "actions": {
+ "Update_solution_minor_version": {
+ "runAfter": {},
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "UpdateRecord",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_solutions",
+ "recordId": "@triggerOutputs()?['body/_devhub_targetsolution_value']",
+ "item/devhub_minorversion": "@add(outputs('Get_the_target_solution')?['body/devhub_minorversion'])"
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ }
+ }
+ }
+ },
+ "default": {
+ "actions": {
+ "Update_solution_patch_version": {
+ "runAfter": {},
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "UpdateRecord",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_solutions",
+ "recordId": "@triggerOutputs()?['body/_devhub_targetsolution_value']",
+ "item/devhub_patchversion": "@add(outputs('Get_the_target_solution')?['body/devhub_patchversion'], 1)"
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ }
+ }
+ },
+ "expression": "@outputs('Get_the_developed_issue')?['body/devhub_type']",
+ "metadata": {
+ "operationMetadataId": "cbe942be-9c1b-4b21-82f8-76cc6f590e3b"
+ },
+ "type": "Switch"
+ }
+ },
+ "runAfter": {
+ "Get_the_developed_issue": [
+ "Succeeded"
+ ]
+ },
+ "expression": {
+ "equals": [
+ "@triggerOutputs()?['body/devhub_mergestrategy']",
+ 353400000
+ ]
+ },
+ "metadata": {
+ "operationMetadataId": "f517eb59-3789-4bbd-b06b-c6e85303fea5"
+ },
+ "type": "If"
+ },
+ "When_the_solution_merge_status_is_'Merged'": {
+ "runAfter": {
+ "Set_solution_merge_status_as_pending_merge_or_queued": [
+ "Succeeded"
+ ]
+ },
+ "metadata": {
+ "operationMetadataId": "c8124adb-ef7b-4b02-ad2d-126f1668ef9e"
+ },
+ "type": "OpenApiConnectionWebhook",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "SubscribeWebhookTrigger",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "subscriptionRequest/message": 3,
+ "subscriptionRequest/entityname": "devhub_solutionmerge",
+ "subscriptionRequest/scope": 4,
+ "subscriptionRequest/filteringattributes": "statuscode",
+ "subscriptionRequest/filterexpression": "devhub_solutionmergeid eq @{triggerOutputs()?['body/devhub_solutionmergeid']} and statuscode eq 353400001"
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ },
+ "Get_the_developed_issue": {
+ "runAfter": {
+ "When_the_solution_merge_status_is_'Merged'": [
+ "Succeeded"
+ ]
+ },
+ "metadata": {
+ "operationMetadataId": "15e98bbf-6dec-4900-b615-d769d32d4bf3"
+ },
+ "type": "OpenApiConnection",
+ "inputs": {
+ "host": {
+ "connectionName": "shared_commondataserviceforapps",
+ "operationId": "GetItem",
+ "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
+ },
+ "parameters": {
+ "entityName": "devhub_issues",
+ "recordId": "@triggerOutputs()?['body/_devhub_issue_value']",
+ "$select": "devhub_developmentsolution,devhub_type"
+ },
+ "authentication": "@parameters('$authentication')"
+ }
+ }
+ },
+ "outputs": {}
+ }
+ },
+ "schemaVersion": "1.0.0.0"
+}
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json.data.xml
index 4a9ed90..aba1e01 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json.data.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json.data.xml
@@ -11,8 +11,8 @@
0
0
0
- 0
- 1
+ 1
+ 2
1
1
1.0
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeiscreated-Inheritmergestrategyfr-7CBCAAFF-8116-43F7-9A1C-BACD092C2380.xaml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeiscreated-Inheritmergestrategyfr-7CBCAAFF-8116-43F7-9A1C-BACD092C2380.xaml
new file mode 100644
index 0000000..ff321ed
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeiscreated-Inheritmergestrategyfr-7CBCAAFF-8116-43F7-9A1C-BACD092C2380.xaml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+ Assembly references and imported namespaces for internal implementation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SelectFirstNonNull
+ [New Object() { UpdateStep1_2 }]
+
+
+
+ [UpdateStep1_1]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SelectFirstNonNull
+ [New Object() { UpdateStep1_4 }]
+
+
+
+ [UpdateStep1_3]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeiscreated-Inheritmergestrategyfr-7CBCAAFF-8116-43F7-9A1C-BACD092C2380.xaml.data.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeiscreated-Inheritmergestrategyfr-7CBCAAFF-8116-43F7-9A1C-BACD092C2380.xaml.data.xml
new file mode 100644
index 0000000..9271556
--- /dev/null
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeiscreated-Inheritmergestrategyfr-7CBCAAFF-8116-43F7-9A1C-BACD092C2380.xaml.data.xml
@@ -0,0 +1,27 @@
+
+
+ /Workflows/Whenasolutionmergeiscreated-Inheritmergestrategyfr-7CBCAAFF-8116-43F7-9A1C-BACD092C2380.xaml
+ 1
+ 0
+ 0
+ 1
+ 4
+ 0
+
+ 1
+ 0
+ 0
+ 1
+ 1
+ 2
+ 40
+ 1
+ 1
+ 0.2.0
+ 1
+ 1
+ devhub_solutionmerge
+
+
+
+
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json b/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json
deleted file mode 100644
index 2790dc5..0000000
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json
+++ /dev/null
@@ -1 +0,0 @@
-{"properties":{"connectionReferences":{"shared_commondataserviceforapps":{"runtimeSource":"embedded","connection":{"connectionReferenceLogicalName":"devhub_sharedcommondataserviceforapps_f7ca3"},"api":{"name":"shared_commondataserviceforapps"}}},"definition":{"$schema":"https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#","contentVersion":"1.0.0.0","parameters":{"$connections":{"defaultValue":{},"type":"Object"},"$authentication":{"defaultValue":{},"type":"SecureObject"}},"triggers":{"When_a_solution_merge_is_merged_or_cancelled":{"type":"OpenApiConnectionWebhook","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"SubscribeWebhookTrigger","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"subscriptionRequest/message":3,"subscriptionRequest/entityname":"devhub_solutionmerge","subscriptionRequest/scope":4,"subscriptionRequest/filteringattributes":"statuscode","subscriptionRequest/filterexpression":"statuscode eq 353400001 or statuscode eq 2"},"authentication":"@parameters('$authentication')"},"runtimeConfiguration":{"concurrency":{"runs":1}}}},"actions":{"Get_the_first_queued_solution_merge":{"runAfter":{"If_there_is_an_in-progress_solution_merge":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"ListRecords","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionmerges","$select":"devhub_approvedon","$filter":"statuscode eq 353400004","$orderby":"devhub_queuedon asc","$top":1},"authentication":"@parameters('$authentication')"}},"If_there_is_a_queued_solution_merge":{"actions":{"Set_the_solution_merge_status_to_approved":{"runAfter":{},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"UpdateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionmerges","recordId":"@body('Get_the_first_queued_solution_merge')['value'][0]['devhub_solutionmergeid']","item/statuscode":353400000},"authentication":"@parameters('$authentication')"},"description":"Triggering update to reviewed on field as triggering by statuscode wasn't working"}},"runAfter":{"Get_the_first_queued_solution_merge":["Succeeded"]},"expression":{"equals":["@length(outputs('Get_the_first_queued_solution_merge')?['body/value'])",1]},"type":"If"},"Get_in-progress_merge":{"runAfter":{},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"ListRecords","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionmerges","$select":"devhub_name","$filter":"devhub_solutionmergeid ne @{triggerOutputs()?['body/devhub_solutionmergeid']} and (statuscode eq 353400000 or statuscode eq 353400003 or statuscode eq 353400002 or statuscode eq 353400006)","$top":1},"authentication":"@parameters('$authentication')"}},"If_there_is_an_in-progress_solution_merge":{"actions":{"Terminate":{"runAfter":{},"type":"Terminate","inputs":{"runStatus":"Cancelled"}}},"runAfter":{"Get_in-progress_merge":["Succeeded"]},"expression":{"greater":["@length(outputs('Get_in-progress_merge')?['body/value'])",0]},"type":"If"}},"outputs":{}}},"schemaVersion":"1.0.0.0"}
\ No newline at end of file
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/Extract/environmentvariabledefinitions/devhub_SolutionPublisher/environmentvariabledefinition.xml b/src/solutions/devhub_DevelopmentHub_Develop/Extract/environmentvariabledefinitions/devhub_SolutionPublisher/environmentvariabledefinition.xml
index 973fb14..1708e06 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/Extract/environmentvariabledefinitions/devhub_SolutionPublisher/environmentvariabledefinition.xml
+++ b/src/solutions/devhub_DevelopmentHub_Develop/Extract/environmentvariabledefinitions/devhub_SolutionPublisher/environmentvariabledefinition.xml
@@ -1,5 +1,4 @@
-
diff --git a/src/solutions/devhub_DevelopmentHub_Develop/WebResources/Scripts/src/develop.common.ts b/src/solutions/devhub_DevelopmentHub_Develop/WebResources/Scripts/src/develop.common.ts
index d2dd145..8142cca 100644
--- a/src/solutions/devhub_DevelopmentHub_Develop/WebResources/Scripts/src/develop.common.ts
+++ b/src/solutions/devhub_DevelopmentHub_Develop/WebResources/Scripts/src/develop.common.ts
@@ -78,4 +78,48 @@ namespace DevelopmentHub.Develop {
(error) => onExecuteWorkflowError(error),
);
}
+
+ export function toggleFieldOnValue(
+ context: Xrm.Events.EventContext,
+ sourceField: string,
+ value: any,
+ targetField: string,
+ ) {
+ const formContext = context.getFormContext();
+
+ const sourceAttribute = formContext.getAttribute(sourceField) as
+ Xrm.Attributes.Attribute;
+ if (!sourceAttribute) {
+ return;
+ }
+
+ const targetControl = formContext.getControl(targetField) as
+ Xrm.Controls.StandardControl;
+ if (!targetControl) {
+ return;
+ }
+
+ const sourceValue = sourceAttribute.getValue();
+ const sourceType = sourceAttribute.getAttributeType();
+
+ let toggle = false;
+ switch (sourceType) {
+ case 'multioptionset':
+ toggle = sourceValue
+ ? (JSON.stringify(sourceValue.sort()) === JSON.stringify(value.sort()))
+ : sourceValue === value;
+ break;
+ case 'lookup':
+ toggle = sourceValue ? sourceValue[0].id === value : sourceValue === value;
+ break;
+ default:
+ toggle = sourceValue === value;
+ break;
+ }
+
+ targetControl.setVisible(toggle);
+ if (!toggle) {
+ targetControl.getAttribute().setValue(null);
+ }
+ }
}