diff --git a/README.md b/README.md index 1808002..1c8d8d9 100644 --- a/README.md +++ b/README.md @@ -28,10 +28,10 @@ The Development Hub brings continuous integration to Power Apps development by a ## Features -- Peer review -- Solution merging -- Automatic semantic versioning -- Automatic source control +- Peer review for configuration +- Merging for individual bugs and features +- Automated semantic versioning +- Automated source control ## Prerequisites @@ -47,30 +47,23 @@ The package can be deployed to your development environment using the Package De ### Register an app -Access to the Common Data Service Web API is required in order to merge development solutions with the solution(s) in the master instance. Follow Microsoft's guide on registering an app with access to the Common Data Service Web API [here](https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/walkthrough-register-app-azure-active-directory). - -Once registered: - -- Grant admin consent for the tenant for the Dynamics CRM API permissions -- Navigate to _Authentication_ and set _Treat application as a public client_ to _Yes_. -- Make a note of the client ID and tenant ID +Access to the Common Data Service Web API is required in order to merge development solutions with the solution(s) in the master instance. Follow Microsoft's guide on registering an app with access to the Common Data Service Web API [here](https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/use-single-tenant-server-server-authentication#azure-application-registration). You will need to use the client ID, tenant ID, and a client secret for the app you register in later steps. ### Configure plug-in steps Use the plug-in registration tool to set the secure configuration parameters necessary for authentication for the Web API. The steps to set the secure configuration for are under the InjectSecureConfig plug-in within the DevelopmentHub.Develop assembly. -The secure configuration is a JSON object with the client ID, tenant ID, and user credentials: +The secure configuration is a JSON object with the client ID, tenant ID, and client secret: ```json { "ClientId": "", "TenantId": "", - "Username": "", - "Password": "" + "ClientSecret": "", } ``` -**Note: the user must have admin permissions in the master instance.** +**Note: the application user must should have admin permissions in both the master instance and the development instance.** ### Configure Azure DevOps @@ -82,16 +75,9 @@ Navigate to _Project Settings -> Repositories_ in the Azure DevOps project that - Contribute - Create branch -A build definition capable of extracting solutions is required. Refer to the [samples](./samples) folder for a possible build configuration. If you use the sample files as is, the Cake build script assumes that your folder structure is similar to that of this repository i.e. you have a _solutions_ folder at the root, folders within this that match your solutions' unique names, a _solution.json_ within each of these that provides the development environment URL, and an _Extract_ folder alongside it to contain the unpacked solution zip file fragments. - -If you have an existing folder structure which is different, the _build.cake_ file will probably require tweaking to how the `outputPath` variable is assigned as well as the path used to retrieve the _solution.json_ file within `GetConnectionString`. The _azure-pipelines-extract.yml_ file shouldn't need to be changed. +A build definition capable of extracting solutions is required. There are several files in the [samples](./samples) folder to help you with this. If you use the sample files as is, copy the _scripts_ folder and _azure-pipelines-extract.yml_ file into your repository. The sample build script assumes that your repository structure is that you have a _src_ folder at the root, a _solutions_ folder within, and then folders that match your solutions' unique names. In addition, it expects a _solution.json_ within each of these solution folders that provides the development environment URL (see the _solution.json_ in the samples folder), and an _extract_ folder alongside it to contain the unpacked solution zip file fragments. You will also need to create a _Development Hub_ variable group that contains three variables - `Client ID`, `Tenant ID`, and `Client Secret`. These should be taken from the app registration created earlier. -You will need [Cake](https://cakebuild.net/) installed in your repository to use the sample build files. You can do this easily within VS Code by installing the Cake extension and running the _Cake: Install to workspace_ task. If no _build.ps1_ bootstrapper file has been created in the root of the repository, you can create this using the _Cake: Install a bootstrapper_ task. -The sample _build.cake_ file can then be used. - -The sample build requires that a variable group named 'Cake' exists and that it contains two variables - _dynamicsUsername_ and _dynamicsPassword_. These will be used by the build to connect to the development instance when extracting the post-merge solution zip. - -**Note: the Common Data Service package Yeoman generator will scaffold a build and repository compatible with the Development Hub.** +If you have an existing folder structure which is different, the _Merge-SolutionVersion.ps1_ script will require tweaking - but the _azure-pipelines-extract.yml_ file shouldn't need to be changed. ### Set solution environment variables @@ -106,10 +92,12 @@ The build definition ID is the numeric ID given to the build definition by Azure ### Set flow connections -There are two flows located in the _devhub_DevelopmentHub_AzureDevOps_ solution that must be set in order to trigger extract builds. The flows to set the connections on are: +There are four flows located in the _devhub_DevelopmentHub_Develop_ and _devhub_DevelopmentHub_AzureDevOps_ solutions that must be set. The flows to set the connections on are: +- When a solution merge is approved -> Merge the solution +- When a solution merge is merged -> Approve the first queued solution merge - Environment Variable Key -> Environment Variable Value -- When a solution is merged - Commit changes to source control +- When a solution is merged -> Commit changes to source control ## Configuration @@ -153,7 +141,7 @@ Once the issue has been developed, a solution merge record can be created. This Once approved, the development solution will be merged into the target solution. If multiple solution merges have been approved, they will enter a queue. This means that an 'Approved' solution merge will transition to either a 'Merging' or 'Queued' status. -A successful solution merge will transition to an inactive 'Merged' status. The 'Version History' tab on the target solution record will also contain two new attachments with the post-merge unmanaged and managed solution zips. The new solution version is based on the type of issue merged. A feature issue will increment the minor version and a bug issue will increment the patch version. Major version changes must be done manually. +A successful solution merge will transition to an inactive 'Merged' status. The 'Version History' tab on the target solution record will also contain a new record with the post-merge unmanaged and managed solution zips available. The new solution version is based on the type of issue merged. A feature issue will increment the minor version and a bug issue will increment the patch version. Major version changes must be done manually. ![Solution merge](./docs/images/solutionmerge.png) @@ -168,6 +156,8 @@ Specifying that there are manual merge activities on the solution merge record w When the merging process is in a state where manual merge activities can begin, the solution merge will transition to an 'Awaiting Manual Merge Activities' status. If you are deleting components from the solution in the master instance, it is recommended to update the major version of the solution record in the Development Hub during this period. +To notify the flow that the manual merge activities are complete, navigate to _Action items -> Approvals_ within Power Automate and set the approval status to merged. + ### Handle a failed merge If the merging process failed (e.g. due to missing dependencies) then the solution merge will transition to a 'Failed' status. A *Retry* button is available after the necessary steps have been taken. Failure reason will be attached as a note to the solution merge record. diff --git a/common/DevelopmentHub.BusinessLogic/IntegratedWorkflowActivity.cs b/common/DevelopmentHub.BusinessLogic/IntegratedWorkflowActivity.cs index 5212d97..d084674 100644 --- a/common/DevelopmentHub.BusinessLogic/IntegratedWorkflowActivity.cs +++ b/common/DevelopmentHub.BusinessLogic/IntegratedWorkflowActivity.cs @@ -88,17 +88,17 @@ protected override void Execute(CodeActivityContext context) [ExcludeFromCodeCoverage] private static IODataClient GetNewODataClient(Uri targetInstance, CodeActivityContext context, IWorkflowContext workflowContext, ILogWriter logWriter) { - var passwordGrantRequest = GetPasswordGrantRequest(workflowContext, logWriter); - passwordGrantRequest.Resource = targetInstance; + var oAuthGrantRequest = GetOAuthGrantRequest(workflowContext, logWriter); + oAuthGrantRequest.Resource = targetInstance; - logWriter.Log(Severity.Info, Tag, $"Making password grant OAuth request for {passwordGrantRequest.Resource} as {passwordGrantRequest.Username}"); + logWriter.Log(Severity.Info, Tag, $"Making client credentials grant OAuth request for {oAuthGrantRequest.Resource}."); - var token = (context.GetExtension() ?? new OAuthTokenRepository()).GetAccessToken(passwordGrantRequest).Result; + var token = (context.GetExtension() ?? new OAuthTokenRepository()).GetAccessToken(oAuthGrantRequest).Result; return new ODataClient(targetInstance, token); } - private static OAuthPasswordGrantRequest GetPasswordGrantRequest(IWorkflowContext workflowContext, ILogWriter logWriter) + private static OAuthClientCredentialsGrantRequest GetOAuthGrantRequest(IWorkflowContext workflowContext, ILogWriter logWriter) { if (!workflowContext.SharedVariables.ContainsKey(SharedVariablesSecureConfigKey)) { @@ -109,13 +109,13 @@ private static OAuthPasswordGrantRequest GetPasswordGrantRequest(IWorkflowContex logWriter.Log(Severity.Info, Tag, $"Deserializing password grant request from secure configuration."); - OAuthPasswordGrantRequest passwordGrantRequest; + OAuthClientCredentialsGrantRequest clientCredentialsGrantRequest; using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(secureConfig))) { - passwordGrantRequest = (OAuthPasswordGrantRequest)new DataContractJsonSerializer(typeof(OAuthPasswordGrantRequest)).ReadObject(ms); + clientCredentialsGrantRequest = (OAuthClientCredentialsGrantRequest)new DataContractJsonSerializer(typeof(OAuthClientCredentialsGrantRequest)).ReadObject(ms); } - return passwordGrantRequest; + return clientCredentialsGrantRequest; } private void SetError(CodeActivityContext context, TracingServiceLogWriter logWriter, string message) diff --git a/common/DevelopmentHub.Model/DevelopmentHub.Model.projitems b/common/DevelopmentHub.Model/DevelopmentHub.Model.projitems index 8918738..bfada88 100644 --- a/common/DevelopmentHub.Model/DevelopmentHub.Model.projitems +++ b/common/DevelopmentHub.Model/DevelopmentHub.Model.projitems @@ -12,6 +12,7 @@ + @@ -22,6 +23,5 @@ - \ No newline at end of file diff --git a/common/DevelopmentHub.Model/Requests/OAuthClientCredentialsGrantRequest.cs b/common/DevelopmentHub.Model/Requests/OAuthClientCredentialsGrantRequest.cs new file mode 100644 index 0000000..5a928dd --- /dev/null +++ b/common/DevelopmentHub.Model/Requests/OAuthClientCredentialsGrantRequest.cs @@ -0,0 +1,64 @@ +namespace DevelopmentHub.Model.Requests +{ + using System; + using System.Runtime.Serialization; + + /// + /// Data contract for an OAuth password grant request. + /// + [DataContract] + public class OAuthClientCredentialsGrantRequest + { + /// + /// The OAuth grant type associated with this request. + /// + [IgnoreDataMember] + public const string GrantType = "client_credentials"; + + /// + /// Initializes a new instance of the class. + /// + public OAuthClientCredentialsGrantRequest() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The client ID. + /// The tenant ID. + /// The resource. + /// The client secret. + public OAuthClientCredentialsGrantRequest(Guid clientId, Guid tenantId, Uri resource, string clientSecret) + { + this.ClientId = clientId; + this.TenantId = tenantId; + this.Resource = resource; + this.ClientSecret = clientSecret; + } + + /// + /// Gets or sets the application's client ID. + /// + [DataMember] + public Guid ClientId { get; set; } + + /// + /// Gets or sets the application's tenant ID. + /// + [DataMember] + public Guid TenantId { get; set; } + + /// + /// Gets or sets the resource to request access to. + /// + [DataMember] + public Uri Resource { get; set; } + + /// + /// Gets or sets the client secret. + /// + [DataMember] + public string ClientSecret { get; set; } + } +} diff --git a/common/DevelopmentHub.Repositories/IOAuthTokenRepository.cs b/common/DevelopmentHub.Repositories/IOAuthTokenRepository.cs index 979c822..aa53d22 100644 --- a/common/DevelopmentHub.Repositories/IOAuthTokenRepository.cs +++ b/common/DevelopmentHub.Repositories/IOAuthTokenRepository.cs @@ -10,10 +10,10 @@ public interface IOAuthTokenRepository { /// - /// Get an OAuth access token using the password grant. + /// Gets an access token for a resource using client credentials. /// - /// The password grant request. - /// An OAuth token./returns>. - Task GetAccessToken(OAuthPasswordGrantRequest request); + /// The password grant request parameters. + /// The OAuth token. + Task GetAccessToken(OAuthClientCredentialsGrantRequest request); } } diff --git a/common/DevelopmentHub.Repositories/OAuthTokenRepository.cs b/common/DevelopmentHub.Repositories/OAuthTokenRepository.cs index 4746f18..24a99cf 100644 --- a/common/DevelopmentHub.Repositories/OAuthTokenRepository.cs +++ b/common/DevelopmentHub.Repositories/OAuthTokenRepository.cs @@ -18,7 +18,7 @@ public class OAuthTokenRepository : IOAuthTokenRepository /// /// The password grant request parameters. /// The OAuth token. - public async Task GetAccessToken(OAuthPasswordGrantRequest request) + public async Task GetAccessToken(OAuthClientCredentialsGrantRequest request) { byte[] response; @@ -31,9 +31,8 @@ public async Task GetAccessToken(OAuthPasswordGrantRequest request) { { "resource", request.Resource.ToString() }, { "client_id", request.ClientId.ToString() }, - { "grant_type", OAuthPasswordGrantRequest.GrantType }, - { "username", request.Username }, - { "password", request.Password }, + { "grant_type", OAuthClientCredentialsGrantRequest.GrantType }, + { "client_secret", request.ClientSecret }, }; response = await client.UploadValuesTaskAsync(tokenEndpoint, data).ConfigureAwait(false); diff --git a/samples/azure-pipelines-extract.yml b/samples/azure-pipelines-extract.yml index 5edc3e3..81b0213 100644 --- a/samples/azure-pipelines-extract.yml +++ b/samples/azure-pipelines-extract.yml @@ -1,34 +1,15 @@ -name: $(solution) - $(commitMessage) - $(triggeredBy) +name: $(solution) $(commitMessage) pool: vmImage: windows-latest trigger: none steps: - checkout: self persistCredentials: true - - powershell: >- - $env:GIT_REDIRECT_STDERR = '2>&1'; - git config --global user.email $env:TRIGGEREDBYEMAIL; - git config --global user.name $env:TRIGGEREDBY; - git checkout master; - if ($env:SOURCEBRANCH) - { - git merge origin/$env:SOURCEBRANCH --no-commit; - } - Invoke-Expression "&$(Build.SourcesDirectory)\build.ps1 -Target ExtractSolutionFromDevelopmentHub -ScriptArgs `"--solution=$env:SOLUTION`",`"--unmanagedNoteId=$env:UNMANAGEDNOTEID`",`"--managedNoteId=$env:MANAGEDNOTEDID`" -Verbosity Diagnostic"; - git add .; - git reset -- NuGet.config; - $commitMessage = $env:COMMITMESSAGE; - if ($env:WORKITEMID) - { - $commitMessage += " #$env:WORKITEMID"; - } - git commit -m $commitMessage; - git push origin; - displayName: Extract and commit solution - env: - CAKE_DYNAMICS_PASSWORD: $(dynamicsPassword) - CAKE_DYNAMICS_USERNAME: $(dynamicsUsername) + - task: PowerShell@2 + inputs: + workingDirectory: $(Build.SourcesDirectory) + filePath: 'scripts/Merge-SolutionVersion.ps1' + arguments: '-ClientId "$(Client ID)" -TenantId "$(Tenant ID)" -ClientSecret (ConvertTo-SecureString "$(Client Secret)" -AsPlainText -Force) -SolutionVersionId "$(solutionVersionId)" -Solution "$(solution)" -CommitUserEmailAddress "$(triggeredByEmail)" -CommitUserName "$(triggeredBy)" -CommitMessage "$(commitMessage)" -SourceBranch "$(sourceBranch)" -WorkItemId "$(workItemId)"' + displayName: Extract and commit variables: - - group: Cake - - name: workItemId - value: "" \ No newline at end of file + - group: Development Hub \ No newline at end of file diff --git a/samples/build.cake b/samples/build.cake deleted file mode 100644 index 2d12569..0000000 --- a/samples/build.cake +++ /dev/null @@ -1,35 +0,0 @@ -#addin nuget:?package=Cake.Xrm.Sdk&version=0.1.9 -#addin nuget:?package=Cake.Xrm.SolutionPackager&version=0.1.9 - -const string SolutionsFolder = "./solutions"; - -var target = Argument("target", "Default"); -var solution = Argument("solution", ""); - -Task("ExtractSolutionFromDevelopmentHub") - .Does(() => - { - var connectionString = GetConnectionString(solution, false); - var tempDirectory = Directory(EnvironmentVariable("TEMP")); - - var unmanagedSolution = XrmDownloadAttachment(connectionString, Guid.Parse(Argument("unmanagedNoteId")), tempDirectory); - var managedSolution = XrmDownloadAttachment(connectionString, Guid.Parse(Argument("managedNoteId")), tempDirectory); - - var outputPath = Directory($"{SolutionsFolder}/{solution}").Path.Combine("Extract"); - - SolutionPackagerExtract(unmanagedSolution, outputPath, SolutionPackageType.Both); - }); - -string GetConnectionString(string solution, bool stagingEnvironment) -{ - var envConfig = ParseJsonFromFile(File($"{SolutionsFolder}/{solution}/solution.json")); - - var targetEnvironment = stagingEnvironment && envConfig["stagingEnvironment"] != null ? "stagingEnvironment" : "environment"; - var url = envConfig[targetEnvironment].ToString(); - var username = envConfig["username"] ?? EnvironmentVariable("CAKE_DYNAMICS_USERNAME"); - var password = EnvironmentVariable("CAKE_DYNAMICS_PASSWORD"); - - return $"Url={url}; Username={username}; Password={password}; AuthType=Office365;"; -} - -RunTarget(target); \ No newline at end of file diff --git a/samples/scripts/Merge-SolutionVersion.ps1 b/samples/scripts/Merge-SolutionVersion.ps1 new file mode 100644 index 0000000..6190b9e --- /dev/null +++ b/samples/scripts/Merge-SolutionVersion.ps1 @@ -0,0 +1,82 @@ +param ( + [Parameter()] + [String] + $ClientId, + [Parameter()] + [String] + $TenantId, + [Parameter()] + [SecureString] + $ClientSecret, + [Parameter()] + [String] + $SolutionVersionId, + [Parameter()] + [String] + $Solution, + [Parameter()] + [String] + $CommitUserEmailAddress, + [Parameter()] + [String] + $CommitUserName, + [Parameter()] + [String] + $CommitMessage, + [Parameter()] + [String] + $SourceBranch, + [Parameter()] + [String] + $WorkItemId +) + +Install-Module ADAL.PS -Scope CurrentUser -Force + +nuget install Microsoft.CrmSdk.CoreTools +$solutionPackager = Get-ChildItem -Filter "SolutionPackager.exe" -Path packages -Recurse + +$env:GIT_REDIRECT_STDERR = '2>&1' +git config --global user.email $CommitUserEmailAddress +git config --global user.name $CommitUserName +git checkout master +if ($SourceBranch) +{ + git merge origin/$SourceBranch --squash --no-commit; +} + +$solutionFolder = Get-ChildItem -Filter $Solution -Path "./src/solutions" -Directory -Recurse +$solutionConfigurationPath = Join-Path -Path $solutionFolder.FullName -ChildPath "solution.json" +$solutionConfiguration = Get-Content -Raw -Path $solutionConfigurationPath | ConvertFrom-Json +$developmentUrl = $solutionConfiguration.environment + +$tokenResponse = Get-AdalToken -Resource $developmentUrl -ClientId $ClientId -Authority "https://login.microsoftonline.com/$TenantId" -ClientSecret $ClientSecret -Verbose +$token = $tokenResponse.AccessToken +$webApiHeaders = @{ + "method" = "GET" + "authorization" = "Bearer $token" +} +$solutionVersionUrl = "$developmentUrl/api/data/v9.1/devhub_solutionversions($SolutionVersionId)" + +$unmanagedSolutionResponse = Invoke-WebRequest -Uri "$solutionVersionUrl/devhub_unmanagedsolutionzip/`$value" -Headers $webApiHeaders +$managedSolutionResponse = Invoke-WebRequest -Uri "$solutionVersionUrl/devhub_managedsolutionzip/`$value" -Headers $webApiHeaders +$unmanagedZip = $unmanagedSolutionResponse.Content +$managedZip = $managedSolutionResponse.Content +$unmanagedZipFilePath = "$env:TEMP/$Solution.zip" +$managedZipFilePath = "$env:TEMP/$Solution" + "_managed.zip" + +[IO.File]::WriteAllBytes($unmanagedZipFilePath, $unmanagedZip); +[IO.File]::WriteAllBytes($managedZipFilePath, $managedZip); + +$extractFolder = Join-Path -Path $solutionFolder.FullName -ChildPath "extract" +$solutionPackagerPath = $solutionPackager.FullName +& $solutionPackagerPath /action:Extract /zipfile:$unmanagedZipFilePath /folder:$extractFolder /packagetype:Both /allowWrite:Yes /allowDelete:Yes + +git add .; +git reset -- NuGet.config; +if ($WorkItemId) +{ + $CommitMessage += " #$WorkItemId" +} +git commit -m $CommitMessage; +git push origin; \ No newline at end of file diff --git a/samples/solution.json b/samples/solution.json index a80bcce..2b04e42 100644 --- a/samples/solution.json +++ b/samples/solution.json @@ -1,7 +1,3 @@ { - "environments": { - "development": { - "url": "https://environment.region.dynamics.com/" - } - } + "environment": "https://environment.region.dynamics.com" } \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Other/Solution.xml b/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Other/Solution.xml index 1d331e5..ce2c87f 100644 --- a/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Other/Solution.xml +++ b/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Other/Solution.xml @@ -1,12 +1,12 @@  - + devhub_DevelopmentHub_AzureDevOps - 0.2.0.0 + 0.2.1 2 developmenthub @@ -83,7 +83,7 @@ - + @@ -91,78 +91,74 @@ - + - - + + - - + + - + - + - + - + - - - - - + - + - + - + - + - + - + - + - + - + diff --git a/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Workflows/Whenasolutionismerged-Commitchangestosourcecontrol-A52D0AB8-54B1-E911-A97B-002248019881.json b/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Workflows/Whenasolutionismerged-Commitchangestosourcecontrol-A52D0AB8-54B1-E911-A97B-002248019881.json index 8646c71..06c8f07 100644 --- a/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Workflows/Whenasolutionismerged-Commitchangestosourcecontrol-A52D0AB8-54B1-E911-A97B-002248019881.json +++ b/solutions/devhub_DevelopmentHub_AzureDevOps/Extract/Workflows/Whenasolutionismerged-Commitchangestosourcecontrol-A52D0AB8-54B1-E911-A97B-002248019881.json @@ -1 +1 @@ -{"properties":{"connectionReferences":{"shared_commondataserviceforapps":{"runtimeSource":"embedded","connection":{},"api":{"name":"shared_commondataserviceforapps"}},"shared_visualstudioteamservices":{"runtimeSource":"embedded","connection":{},"api":{"name":"shared_visualstudioteamservices"}}},"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_record_is_created,_updated_or_deleted":{"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_target_solution":{"runAfter":{"Get_notes_containing_merged_solution_zips":["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_uniquename"},"authentication":"@parameters('$authentication')"}},"Get_solution_merge_creator":{"runAfter":{"Get_target_solution":["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":"fullname,internalemailaddress"},"authentication":"@parameters('$authentication')"}},"Get_solution_merge_issue":{"runAfter":{"Get_solution_merge_creator":["Succeeded"]},"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_name,devhub_type,devhub_azuredevopsworkitemid"},"authentication":"@parameters('$authentication')"}},"Queue_a_new_build":{"runAfter":{"Get_solution_merge_issue":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_visualstudioteamservices","operationId":"QueueNewBuild","apiId":"/providers/Microsoft.PowerApps/apis/shared_visualstudioteamservices"},"parameters":{"account":"@outputs('Get_devhub_AzureDevOpsOrganization')?['Body']?['environment_variable_value']","project":"@outputs('Get_devhub_AzureDevOpsProject')?['Body']?['environment_variable_value']","buildDefId":"@outputs('Get_devhub_AzureDevOpsExtractBuildDefinition')?['Body']?['environment_variable_value']","buildDetails/sourceBranch":"master","buildDetails/parameters":"{\n \"unmanagedNoteId\": \"@{actionBody('Get_notes_containing_merged_solution_zips')?['value'][0]['annotationid']}\",\n \"managedNoteId\": \"@{actionBody('Get_notes_containing_merged_solution_zips')?['value'][1]['annotationid']}\",\n \"solution\": \"@{outputs('Get_target_solution')?['body/devhub_uniquename']}\",\n \"triggeredBy\": \"@{outputs('Get_solution_merge_creator')?['body/fullname']}\",\n \"triggeredByEmail\": \"@{outputs('Get_solution_merge_creator')?['body/internalemailaddress']}\",\n \"commitMessage\": \"@{if(equals(body('Get_solution_merge_issue')?['devhub_type'], 353400001), 'Feature', 'Bug')} - @{outputs('Get_solution_merge_issue')?['body/devhub_name']}\"\n \"sourceBranch\": \"@{triggerOutputs()?['body/devhub_sourcebranch']}\"\n \"workItemId\": \"@{outputs('Get_solution_merge_issue')?['body/devhub_azuredevopsworkitemid']}\"\n}"},"authentication":"@parameters('$authentication')"}},"Get_notes_containing_merged_solution_zips":{"runAfter":{"Get_devhub_AzureDevOpsExtractBuildDefinition":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"ListRecords","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"annotations","$select":"annotationid","$filter":"_objectid_value eq '@{triggerOutputs()?['body/_devhub_targetsolution_value']}'","$orderby":"createdon desc","$top":2},"authentication":"@parameters('$authentication')"}},"Get_devhub_AzureDevOpsOrganization":{"runAfter":{},"type":"Workflow","inputs":{"host":{"workflowReferenceName":"9bc32b76-754b-ea11-a812-000d3a0b8d0b"},"body":{"text":"devhub_AzureDevOpsOrganization"}}},"Get_devhub_AzureDevOpsProject":{"runAfter":{"Get_devhub_AzureDevOpsOrganization":["Succeeded"]},"type":"Workflow","inputs":{"host":{"workflowReferenceName":"9bc32b76-754b-ea11-a812-000d3a0b8d0b"},"body":{"text":"devhub_AzureDevOpsProject"}}},"Get_devhub_AzureDevOpsExtractBuildDefinition":{"runAfter":{"Get_devhub_AzureDevOpsProject":["Succeeded"]},"type":"Workflow","inputs":{"host":{"workflowReferenceName":"9bc32b76-754b-ea11-a812-000d3a0b8d0b"},"body":{"text":"devhub_AzureDevOpsExtractBuildDefinition"}}}},"outputs":{}}},"schemaVersion":"1.0.0.0"} \ No newline at end of file +{"properties":{"connectionReferences":{"shared_commondataserviceforapps":{"runtimeSource":"embedded","connection":{},"api":{"name":"shared_commondataserviceforapps"}},"shared_visualstudioteamservices_1":{"runtimeSource":"embedded","connection":{},"api":{"name":"shared_visualstudioteamservices"}}},"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_target_solution":{"runAfter":{"Get_devhub_AzureDevOpsExtractBuildDefinition":["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_uniquename"},"authentication":"@parameters('$authentication')"}},"Get_solution_merge_creator":{"runAfter":{"Get_target_solution":["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":"fullname,internalemailaddress"},"authentication":"@parameters('$authentication')"}},"Get_solution_merge_issue":{"runAfter":{"Get_solution_merge_creator":["Succeeded"]},"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_name,devhub_type,devhub_azuredevopsworkitemid"},"authentication":"@parameters('$authentication')"}},"Queue_a_new_build":{"runAfter":{"Get_solution_merge_issue":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_visualstudioteamservices_1","operationId":"QueueNewBuild","apiId":"/providers/Microsoft.PowerApps/apis/shared_visualstudioteamservices"},"parameters":{"account":"@outputs('Get_devhub_AzureDevOpsOrganization')?['Body']?['environment_variable_value']","project":"@outputs('Get_devhub_AzureDevOpsProject')?['Body']?['environment_variable_value']","buildDefId":"@outputs('Get_devhub_AzureDevOpsExtractBuildDefinition')?['Body']?['environment_variable_value']","buildDetails/sourceBranch":"master","buildDetails/parameters":"{\n \"solutionVersionId\": \"@{triggerOutputs()?['body/_devhub_solutionversion_value']}\",\n \"solution\": \"@{outputs('Get_target_solution')?['body/devhub_uniquename']}\",\n \"triggeredBy\": \"@{outputs('Get_solution_merge_creator')?['body/fullname']}\",\n \"triggeredByEmail\": \"@{outputs('Get_solution_merge_creator')?['body/internalemailaddress']}\",\n \"commitMessage\": \"@{if(equals(body('Get_solution_merge_issue')?['devhub_type'], 353400001), 'Feature', 'Bug')} - @{outputs('Get_solution_merge_issue')?['body/devhub_name']}\",\n \"sourceBranch\": \"@{triggerOutputs()?['body/devhub_sourcebranch']}\",\n \"workItemId\": \"@{outputs('Get_solution_merge_issue')?['body/devhub_azuredevopsworkitemid']}\"\n}"},"authentication":"@parameters('$authentication')"}},"Get_devhub_AzureDevOpsOrganization":{"runAfter":{},"type":"Workflow","inputs":{"host":{"workflowReferenceName":"9bc32b76-754b-ea11-a812-000d3a0b8d0b"},"body":{"text":"devhub_AzureDevOpsOrganization"}}},"Get_devhub_AzureDevOpsProject":{"runAfter":{"Get_devhub_AzureDevOpsOrganization":["Succeeded"]},"type":"Workflow","inputs":{"host":{"workflowReferenceName":"9bc32b76-754b-ea11-a812-000d3a0b8d0b"},"body":{"text":"devhub_AzureDevOpsProject"}}},"Get_devhub_AzureDevOpsExtractBuildDefinition":{"runAfter":{"Get_devhub_AzureDevOpsProject":["Succeeded"]},"type":"Workflow","inputs":{"host":{"workflowReferenceName":"9bc32b76-754b-ea11-a812-000d3a0b8d0b"},"body":{"text":"devhub_AzureDevOpsExtractBuildDefinition"}}}},"outputs":{}}},"schemaVersion":"1.0.0.0"} \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/AppModules/devhub_DevelopmentHub/AppModule.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/AppModules/devhub_DevelopmentHub/AppModule.xml index 9a663a0..5d563cf 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/AppModules/devhub_DevelopmentHub/AppModule.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/AppModules/devhub_DevelopmentHub/AppModule.xml @@ -17,10 +17,11 @@ + - + diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/AppModules/devhub_DevelopmentHub/AppModule_managed.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/AppModules/devhub_DevelopmentHub/AppModule_managed.xml index bb02541..2e715a8 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/AppModules/devhub_DevelopmentHub/AppModule_managed.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/AppModules/devhub_DevelopmentHub/AppModule_managed.xml @@ -11,10 +11,11 @@ + - + diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/Entity.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/Entity.xml new file mode 100644 index 0000000..a1b3d59 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/Entity.xml @@ -0,0 +1,985 @@ + + + devhub_SolutionVersion + + + + + + + + + + + + + + lookup + createdby + createdby + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 0 + 1 + 0 + 0 + 0 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + datetime + createdon + createdon + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + inactive + 0 + 1 + 0 + 0 + 0 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 1 + 1 + 0 + datetime + 0 + 1 + + + + + + + + + lookup + createdonbehalfby + createdonbehalfby + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 0 + 1 + 0 + 0 + 0 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + file + devhub_managedsolutionzip + devhub_managedsolutionzip + none + ValidForForm|ValidForGrid + disabled + 0 + 1 + 0 + 1 + 1 + 0 + 0.1.20.0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + + 0 + 0 + 0 + 0 + + + + + + + + + nvarchar + devhub_name + devhub_name + none + PrimaryName|ValidForAdvancedFind|ValidForForm|ValidForGrid|RequiredForForm + auto + 1 + 1 + 1 + 1 + 1 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 1 + 0 + 1 + 0 + text + 100 + 200 + + + + + + + + + lookup + devhub_solution + devhub_solution + required + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 1 + 1 + 1 + 1 + 0 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + primarykey + devhub_solutionversionid + devhub_solutionversionid + systemrequired + ValidForAdvancedFind|RequiredForGrid + auto + 0 + 1 + 1 + 0 + 0 + 0 + 0.1.20.0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 1 + 1 + 0 + + + + + + + + + file + devhub_unmanagedsolutionzip + devhub_unmanagedsolutionzip + none + ValidForForm|ValidForGrid + disabled + 0 + 1 + 0 + 1 + 1 + 0 + 0.1.20.0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + + 0 + 0 + 0 + 0 + + + + + + + + + nvarchar + devhub_version + devhub_version + required + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 1 + 1 + 1 + 1 + 1 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + text + 100 + 200 + + + + + + + + + int + importsequencenumber + importsequencenumber + none + ValidForAdvancedFind + disabled + 0 + 1 + 1 + 0 + 1 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + + -2147483648 + 2147483647 + + + + + + + + + lookup + modifiedby + modifiedby + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 0 + 1 + 0 + 0 + 0 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + datetime + modifiedon + modifiedon + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + inactive + 0 + 1 + 0 + 0 + 0 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 1 + 1 + 0 + datetime + 0 + 1 + + + + + + + + + lookup + modifiedonbehalfby + modifiedonbehalfby + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 0 + 1 + 0 + 0 + 0 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + datetime + overriddencreatedon + overriddencreatedon + none + ValidForAdvancedFind|ValidForGrid + inactive + 0 + 1 + 1 + 0 + 1 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + date + 0 + 1 + + + + + + + + + owner + ownerid + ownerid + systemrequired + ValidForAdvancedFind|ValidForForm|ValidForGrid|RequiredForForm + auto + 1 + 1 + 1 + 0 + 1 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 1 + 0 + 0 + single + + 8 + 9 + + + + + + + + + + lookup + owningbusinessunit + owningbusinessunit + none + auto + 0 + 1 + 0 + 0 + 0 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 1 + 0 + 0 + single + + + + + + + + + + lookup + owningteam + owningteam + none + auto + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + lookup + owninguser + owninguser + none + auto + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + single + + + + + + + + + + state + statecode + statecode + systemrequired + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 1 + 1 + 0 + 0 + 1 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 1 + 0 + 0 + + state + 0.1.20.0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + status + statuscode + statuscode + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 1 + 1 + 1 + 0 + 1 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + + status + 0.1.20.0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + int + timezoneruleversionnumber + timezoneruleversionnumber + none + auto + 1 + 1 + 1 + 0 + 0 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + + -1 + 2147483647 + + + + + + + + + int + utcconversiontimezonecode + utcconversiontimezonecode + none + auto + 1 + 1 + 1 + 0 + 0 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + + -1 + 2147483647 + + + + + + + + + devhub_solutionversions + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + UserOwned + 0 + 0 + 0 + 0 + CommunicationActivity + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + + 1 + 1 + 0 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 1 + 0 + 0 + True + + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/card/{fae7c030-6f95-4b1e-981b-25617c1d89b0}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/card/{fae7c030-6f95-4b1e-981b-25617c1d89b0}.xml new file mode 100644 index 0000000..288cec5 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/card/{fae7c030-6f95-4b1e-981b-25617c1d89b0}.xml @@ -0,0 +1,112 @@ + + + + {fae7c030-6f95-4b1e-981b-25617c1d89b0} + 0.1.20.0 + 1 + 1 +
+ + + + + + + +
+ + +
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ 1 + 1 + + + + + + +
+
\ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/card/{fae7c030-6f95-4b1e-981b-25617c1d89b0}_managed.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/card/{fae7c030-6f95-4b1e-981b-25617c1d89b0}_managed.xml new file mode 100644 index 0000000..288cec5 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/card/{fae7c030-6f95-4b1e-981b-25617c1d89b0}_managed.xml @@ -0,0 +1,112 @@ + + + + {fae7c030-6f95-4b1e-981b-25617c1d89b0} + 0.1.20.0 + 1 + 1 +
+ + + + + + + +
+ + +
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ 1 + 1 + + + + + + +
+
\ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/main/{7538eb6c-0d89-4270-abb9-d79491318c9a}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/main/{7538eb6c-0d89-4270-abb9-d79491318c9a}.xml new file mode 100644 index 0000000..de9aaff --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/main/{7538eb6c-0d89-4270-abb9-d79491318c9a}.xml @@ -0,0 +1,150 @@ + + + + {7538eb6c-0d89-4270-abb9-d79491318c9a} + 0.1.20.0 + 1 + 1 +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ 1 + 1 + + + + + + +
+
\ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/main/{7538eb6c-0d89-4270-abb9-d79491318c9a}_managed.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/main/{7538eb6c-0d89-4270-abb9-d79491318c9a}_managed.xml new file mode 100644 index 0000000..de9aaff --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/main/{7538eb6c-0d89-4270-abb9-d79491318c9a}_managed.xml @@ -0,0 +1,150 @@ + + + + {7538eb6c-0d89-4270-abb9-d79491318c9a} + 0.1.20.0 + 1 + 1 +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ 1 + 1 + + + + + + +
+
\ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/quick/{ccce26cf-067d-4892-bae0-05f1fa9ae3a9}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/quick/{ccce26cf-067d-4892-bae0-05f1fa9ae3a9}.xml new file mode 100644 index 0000000..2e8ffa5 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/quick/{ccce26cf-067d-4892-bae0-05f1fa9ae3a9}.xml @@ -0,0 +1,52 @@ + + + + {ccce26cf-067d-4892-bae0-05f1fa9ae3a9} + 0.1.20.0 + 1 + 1 +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ 1 + 1 + + + +
+
\ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/quick/{ccce26cf-067d-4892-bae0-05f1fa9ae3a9}_managed.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/quick/{ccce26cf-067d-4892-bae0-05f1fa9ae3a9}_managed.xml new file mode 100644 index 0000000..2e8ffa5 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/FormXml/quick/{ccce26cf-067d-4892-bae0-05f1fa9ae3a9}_managed.xml @@ -0,0 +1,52 @@ + + + + {ccce26cf-067d-4892-bae0-05f1fa9ae3a9} + 0.1.20.0 + 1 + 1 +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ 1 + 1 + + + +
+
\ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/RibbonDiff.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/RibbonDiff.xml new file mode 100644 index 0000000..6b56f48 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/RibbonDiff.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{2673071f-2ec1-4426-aa25-ba21fe3483d0}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{2673071f-2ec1-4426-aa25-ba21fe3483d0}.xml new file mode 100644 index 0000000..076f3d1 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{2673071f-2ec1-4426-aa25-ba21fe3483d0}.xml @@ -0,0 +1,40 @@ + + + + 1 + 0 + 1 + 0 + 1 + {2673071f-2ec1-4426-aa25-ba21fe3483d0} + + + + + + + + + 4 + + + + + + + + + + + + + + + + + 0.1.20.0 + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{417df521-7117-493a-9630-290cc7361386}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{417df521-7117-493a-9630-290cc7361386}.xml new file mode 100644 index 0000000..3eabd96 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{417df521-7117-493a-9630-290cc7361386}.xml @@ -0,0 +1,37 @@ + + + + 1 + 0 + 0 + 0 + 0 + {417df521-7117-493a-9630-290cc7361386} + + + + + + + + + 0 + + + + + + + + + + + + + + 0.1.20.0 + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{54044743-1d46-4adc-a28f-87144bf4e09d}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{54044743-1d46-4adc-a28f-87144bf4e09d}.xml new file mode 100644 index 0000000..87b9713 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{54044743-1d46-4adc-a28f-87144bf4e09d}.xml @@ -0,0 +1,37 @@ + + + + 1 + 0 + 0 + 0 + 1 + {54044743-1d46-4adc-a28f-87144bf4e09d} + + + + + + + + + 64 + + + + + + + + + + + + + + 0.1.20.0 + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{8962b966-4ab9-ea11-a812-000d3a86ad99}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{8962b966-4ab9-ea11-a812-000d3a86ad99}.xml new file mode 100644 index 0000000..70eb5ec --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{8962b966-4ab9-ea11-a812-000d3a86ad99}.xml @@ -0,0 +1,30 @@ + + + + 1 + 1 + 0 + 0 + 1 + {8962b966-4ab9-ea11-a812-000d3a86ad99} + 8192 + + + + + + + + + + + + 0.1.20.0 + + + + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{8a73dcfa-5d50-4090-a788-44af43ef1c93}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{8a73dcfa-5d50-4090-a788-44af43ef1c93}.xml new file mode 100644 index 0000000..9314c43 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{8a73dcfa-5d50-4090-a788-44af43ef1c93}.xml @@ -0,0 +1,37 @@ + + + + 1 + 0 + 0 + 0 + 1 + {8a73dcfa-5d50-4090-a788-44af43ef1c93} + + + + + + + + + 0 + + + + + + + + + + + + + + 0.1.20.0 + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{a7d710b0-d0b0-4128-8af8-0fc94bf2da81}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{a7d710b0-d0b0-4128-8af8-0fc94bf2da81}.xml new file mode 100644 index 0000000..c4a6b3c --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{a7d710b0-d0b0-4128-8af8-0fc94bf2da81}.xml @@ -0,0 +1,37 @@ + + + + 1 + 0 + 0 + 0 + 1 + {a7d710b0-d0b0-4128-8af8-0fc94bf2da81} + + + + + + + + + 2 + + + + + + + + + + + + + + 0.1.20.0 + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{ffce8ee1-2470-493a-84be-11d76a6e3059}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{ffce8ee1-2470-493a-84be-11d76a6e3059}.xml new file mode 100644 index 0000000..73a7818 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_SolutionVersion/SavedQueries/{ffce8ee1-2470-493a-84be-11d76a6e3059}.xml @@ -0,0 +1,34 @@ + + + + 1 + 0 + 0 + 0 + 1 + {ffce8ee1-2470-493a-84be-11d76a6e3059} + + + + + + + + + 1 + + + + + + + + + + + 0.1.20.0 + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/Entity.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/Entity.xml index dea2073..b98a512 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/Entity.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_environment/Entity.xml @@ -20,7 +20,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 0 0 0 @@ -57,7 +59,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid inactive + 0 1 + 0 0 0 0 @@ -95,7 +99,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 0 0 0 @@ -132,6 +138,7 @@ systemrequired ValidForAdvancedFind|RequiredForGrid auto + 0 1 1 0 @@ -287,6 +294,7 @@ none ValidForAdvancedFind disabled + 0 1 1 0 @@ -326,7 +334,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 0 0 0 @@ -363,7 +373,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid inactive + 0 1 + 0 0 0 0 @@ -401,7 +413,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 0 0 0 @@ -438,6 +452,7 @@ none ValidForAdvancedFind|ValidForGrid inactive + 0 1 1 0 @@ -518,7 +533,9 @@ owningbusinessunit none auto + 0 1 + 0 0 0 0 @@ -554,7 +571,9 @@ owningteam none auto + 0 1 + 0 0 0 1 @@ -591,7 +610,9 @@ owninguser none auto + 0 1 + 0 0 0 1 @@ -631,6 +652,7 @@ auto 1 1 + 0 0 1 0 diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/Entity.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/Entity.xml index fb4253c..dec52e6 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/Entity.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/Entity.xml @@ -20,7 +20,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 0 0 0 @@ -57,7 +59,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid inactive + 0 1 + 0 0 0 0 @@ -95,7 +99,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 0 0 0 @@ -331,6 +337,7 @@ systemrequired ValidForAdvancedFind|RequiredForGrid auto + 0 1 1 0 @@ -446,7 +453,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 1 0 0 @@ -485,6 +494,7 @@ none ValidForAdvancedFind disabled + 0 1 1 0 @@ -524,7 +534,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 0 0 0 @@ -561,7 +573,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid inactive + 0 1 + 0 0 0 0 @@ -599,7 +613,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 0 0 0 @@ -636,6 +652,7 @@ none ValidForAdvancedFind|ValidForGrid inactive + 0 1 1 0 @@ -716,7 +733,9 @@ owningbusinessunit none auto + 0 1 + 0 0 0 0 @@ -752,7 +771,9 @@ owningteam none auto + 0 1 + 0 0 0 1 @@ -789,7 +810,9 @@ owninguser none auto + 0 1 + 0 0 0 1 @@ -829,6 +852,7 @@ auto 1 1 + 0 0 1 0 diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}.xml index ace8df5..7d5081c 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}.xml @@ -101,27 +101,21 @@ - + - - + + + devhub_solutionversion + {8A73DCFA-5D50-4090-A788-44AF43EF1C93} + {8A73DCFA-5D50-4090-A788-44AF43EF1C93} + false + devhub_SolutionVersion_Solution_devhub_solution + + - - - - - - - - - - - - - - @@ -176,7 +170,7 @@ - + diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}_managed.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}_managed.xml index ace8df5..7d5081c 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}_managed.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solution/FormXml/main/{6d588ec7-f362-43b4-b68a-e2181734f959}_managed.xml @@ -101,27 +101,21 @@ - + - - + + + devhub_solutionversion + {8A73DCFA-5D50-4090-A788-44AF43EF1C93} + {8A73DCFA-5D50-4090-A788-44AF43EF1C93} + false + devhub_SolutionVersion_Solution_devhub_solution + + - - - - - - - - - - - - - - @@ -176,7 +170,7 @@ - + diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/Entity.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/Entity.xml index baf36ee..0f2c188 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/Entity.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/Entity.xml @@ -20,7 +20,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 0 0 0 @@ -57,7 +59,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid inactive + 0 1 + 0 0 0 0 @@ -95,7 +99,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 0 0 0 @@ -204,50 +210,48 @@
- - lookup - devhub_issue - devhub_issue - required - ValidForAdvancedFind|ValidForForm|ValidForGrid - auto - 1 + + file + devhub_developmentsolution + devhub_developmentsolution + none + ValidForForm|ValidForGrid + disabled + 0 1 - 1 + 0 1 1 0 - 0.1.12.0 + 0.1.20.0 1 1 - 1 - 1 + 0 + 0 1 0 0 0 1 - 1 + 0 0 0 0 0 0 - single - - + - + - - bit - devhub_manualmergeactivities - devhub_manualmergeactivities - none + + lookup + devhub_issue + devhub_issue + required ValidForAdvancedFind|ValidForForm|ValidForGrid auto 1 @@ -256,7 +260,7 @@ 1 1 0 - 1.0.0.0 + 0.1.12.0 1 1 1 @@ -273,41 +277,19 @@ 0 0 0 - 0 - - bit - 1.0.0.0 - 1 - - - - - - - - - - - + single + - + - + - + bit - devhub_manualmergeactivitiescomplete - devhub_manualmergeactivitiescomplete + devhub_manualmergeactivities + devhub_manualmergeactivities none ValidForAdvancedFind|ValidForForm|ValidForGrid auto @@ -335,15 +317,15 @@ 0 0 0 - + bit 1.0.0.0 1 - + - + - + - + @@ -405,93 +387,101 @@ - - file - devhub_postmergesolutionmanaged - devhub_postmergesolutionmanaged + + datetime + devhub_queuedon + devhub_queuedon none - ValidForForm|ValidForGrid - disabled + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 1 1 + 1 1 1 0 0.1.20.0 1 1 - 0 - 0 + 1 + 1 1 0 0 0 1 - 0 + 1 0 - 0 + 1 0 0 0 + datetime + 1 + 1 - + - + - - file - devhub_postmergesolutionunmanaged - devhub_postmergesolutionunmanaged - none - ValidForForm|ValidForGrid - disabled + + primarykey + devhub_solutionmergeid + devhub_solutionmergeid + systemrequired + ValidForAdvancedFind|RequiredForGrid + auto + 0 1 - 1 - 1 + 1 + 0 + 0 0 - 0.1.20.0 + 0.1.12.0 1 1 - 0 + 1 0 1 0 0 0 1 - 0 + 1 0 0 - 0 - 0 + 1 + 1 0 - + - + - - primarykey - devhub_solutionmergeid - devhub_solutionmergeid - systemrequired - ValidForAdvancedFind|RequiredForGrid + + lookup + devhub_solutionversion + devhub_solutionversion + none + ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 1 1 1 - 0 + 1 0 0 - 0.1.12.0 + 0.1.20.0 1 1 1 - 0 + 1 1 0 0 @@ -501,14 +491,16 @@ 0 0 - 1 - 1 + 0 + 0 0 + single + - + - + @@ -590,6 +582,67 @@ + + bit + devhub_versionupdateappliedtosolution + devhub_versionupdateappliedtosolution + none + ValidForAdvancedFind|ValidForForm|ValidForGrid + auto + 1 + 1 + 1 + 1 + 1 + 0 + 0.1.20.0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + + 0 + 0 + 0 + 0 + 0 + + bit + 0.1.20.0 + 1 + + + + + + + + + + + + + + + + + + int importsequencenumber @@ -597,6 +650,7 @@ none ValidForAdvancedFind disabled + 0 1 1 0 @@ -636,7 +690,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 0 0 0 @@ -673,7 +729,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid inactive + 0 1 + 0 0 0 0 @@ -711,7 +769,9 @@ none ValidForAdvancedFind|ValidForForm|ValidForGrid auto + 0 1 + 0 0 0 0 @@ -748,6 +808,7 @@ none ValidForAdvancedFind|ValidForGrid inactive + 0 1 1 0 @@ -828,7 +889,9 @@ owningbusinessunit none auto + 0 1 + 0 0 0 0 @@ -864,7 +927,9 @@ owningteam none auto + 0 1 + 0 0 0 1 @@ -901,7 +966,9 @@ owninguser none auto + 0 1 + 0 0 0 1 @@ -941,6 +1008,7 @@ auto 1 1 + 0 0 1 0 diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}.xml index e874385..e2674df 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}.xml @@ -5,9 +5,9 @@ 0.1.12.0 1 1 -
+ - + @@ -49,10 +49,11 @@ - + - + @@ -62,10 +63,11 @@ - + - + @@ -89,11 +91,10 @@ - + - - @@ -136,9 +137,9 @@ - + - @@ -153,7 +154,7 @@ - + true false @@ -164,11 +165,60 @@ + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -283,29 +333,10 @@ - - - - devhub_manualmergeactivitiescomplete - - - - - devhub_manualmergeactivitiescomplete - - - - - devhub_manualmergeactivitiescomplete - - - - - devhub_manualmergeactivitiescomplete - - - + + + 1 1 diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}_managed.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}_managed.xml index e874385..e2674df 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}_managed.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/FormXml/main/{6f14717f-673c-45a3-b862-4c3e7408be3f}_managed.xml @@ -5,9 +5,9 @@ 0.1.12.0 1 1 -
+ - + @@ -49,10 +49,11 @@ - + - + @@ -62,10 +63,11 @@ - + - + @@ -89,11 +91,10 @@ - + - - @@ -136,9 +137,9 @@ - + - @@ -153,7 +154,7 @@ - + true false @@ -164,11 +165,60 @@ + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -283,29 +333,10 @@ - - - - devhub_manualmergeactivitiescomplete - - - - - devhub_manualmergeactivitiescomplete - - - - - devhub_manualmergeactivitiescomplete - - - - - devhub_manualmergeactivitiescomplete - - - + + + 1 1 diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/RibbonDiff.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/RibbonDiff.xml index 4c5d670..2f3a6d3 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/RibbonDiff.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Entities/devhub_solutionmerge/RibbonDiff.xml @@ -49,10 +49,7 @@ - - - - + diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships.xml index 0182211..9006916 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships.xml @@ -3,27 +3,36 @@ + + + - - + + + + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/BusinessUnit.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/BusinessUnit.xml index c67d54d..05620c3 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/BusinessUnit.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/BusinessUnit.xml @@ -57,4 +57,23 @@ + + OneToMany + 1 + 0.1.20.0 + 0 + devhub_SolutionVersion + BusinessUnit + NoCascade + NoCascade + NoCascade + NoCascade + NoCascade + OwningBusinessUnit + + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/FileAttachment.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/FileAttachment.xml index b9b2cb0..2d28edb 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/FileAttachment.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/FileAttachment.xml @@ -1,6 +1,6 @@  - + OneToMany 0 0.1.20.0 @@ -13,19 +13,39 @@ NoCascade NoCascade 0 - devhub_PostMergeSolutionManaged + devhub_DevelopmentSolution - + - + OneToMany 0 0.1.20.0 0 - devhub_solutionmerge + devhub_SolutionVersion + FileAttachment + NoCascade + RemoveLink + NoCascade + NoCascade + NoCascade + 0 + devhub_ManagedSolutionZip + + + + + + + + OneToMany + 0 + 0.1.20.0 + 0 + devhub_SolutionVersion FileAttachment NoCascade RemoveLink @@ -33,10 +53,10 @@ NoCascade NoCascade 0 - devhub_PostMergeSolutionUnmanaged + devhub_UnmanagedSolutionZip - + diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/Owner.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/Owner.xml index 4fcddbd..1683347 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/Owner.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/Owner.xml @@ -57,4 +57,23 @@ + + OneToMany + 1 + 0.1.20.0 + 0 + devhub_SolutionVersion + Owner + NoCascade + NoCascade + NoCascade + NoCascade + NoCascade + OwnerId + + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/SystemUser.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/SystemUser.xml index 17b65e0..e73ec73 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/SystemUser.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/SystemUser.xml @@ -148,6 +148,44 @@ + + OneToMany + 1 + 0.1.20.0 + 0 + devhub_SolutionVersion + SystemUser + NoCascade + NoCascade + NoCascade + NoCascade + NoCascade + CreatedBy + + + + + + + + OneToMany + 1 + 0.1.20.0 + 0 + devhub_SolutionVersion + SystemUser + NoCascade + NoCascade + NoCascade + NoCascade + NoCascade + ModifiedBy + + + + + + OneToMany 1 @@ -205,4 +243,23 @@ + + OneToMany + 1 + 0.1.20.0 + 0 + devhub_SolutionVersion + SystemUser + NoCascade + NoCascade + NoCascade + NoCascade + NoCascade + OwningUser + + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/Team.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/Team.xml index 7e24235..1303344 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/Team.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/Team.xml @@ -57,4 +57,23 @@ + + OneToMany + 1 + 0.1.20.0 + 0 + devhub_SolutionVersion + Team + NoCascade + NoCascade + NoCascade + NoCascade + NoCascade + OwningTeam + + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_SolutionVersion.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_SolutionVersion.xml new file mode 100644 index 0000000..1c0d682 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_SolutionVersion.xml @@ -0,0 +1,37 @@ + + + + OneToMany + 1 + 0.1.20.0 + 0 + devhub_solutionmerge + devhub_SolutionVersion + NoCascade + RemoveLink + NoCascade + NoCascade + NoCascade + NoCascade + 1 + devhub_SolutionVersion + + + + + + + + UseCollectionName + Details + 10000 + devhub_SolutionVersion + 1 + + + devhub_devhub_solutionmerge_devhub_Soluti + 0 + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_solution.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_solution.xml index 4d65fa1..fef91c7 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_solution.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Relationships/devhub_solution.xml @@ -34,4 +34,38 @@ + + OneToMany + 1 + 0.1.20.0 + 0 + devhub_SolutionVersion + devhub_solution + Cascade + Cascade + Cascade + Cascade + Cascade + NoCascade + 1 + devhub_Solution + + + + + + + + UseCollectionName + Details + 10000 + devhub_Solution + 1 + + + devhub_SolutionVersion_Solution_devhub_solution + 0 + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Solution.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Solution.xml index 123f7ea..f37ed9e 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Solution.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Other/Solution.xml @@ -1,5 +1,5 @@  - + devhub_DevelopmentHub_Develop @@ -8,7 +8,7 @@ - 0.1.20.0 + 0.2.0 2 developmenthub @@ -86,14 +86,18 @@ + + + + @@ -101,13 +105,15 @@ + + + - @@ -135,6 +141,7 @@ + @@ -146,300 +153,296 @@ - - - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/PluginAssemblies/DevelopmentHubDevelop-BB5CD61C-5B82-E911-A979-002248010929/DevelopmentHubDevelop.dll b/solutions/devhub_DevelopmentHub_Develop/Extract/PluginAssemblies/DevelopmentHubDevelop-BB5CD61C-5B82-E911-A979-002248010929/DevelopmentHubDevelop.dll index 3429796..8d01e02 100644 Binary files a/solutions/devhub_DevelopmentHub_Develop/Extract/PluginAssemblies/DevelopmentHubDevelop-BB5CD61C-5B82-E911-A979-002248010929/DevelopmentHubDevelop.dll and b/solutions/devhub_DevelopmentHub_Develop/Extract/PluginAssemblies/DevelopmentHubDevelop-BB5CD61C-5B82-E911-A979-002248010929/DevelopmentHubDevelop.dll differ diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/PluginAssemblies/DevelopmentHubDevelop-BB5CD61C-5B82-E911-A979-002248010929/DevelopmentHubDevelop.dll.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/PluginAssemblies/DevelopmentHubDevelop-BB5CD61C-5B82-E911-A979-002248010929/DevelopmentHubDevelop.dll.data.xml index 218dddf..73430a2 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/PluginAssemblies/DevelopmentHubDevelop-BB5CD61C-5B82-E911-A979-002248010929/DevelopmentHubDevelop.dll.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/PluginAssemblies/DevelopmentHubDevelop-BB5CD61C-5B82-E911-A979-002248010929/DevelopmentHubDevelop.dll.data.xml @@ -50,6 +50,11 @@ Merge solution components DevelopmentHub.Develop + + Publishes all solution components in a target environment. + Publish all + DevelopmentHub.Develop + Updates the version of a solution. Update solution version diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{01b1db23-769a-e911-a97d-002248010929}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{01b1db23-769a-e911-a97d-002248010929}.xml index a4ecd3c..d7a0864 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{01b1db23-769a-e911-a97d-002248010929}.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{01b1db23-769a-e911-a97d-002248010929}.xml @@ -1,5 +1,6 @@  - + + 0220d2de-0095-e911-a980-0022480186c3 DevelopmentHub.Develop.Plugins.InjectSecureConfig, DevelopmentHub.Develop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ea2317363a0474b4 fdb0db23-769a-e911-a97d-002248010929 devhub_solution @@ -8,7 +9,6 @@ 0 0 0 - {0220d2de-0095-e911-a980-0022480186c3} 4602 20 1 diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{535e9af8-5ec4-ea11-a812-000d3a86d535}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{535e9af8-5ec4-ea11-a812-000d3a86d535}.xml new file mode 100644 index 0000000..42cbd51 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{535e9af8-5ec4-ea11-a812-000d3a86d535}.xml @@ -0,0 +1,19 @@ + + + ea378467-b1b6-ea11-a812-000d3a86ad99 + DevelopmentHub.Develop.Plugins.InjectSecureConfig, DevelopmentHub.Develop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ea2317363a0474b4 + fdb0db23-769a-e911-a97d-002248010929 + devhub_environment + 0 + + 0 + 0 + 1 + 4602 + 20 + 1 + 0 + 0 + 1.0 + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{b1b94739-609b-e911-a97d-002248010929}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{b1b94739-609b-e911-a97d-002248010929}.xml index 136c9ac..0ba86bd 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{b1b94739-609b-e911-a97d-002248010929}.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{b1b94739-609b-e911-a97d-002248010929}.xml @@ -1,5 +1,6 @@  - + + 7046cef7-5c9b-e911-a980-0022480186c3 DevelopmentHub.Develop.Plugins.InjectSecureConfig, DevelopmentHub.Develop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ea2317363a0474b4 fdb0db23-769a-e911-a97d-002248010929 devhub_solution @@ -8,7 +9,6 @@ 0 0 0 - {7046cef7-5c9b-e911-a980-0022480186c3} 4602 20 1 diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{b4b94739-609b-e911-a97d-002248010929}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{b4b94739-609b-e911-a97d-002248010929}.xml index a1aef24..e9165a2 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{b4b94739-609b-e911-a97d-002248010929}.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{b4b94739-609b-e911-a97d-002248010929}.xml @@ -1,5 +1,6 @@  - + + 4f8a0bf3-5e9b-e911-a980-0022480186c3 DevelopmentHub.Develop.Plugins.InjectSecureConfig, DevelopmentHub.Develop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ea2317363a0474b4 fdb0db23-769a-e911-a97d-002248010929 devhub_solution @@ -8,7 +9,6 @@ 0 0 0 - {4f8a0bf3-5e9b-e911-a980-0022480186c3} 4602 20 1 diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{feb0db23-769a-e911-a97d-002248010929}.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{feb0db23-769a-e911-a97d-002248010929}.xml index c57562a..deafcfd 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{feb0db23-769a-e911-a97d-002248010929}.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/SdkMessageProcessingSteps/{feb0db23-769a-e911-a97d-002248010929}.xml @@ -1,5 +1,6 @@  - + + b0aad088-c18a-e911-a97e-0022480186c3 DevelopmentHub.Develop.Plugins.InjectSecureConfig, DevelopmentHub.Develop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ea2317363a0474b4 fdb0db23-769a-e911-a97d-002248010929 devhub_environment @@ -8,7 +9,6 @@ 0 0 0 - {b0aad088-c18a-e911-a97e-0022480186c3} 4602 20 1 diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/WebResources/devhub_/Js/develop.solutionmerge.ribbon.js b/solutions/devhub_DevelopmentHub_Develop/Extract/WebResources/devhub_/Js/develop.solutionmerge.ribbon.js index f189f84..b0e8292 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/WebResources/devhub_/Js/develop.solutionmerge.ribbon.js +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/WebResources/devhub_/Js/develop.solutionmerge.ribbon.js @@ -1,4 +1,39 @@ "use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; var DevelopmentHub; (function (DevelopmentHub) { var Develop; @@ -48,9 +83,24 @@ var DevelopmentHub; } Develop.isReviewEnabled = isReviewEnabled; function approve(primaryControl) { + var _this = this; var entity = primaryControl.data.entity.getEntityReference(); executeWebApiRequest(new ApproveRequest(entity), "Approving solution merge.") - .then(function () { return primaryControl.data.refresh(false); }); + .then(function () { return __awaiter(_this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + // Flows don't trigger for updates done within actions/workflows. + // Setting the statuscode here as a workaround + primaryControl.getAttribute("statuscode").setValue(353400000); + return [4 /*yield*/, primaryControl.data.save()]; + case 1: + _a.sent(); + primaryControl.data.refresh(false); + return [2 /*return*/]; + } + }); + }); }); } Develop.approve = approve; function reject(primaryControl) { diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Approve-38601740-AE0B-46AF-8809-5D402B5A0A02.xaml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Approve-38601740-AE0B-46AF-8809-5D402B5A0A02.xaml index 153ca48..c81201d 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Approve-38601740-AE0B-46AF-8809-5D402B5A0A02.xaml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Approve-38601740-AE0B-46AF-8809-5D402B5A0A02.xaml @@ -23,22 +23,6 @@ Assembly references and imported namespaces for internal implementation - - - - - - - - - - - - - - - - @@ -102,11 +86,5 @@ - - - - - - \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Approve-38601740-AE0B-46AF-8809-5D402B5A0A02.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Approve-38601740-AE0B-46AF-8809-5D402B5A0A02.xaml.data.xml index 37bbe79..feaa13c 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Approve-38601740-AE0B-46AF-8809-5D402B5A0A02.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Approve-38601740-AE0B-46AF-8809-5D402B5A0A02.xaml.data.xml @@ -1,5 +1,5 @@  - + /Workflows/Approve-38601740-AE0B-46AF-8809-5D402B5A0A02.xaml 1 0 @@ -21,8 +21,12 @@ 0.1.13.0 1 {00000000-0000-0000-0000-000000000000} + 1 devhub_solutionmerge + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/DefaultMajorVersionTo0-E0D0CD69-529B-E911-A980-0022480186C3.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/DefaultMajorVersionTo0-E0D0CD69-529B-E911-A980-0022480186C3.xaml.data.xml index bcb9352..aa95b1c 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/DefaultMajorVersionTo0-E0D0CD69-529B-E911-A980-0022480186C3.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/DefaultMajorVersionTo0-E0D0CD69-529B-E911-A980-0022480186C3.xaml.data.xml @@ -18,6 +18,7 @@ 0.1.17.0 1 0 + 1 1 devhub_solution diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/DefaultMinorVersionTo0-B7817B8E-529B-E911-A980-0022480186C3.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/DefaultMinorVersionTo0-B7817B8E-529B-E911-A980-0022480186C3.xaml.data.xml index 56db5b9..996a4cf 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/DefaultMinorVersionTo0-B7817B8E-529B-E911-A980-0022480186C3.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/DefaultMinorVersionTo0-B7817B8E-529B-E911-A980-0022480186C3.xaml.data.xml @@ -18,6 +18,7 @@ 0.1.17.0 1 0 + 1 1 devhub_solution diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/DefaultPatchVersionTo0-891D73B3-529B-E911-A980-0022480186C3.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/DefaultPatchVersionTo0-891D73B3-529B-E911-A980-0022480186C3.xaml.data.xml index 555ba0e..549af6f 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/DefaultPatchVersionTo0-891D73B3-529B-E911-A980-0022480186C3.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/DefaultPatchVersionTo0-891D73B3-529B-E911-A980-0022480186C3.xaml.data.xml @@ -18,6 +18,7 @@ 0.1.17.0 1 0 + 1 1 devhub_solution diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ExportSolution-AB0D4D33-2070-43C0-ABE4-5429BE8445DC.xaml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ExportSolution-AB0D4D33-2070-43C0-ABE4-5429BE8445DC.xaml index 76f4a05..c0b60ea 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ExportSolution-AB0D4D33-2070-43C0-ABE4-5429BE8445DC.xaml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ExportSolution-AB0D4D33-2070-43C0-ABE4-5429BE8445DC.xaml @@ -179,19 +179,19 @@ - + SelectFirstNonNull [New Object() { CustomActivityStep1IsSuccessful_localParameter }] - + [AssignOutputArgumentStep2_1] - + diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ExportSolution-AB0D4D33-2070-43C0-ABE4-5429BE8445DC.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ExportSolution-AB0D4D33-2070-43C0-ABE4-5429BE8445DC.xaml.data.xml index da98530..9463332 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ExportSolution-AB0D4D33-2070-43C0-ABE4-5429BE8445DC.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ExportSolution-AB0D4D33-2070-43C0-ABE4-5429BE8445DC.xaml.data.xml @@ -21,6 +21,7 @@ 0.1.17.0 1 {00000000-0000-0000-0000-000000000000} + 1 devhub_solution diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/FieldsAreLockedAfterApproval-EE9BC39C-FFB2-E911-A97B-002248019881.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/FieldsAreLockedAfterApproval-EE9BC39C-FFB2-E911-A97B-002248019881.xaml.data.xml index ba83a4d..a2e8454 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/FieldsAreLockedAfterApproval-EE9BC39C-FFB2-E911-A97B-002248019881.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/FieldsAreLockedAfterApproval-EE9BC39C-FFB2-E911-A97B-002248019881.xaml.data.xml @@ -18,6 +18,7 @@ 0.1.17.0 1 0 + 1 1 devhub_solutionmerge diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetEnvironmentVariable-BACC52A9-3469-4105-BBC8-269A62670429.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetEnvironmentVariable-BACC52A9-3469-4105-BBC8-269A62670429.xaml.data.xml index 24d3932..b16eb60 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetEnvironmentVariable-BACC52A9-3469-4105-BBC8-269A62670429.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetEnvironmentVariable-BACC52A9-3469-4105-BBC8-269A62670429.xaml.data.xml @@ -21,6 +21,7 @@ 0.1.20.0 1 {00000000-0000-0000-0000-000000000000} + 1 none diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetLastApprovedSolutionMerge-21ACA484-99BB-406F-BBD0-9A2DB41CFF4E.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetLastApprovedSolutionMerge-21ACA484-99BB-406F-BBD0-9A2DB41CFF4E.xaml.data.xml index 98133a3..cd4f927 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetLastApprovedSolutionMerge-21ACA484-99BB-406F-BBD0-9A2DB41CFF4E.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetLastApprovedSolutionMerge-21ACA484-99BB-406F-BBD0-9A2DB41CFF4E.xaml.data.xml @@ -21,6 +21,7 @@ 0.1.13.0 1 {00000000-0000-0000-0000-000000000000} + 1 devhub_environment diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetPostMergeSolutionVersion-7859F1DF-DE44-4B3E-854F-BF25345A700A.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetPostMergeSolutionVersion-7859F1DF-DE44-4B3E-854F-BF25345A700A.xaml.data.xml index f1691eb..d7469f2 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetPostMergeSolutionVersion-7859F1DF-DE44-4B3E-854F-BF25345A700A.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetPostMergeSolutionVersion-7859F1DF-DE44-4B3E-854F-BF25345A700A.xaml.data.xml @@ -21,6 +21,7 @@ 0.1.17.0 1 {00000000-0000-0000-0000-000000000000} + 1 devhub_solutionmerge diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetStagingEnvironment-F2A7D25F-69A3-4023-BF9D-74D02EEB9A76.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetStagingEnvironment-F2A7D25F-69A3-4023-BF9D-74D02EEB9A76.xaml.data.xml index 9ed7673..afa6605 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetStagingEnvironment-F2A7D25F-69A3-4023-BF9D-74D02EEB9A76.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/GetStagingEnvironment-F2A7D25F-69A3-4023-BF9D-74D02EEB9A76.xaml.data.xml @@ -21,6 +21,7 @@ 0.1.13.0 1 {00000000-0000-0000-0000-000000000000} + 1 devhub_solution diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/HasActiveSolutionMerge-2B0C0FAC-4DF1-435D-8BA8-0E78BAEFB755.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/HasActiveSolutionMerge-2B0C0FAC-4DF1-435D-8BA8-0E78BAEFB755.xaml.data.xml index 7d6ce45..ed4c3cd 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/HasActiveSolutionMerge-2B0C0FAC-4DF1-435D-8BA8-0E78BAEFB755.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/HasActiveSolutionMerge-2B0C0FAC-4DF1-435D-8BA8-0E78BAEFB755.xaml.data.xml @@ -21,6 +21,7 @@ 0.1.12.0 1 {00000000-0000-0000-0000-000000000000} + 1 devhub_issue diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ImportSolution-6F2F4A7E-33FD-482F-81A6-4D4E3542674D.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ImportSolution-6F2F4A7E-33FD-482F-81A6-4D4E3542674D.xaml.data.xml index 96e99c3..a35a7b5 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ImportSolution-6F2F4A7E-33FD-482F-81A6-4D4E3542674D.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ImportSolution-6F2F4A7E-33FD-482F-81A6-4D4E3542674D.xaml.data.xml @@ -21,6 +21,7 @@ 0.1.13.0 1 {00000000-0000-0000-0000-000000000000} + 1 devhub_environment diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/LockDevelopmentSolution-3E79228E-9084-E911-A97E-0022480186C3.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/LockDevelopmentSolution-3E79228E-9084-E911-A97E-0022480186C3.xaml.data.xml index 2580539..65da41f 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/LockDevelopmentSolution-3E79228E-9084-E911-A97E-0022480186C3.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/LockDevelopmentSolution-3E79228E-9084-E911-A97E-0022480186C3.xaml.data.xml @@ -18,6 +18,7 @@ 0.1.12.0 1 0 + 1 1 devhub_issue diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/LockStatusReason-154FBB6C-7784-E911-A97E-0022480186C3.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/LockStatusReason-154FBB6C-7784-E911-A97E-0022480186C3.xaml.data.xml index 5d3125e..ce4adf8 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/LockStatusReason-154FBB6C-7784-E911-A97E-0022480186C3.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/LockStatusReason-154FBB6C-7784-E911-A97E-0022480186C3.xaml.data.xml @@ -18,6 +18,7 @@ 0.1.9.0 1 0 + 1 1 devhub_issue diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ManualMergingCompleteisenabledwhenStatusReasonisAw-4A42AA94-FD49-EA11-A812-000D3A0B97CA.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ManualMergingCompleteisenabledwhenStatusReasonisAw-4A42AA94-FD49-EA11-A812-000D3A0B97CA.xaml.data.xml deleted file mode 100644 index 093e69a..0000000 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ManualMergingCompleteisenabledwhenStatusReasonisAw-4A42AA94-FD49-EA11-A812-000D3A0B97CA.xaml.data.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - /Workflows/ManualMergingCompleteisenabledwhenStatusReasonisAw-4A42AA94-FD49-EA11-A812-000D3A0B97CA.xaml - 1 - 0 - 2 - 1 - 4 - 0 - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 1 - 1.0.0.0 - 1 - 0 - 1 - devhub_solutionmerge - - - - - - - \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ManualMergingCompleteisvisiblewhenManualMergeActiv-7C0ACCEA-FD49-EA11-A812-000D3A0B97CA.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ManualMergingCompleteisvisiblewhenManualMergeActiv-7C0ACCEA-FD49-EA11-A812-000D3A0B97CA.xaml.data.xml deleted file mode 100644 index d6f613c..0000000 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ManualMergingCompleteisvisiblewhenManualMergeActiv-7C0ACCEA-FD49-EA11-A812-000D3A0B97CA.xaml.data.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - /Workflows/ManualMergingCompleteisvisiblewhenManualMergeActiv-7C0ACCEA-FD49-EA11-A812-000D3A0B97CA.xaml - 1 - 0 - 2 - 1 - 4 - 0 - 0 - 0 - 0 - 0 - 1 - 2 - 1 - 1 - 1.0.0.0 - 1 - 0 - 1 - devhub_solutionmerge - - - - - - - \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Merge-3321DE58-D1E6-4F3C-BC21-E31A834C8D9B.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Merge-3321DE58-D1E6-4F3C-BC21-E31A834C8D9B.xaml.data.xml index 8744c6f..51bdc52 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Merge-3321DE58-D1E6-4F3C-BC21-E31A834C8D9B.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Merge-3321DE58-D1E6-4F3C-BC21-E31A834C8D9B.xaml.data.xml @@ -21,6 +21,7 @@ 0.1.15.0 1 {00000000-0000-0000-0000-000000000000} + 1 devhub_solution diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ManualMergingCompleteisvisiblewhenManualMergeActiv-7C0ACCEA-FD49-EA11-A812-000D3A0B97CA.xaml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/NameisVersion-20AF6FB0-4BB9-EA11-A812-000D3A86AD99.xaml similarity index 51% rename from solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ManualMergingCompleteisvisiblewhenManualMergeActiv-7C0ACCEA-FD49-EA11-A812-000D3A0B97CA.xaml rename to solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/NameisVersion-20AF6FB0-4BB9-EA11-A812-000D3A86AD99.xaml index 59772ba..53f6aee 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ManualMergingCompleteisvisiblewhenManualMergeActiv-7C0ACCEA-FD49-EA11-A812-000D3A0B97CA.xaml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/NameisVersion-20AF6FB0-4BB9-EA11-A812-000D3A86AD99.xaml @@ -1,14 +1,14 @@ - + - + - - + + - + Assembly references and imported namespaces for internal implementation @@ -19,12 +19,9 @@ - - - - + @@ -33,20 +30,10 @@ - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "1" }] - - - - [ConditionBranchStep2_2] - - - Equal - [New Object() { ConditionBranchStep2_2 }] + Null + [ConditionBranchStep2_1] [ConditionBranchStep2_condition] @@ -60,69 +47,34 @@ - - - - - - - - If Manual Merge Activities is Yes - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "True" }] - - - - [ConditionBranchStep3_1] - - - - - [True] - - - - - - - - - - + - + - + - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "0" }] - - + + + + - [SetAttributeValueStep3_1] - - - + + + - + - + - + If name is empty diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/NameisVersion-20AF6FB0-4BB9-EA11-A812-000D3A86AD99.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/NameisVersion-20AF6FB0-4BB9-EA11-A812-000D3A86AD99.xaml.data.xml new file mode 100644 index 0000000..7872716 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/NameisVersion-20AF6FB0-4BB9-EA11-A812-000D3A86AD99.xaml.data.xml @@ -0,0 +1,30 @@ + + + /Workflows/NameisVersion-20AF6FB0-4BB9-EA11-A812-000D3A86AD99.xaml + 1 + 0 + 2 + 1 + 4 + 0 + 0 + 0 + 0 + 0 + 1 + 2 + 1 + 1 + 0.1.20.0 + 1 + 0 + 1 + 2 + devhub_SolutionVersion + + + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/PublishAll-57FEF689-633C-4C90-A847-0F5AD84F7EBD.xaml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/PublishAll-57FEF689-633C-4C90-A847-0F5AD84F7EBD.xaml new file mode 100644 index 0000000..e8f248a --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/PublishAll-57FEF689-633C-4C90-A847-0F5AD84F7EBD.xaml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Assembly references and imported namespaces for internal implementation + + + + + + + + + + + + + + + + + + + + + + + + + + + SelectFirstNonNull + [New Object() { CustomActivityStep1_2 }] + + + + [CustomActivityStep1_1] + + + + + [CustomActivityStep1_1] + + + + [CustomActivityStep1_1_converted] + + + + + [DirectCast(CustomActivityStep1_1_converted, System.String)] + [CustomActivityStep1IsSuccessful_localParameter] + [CustomActivityStep1Error_localParameter] + + + + + + + + + + + + + SelectFirstNonNull + [New Object() { CustomActivityStep1IsSuccessful_localParameter }] + + + + [AssignOutputArgumentStep2_1] + + + + + + + False + + + + + + + + + NotNull + + [CustomActivityStep1Error_localParameter] + [ConditionBranchStep4_condition] + + + + + [ConditionBranchStep4_condition] + + + + + + + + + + + + + + SelectFirstNonNull + [New Object() { CustomActivityStep1Error_localParameter }] + + + + [AssignOutputArgumentStep5_1] + + + + + + + + + + + + + False + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/PublishAll-57FEF689-633C-4C90-A847-0F5AD84F7EBD.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/PublishAll-57FEF689-633C-4C90-A847-0F5AD84F7EBD.xaml.data.xml new file mode 100644 index 0000000..2dc5ebb --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/PublishAll-57FEF689-633C-4C90-A847-0F5AD84F7EBD.xaml.data.xml @@ -0,0 +1,29 @@ + + + /Workflows/PublishAll-57FEF689-633C-4C90-A847-0F5AD84F7EBD.xaml + 1 + 0 + 3 + 0 + 4 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 40 + 1 + {ea378467-b1b6-ea11-a812-000d3a86ad99} + PublishAll + 0 + 0.1.20.0 + 1 + {00000000-0000-0000-0000-000000000000} + 1 + devhub_environment + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/QueueSolutionMerge-89DC07F3-97DF-456E-8C2D-7427234B4237.xaml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/QueueSolutionMerge-89DC07F3-97DF-456E-8C2D-7427234B4237.xaml new file mode 100644 index 0000000..a628f76 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/QueueSolutionMerge-89DC07F3-97DF-456E-8C2D-7427234B4237.xaml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + Assembly references and imported namespaces for internal implementation + + + + + + + + + + + RetrieveCurrentTime + [New Object() { }] + + + + [UpdateStep1_2] + + + + + SelectFirstNonNull + [New Object() { UpdateStep1_2 }] + + + + [UpdateStep1_1] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/QueueSolutionMerge-89DC07F3-97DF-456E-8C2D-7427234B4237.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/QueueSolutionMerge-89DC07F3-97DF-456E-8C2D-7427234B4237.xaml.data.xml new file mode 100644 index 0000000..8081ea2 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/QueueSolutionMerge-89DC07F3-97DF-456E-8C2D-7427234B4237.xaml.data.xml @@ -0,0 +1,29 @@ + + + /Workflows/QueueSolutionMerge-89DC07F3-97DF-456E-8C2D-7427234B4237.xaml + 1 + 0 + 3 + 0 + 1 + 0 + 1 + 0 + 0 + 1 + 1 + 2 + 40 + 1 + {cec6e47f-04b4-ea11-a812-000d3a871931} + QueueSolutionMerge + 1 + 0.1.20.0 + 1 + {00000000-0000-0000-0000-000000000000} + 1 + devhub_solutionmerge + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Reject-43AB3C69-507C-4866-9E1F-581084068D48.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Reject-43AB3C69-507C-4866-9E1F-581084068D48.xaml.data.xml index 5a9b430..831c770 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Reject-43AB3C69-507C-4866-9E1F-581084068D48.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Reject-43AB3C69-507C-4866-9E1F-581084068D48.xaml.data.xml @@ -21,6 +21,7 @@ 0.1.20.0 1 {00000000-0000-0000-0000-000000000000} + 1 devhub_solutionmerge diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeMergeWithTargetSolution-EF05E501-F445-49D9-AB1F-2FDB9CDF972A.xaml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeMergeWithTargetSolution-EF05E501-F445-49D9-AB1F-2FDB9CDF972A.xaml deleted file mode 100644 index ebab9d0..0000000 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeMergeWithTargetSolution-EF05E501-F445-49D9-AB1F-2FDB9CDF972A.xaml +++ /dev/null @@ -1,3007 +0,0 @@ - - - - - - - - - - - - Assembly references and imported namespaces for internal implementation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep1_2 }] - - - - [InvokeSdkMessageStep1_1] - - - - - [InvokeSdkMessageStep1_1] - - - - [InvokeSdkMessageStep1_1_converted] - - - - - [DirectCast(InvokeSdkMessageStep1_1_converted, Microsoft.Xrm.Sdk.EntityReference)] - [InvokeSdkMessageStep1StagingEnvironment_localParameter] - - - - devhub_solution - - Target - - devhub_environment - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CustomActivityStep36_2 }] - - - - [CustomActivityStep36_1] - - - - - [CustomActivityStep36_1] - - - - [CustomActivityStep36_1_converted] - - - - - [DirectCast(CustomActivityStep36_1_converted, Microsoft.Xrm.Sdk.EntityReference)] - [CustomActivityStep36SolutionMerge_localParameter] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { UpdateStep10_2 }] - - - - [UpdateStep10_1] - - - - - - - - - - - - - - - - False - - - - - - - - - - - - - - - - - - - - - - - - - - - - NotNull - - [ConditionBranchStep22_2] - [ConditionBranchStep22_1] - - - - - - - - - - - - - - - - - - - - - - - NotEqual - [New Object() { ConditionBranchStep22_6 }] - [ConditionBranchStep22_5] - [ConditionBranchStep22_4] - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400001", "Status" }] - - - - [ConditionBranchStep22_9] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "2", "Status" }] - - - - [ConditionBranchStep22_10] - - - - - NotIn - [New Object() { ConditionBranchStep22_9, ConditionBranchStep22_10 }] - [ConditionBranchStep22_8] - [ConditionBranchStep22_7] - - - - - And - [ConditionBranchStep22_4] - [ConditionBranchStep22_7] - [ConditionBranchStep22_3] - - - - - And - [ConditionBranchStep22_1] - [ConditionBranchStep22_3] - [ConditionBranchStep22_condition] - - - - - [ConditionBranchStep22_condition] - - - - - - - - - - - - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "False" }] - - - - [CreateStep40_1] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "CreateStep40", "String" }] - - - - [CreateStep40_2] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "Solution merge queued", "String" }] - - - - [CreateStep40_3] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "This solution merge is queued behind ", "String" }] - - - - [CreateStep40_5] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep40_7 }] - - - - [CreateStep40_6] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, ". &#13;&#10;&#13;&#10;The solution merge will resume when ", "String" }] - - - - [CreateStep40_8] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep40_10 }] - - - - [CreateStep40_9] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, " is merged or cancelled. ", "String" }] - - - - [CreateStep40_11] - - - - - Add - [New Object() { CreateStep40_5, CreateStep40_6, CreateStep40_8, CreateStep40_9, CreateStep40_11 }] - - - - [CreateStep40_4] - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep40_13 }] - - - - [CreateStep40_12] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - - - - - - - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400001", "Status" }] - - - - [WaitBranchStep24_2] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "2", "Status" }] - - - - [WaitBranchStep24_3] - - - - - In - [New Object() { WaitBranchStep24_2, WaitBranchStep24_3 }] - [WaitBranchStep24_1] - [WaitBranchStep24_condition] - - - - - [WaitBranchStep24_condition] - - - - - - - - - - - - - - - - - - - - False - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CustomActivityStep11_2 }] - - - - [CustomActivityStep11_1] - - - - - [CustomActivityStep11_1] - - - - [CustomActivityStep11_1_converted] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "False" }] - - - - [CustomActivityStep11_3] - - - - - [CustomActivityStep11_3] - - - - [CustomActivityStep11_3_converted] - - - - - [DirectCast(CustomActivityStep11_1_converted, System.String)] - [DirectCast(CustomActivityStep11_3_converted, System.Boolean)] - [CustomActivityStep11SolutionZip_localParameter] - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CustomActivityStep11SolutionZip_localParameter }] - - - - [InvokeSdkMessageStep17_1] - - - - - [InvokeSdkMessageStep17_1] - - - - [InvokeSdkMessageStep17_1_converted] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep17_3 }] - - - - [InvokeSdkMessageStep17_2] - - - - - [InvokeSdkMessageStep17_2] - - - - [InvokeSdkMessageStep17_2_converted] - - - - - [DirectCast(InvokeSdkMessageStep17_1_converted, System.String)] - [DirectCast(InvokeSdkMessageStep17_2_converted, Microsoft.Xrm.Sdk.EntityReference)] - [InvokeSdkMessageStep17Succeeded_localParameter] - [InvokeSdkMessageStep17ErrorMessage_localParameter] - - - SolutionZip - - devhub_environment - - Target - - - - - - - - False - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "0" }] - - - - [ConditionBranchStep29_1] - - - - - Equal - [New Object() { ConditionBranchStep29_1 }] - [InvokeSdkMessageStep17Succeeded_localParameter] - [ConditionBranchStep29_condition] - - - - - [ConditionBranchStep29_condition] - - - - - - - - - - - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "False" }] - - - - [CreateStep30_1] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "CreateStep30", "String" }] - - - - [CreateStep30_2] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "Solution import failed", "String" }] - - - - [CreateStep30_3] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "The solution import into ", "String" }] - - - - [CreateStep30_5] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep30_7 }] - - - - [CreateStep30_6] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, " failed with the following error:&#13;&#10;&#13;&#10;&#13;&#10;", "String" }] - - - - [CreateStep30_8] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep17ErrorMessage_localParameter }] - - - - [CreateStep30_9] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "&#13;&#10;", "String" }] - - - - [CreateStep30_10] - - - - - Add - [New Object() { CreateStep30_5, CreateStep30_6, CreateStep30_8, CreateStep30_9, CreateStep30_10 }] - - - - [CreateStep30_4] - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep30_12 }] - - - - [CreateStep30_11] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep17ErrorMessage_localParameter }] - - - - - - [StopWorkflowStep31_1] - - - - - - - - - - - - - False - - - - - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep19_2 }] - - - - [InvokeSdkMessageStep19_1] - - - - - [InvokeSdkMessageStep19_1] - - - - [InvokeSdkMessageStep19_1_converted] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep19_4 }] - - - - [InvokeSdkMessageStep19_3] - - - - - [InvokeSdkMessageStep19_3] - - - - [InvokeSdkMessageStep19_3_converted] - - - - - [DirectCast(InvokeSdkMessageStep19_1_converted, System.String)] - [DirectCast(InvokeSdkMessageStep19_3_converted, Microsoft.Xrm.Sdk.EntityReference)] - [InvokeSdkMessageStep19Succeeded_localParameter] - [InvokeSdkMessageStep19ErrorMessage_localParameter] - - - SourceSolutionUniqueName - - devhub_solution - - Target - - - - - - - - False - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "0" }] - - - - [ConditionBranchStep33_1] - - - - - Equal - [New Object() { ConditionBranchStep33_1 }] - [InvokeSdkMessageStep19Succeeded_localParameter] - [ConditionBranchStep33_condition] - - - - - [ConditionBranchStep33_condition] - - - - - - - - - - - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "False" }] - - - - [CreateStep34_1] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "CreateStep34", "String" }] - - - - [CreateStep34_2] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "Solution merge failed", "String" }] - - - - [CreateStep34_3] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "The solution merge into ", "String" }] - - - - [CreateStep34_5] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep34_7 }] - - - - [CreateStep34_6] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, " failed with the following error:&#13;&#10;&#13;&#10;&#13;&#10;", "String" }] - - - - [CreateStep34_8] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep19ErrorMessage_localParameter }] - - - - [CreateStep34_9] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "&#13;&#10; ", "String" }] - - - - [CreateStep34_10] - - - - - Add - [New Object() { CreateStep34_5, CreateStep34_6, CreateStep34_8, CreateStep34_9, CreateStep34_10 }] - - - - [CreateStep34_4] - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep34_12 }] - - - - [CreateStep34_11] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep19ErrorMessage_localParameter }] - - - - - - [StopWorkflowStep35_1] - - - - - - - - - - - - - False - - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61_2 }] - - - - [InvokeSdkMessageStep61_1] - - - - - [InvokeSdkMessageStep61_1] - - - - [InvokeSdkMessageStep61_1_converted] - - - - - [DirectCast(InvokeSdkMessageStep61_1_converted, Microsoft.Xrm.Sdk.EntityReference)] - [InvokeSdkMessageStep61MajorVersion_localParameter] - [InvokeSdkMessageStep61MinorVersion_localParameter] - [InvokeSdkMessageStep61PatchVersion_localParameter] - - - - devhub_solutionmerge - - Target - - - - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61MajorVersion_localParameter }] - - - - [InvokeSdkMessageStep62_1] - - - - - [InvokeSdkMessageStep62_1] - - - - [InvokeSdkMessageStep62_1_converted] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61MinorVersion_localParameter }] - - - - [InvokeSdkMessageStep62_2] - - - - - [InvokeSdkMessageStep62_2] - - - - [InvokeSdkMessageStep62_2_converted] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61PatchVersion_localParameter }] - - - - [InvokeSdkMessageStep62_3] - - - - - [InvokeSdkMessageStep62_3] - - - - [InvokeSdkMessageStep62_3_converted] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep62_5 }] - - - - [InvokeSdkMessageStep62_4] - - - - - [InvokeSdkMessageStep62_4] - - - - [InvokeSdkMessageStep62_4_converted] - - - - - [DirectCast(InvokeSdkMessageStep62_1_converted, System.Int32)] - [DirectCast(InvokeSdkMessageStep62_2_converted, System.Int32)] - [DirectCast(InvokeSdkMessageStep62_3_converted, System.Int32)] - [DirectCast(InvokeSdkMessageStep62_4_converted, Microsoft.Xrm.Sdk.EntityReference)] - [InvokeSdkMessageStep62IsSuccess_localParameter] - [InvokeSdkMessageStep62ErrorMessage_localParameter] - - - MajorVersion - MinorVersion - PatchVersion - - devhub_solution - - Target - - - - - - - - False - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "0" }] - - - - [ConditionBranchStep64_1] - - - - - Equal - [New Object() { ConditionBranchStep64_1 }] - [InvokeSdkMessageStep62IsSuccess_localParameter] - [ConditionBranchStep64_condition] - - - - - [ConditionBranchStep64_condition] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "False" }] - - - - [CreateStep66_1] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "CreateStep66", "String" }] - - - - [CreateStep66_2] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "Solution version update failed", "String" }] - - - - [CreateStep66_3] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "Failed to update solution version to ", "String" }] - - - - [CreateStep66_5] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61MajorVersion_localParameter }] - - - - [CreateStep66_6] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, ".", "String" }] - - - - [CreateStep66_7] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61MinorVersion_localParameter }] - - - - [CreateStep66_8] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, ".", "String" }] - - - - [CreateStep66_9] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61PatchVersion_localParameter }] - - - - [CreateStep66_10] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, ".&#13;&#10;&#13;&#10;&#13;&#10;Update failed with the following error: &#13;&#10;&#13;&#10;&#13;&#10;", "String" }] - - - - [CreateStep66_11] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep62ErrorMessage_localParameter }] - - - - [CreateStep66_12] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "&#13;&#10; ", "String" }] - - - - [CreateStep66_13] - - - - - Add - [New Object() { CreateStep66_5, CreateStep66_6, CreateStep66_7, CreateStep66_8, CreateStep66_9, CreateStep66_10, CreateStep66_11, CreateStep66_12, CreateStep66_13 }] - - - - [CreateStep66_4] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "False" }] - - - - [CreateStep66_14] - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep66_16 }] - - - - [CreateStep66_15] - - - - - - - - - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "Encountered an error while updating solution version.", "String" }] - - - - [StopWorkflowStep67_1] - - - - - - - - - - - - - False - - - - - False - - - - - - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "1" }] - - - - [ConditionBranchStep69_2] - - - - - Equal - [New Object() { ConditionBranchStep69_2 }] - [ConditionBranchStep69_1] - [ConditionBranchStep69_condition] - - - - - [ConditionBranchStep69_condition] - - - - - - - - - - - - - - - - - - - - - - - - - - True - - - - - - - - - - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "0" }] - - - - [WaitBranchStep71_3] - - - - - Equal - [New Object() { WaitBranchStep71_3 }] - [WaitBranchStep71_2] - [WaitBranchStep71_1] - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "1" }] - - - - [WaitBranchStep71_6] - - - - - Equal - [New Object() { WaitBranchStep71_6 }] - [WaitBranchStep71_5] - [WaitBranchStep71_4] - - - - - Or - [WaitBranchStep71_1] - [WaitBranchStep71_4] - [WaitBranchStep71_condition] - - - - - [WaitBranchStep71_condition] - - - - - - - - - - - - - - - - - - - - False - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "True" }] - - - - [InvokeSdkMessageStep59_1] - - - - - [InvokeSdkMessageStep59_1] - - - - [InvokeSdkMessageStep59_1_converted] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep59_3 }] - - - - [InvokeSdkMessageStep59_2] - - - - - [InvokeSdkMessageStep59_2] - - - - [InvokeSdkMessageStep59_2_converted] - - - - - [DirectCast(InvokeSdkMessageStep59_1_converted, System.Boolean)] - [DirectCast(InvokeSdkMessageStep59_2_converted, Microsoft.Xrm.Sdk.EntityReference)] - [InvokeSdkMessageStep59SolutionZip_localParameter] - [InvokeSdkMessageStep59IsSuccessful_localParameter] - [InvokeSdkMessageStep59ErrorMessage_localParameter] - - - Managed - - devhub_solution - - Target - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "False" }] - - - - [CreateStep55_1] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "CreateStep55", "String" }] - - - - [CreateStep55_2] - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep55_5 }] - - - - [CreateStep55_4] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, " - ", "String" }] - - - - [CreateStep55_6] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61MajorVersion_localParameter }] - - - - [CreateStep55_7] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, ".", "String" }] - - - - [CreateStep55_8] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61MinorVersion_localParameter }] - - - - [CreateStep55_9] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, ".", "String" }] - - - - [CreateStep55_10] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61PatchVersion_localParameter }] - - - - [CreateStep55_11] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, " - Managed ", "String" }] - - - - [CreateStep55_12] - - - - - Add - [New Object() { CreateStep55_4, CreateStep55_6, CreateStep55_7, CreateStep55_8, CreateStep55_9, CreateStep55_10, CreateStep55_11, CreateStep55_12 }] - - - - [CreateStep55_3] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "A new managed solution version is available. The merge that created this version can be found here: ", "String" }] - - - - [CreateStep55_14] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep55_16 }] - - - - [CreateStep55_15] - - - - - Add - [New Object() { CreateStep55_14, CreateStep55_15 }] - - - - [CreateStep55_13] - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep55_18 }] - - - - [CreateStep55_17] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CustomActivityStep56_2 }] - - - - [CustomActivityStep56_1] - - - - - [CustomActivityStep56_1] - - - - [CustomActivityStep56_1_converted] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep59SolutionZip_localParameter }] - - - - [CustomActivityStep56_3] - - - - - [CustomActivityStep56_3] - - - - [CustomActivityStep56_3_converted] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CustomActivityStep56_6 }] - - - - [CustomActivityStep56_5] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "_managed.zip", "String" }] - - - - [CustomActivityStep56_7] - - - - - Add - [New Object() { CustomActivityStep56_5, CustomActivityStep56_7 }] - - - - [CustomActivityStep56_4] - - - - - [CustomActivityStep56_4] - - - - [CustomActivityStep56_4_converted] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "application/zip", "String" }] - - - - [CustomActivityStep56_8] - - - - - [CustomActivityStep56_8] - - - - [CustomActivityStep56_8_converted] - - - - - [DirectCast(CustomActivityStep56_1_converted, Microsoft.Xrm.Sdk.EntityReference)] - [DirectCast(CustomActivityStep56_3_converted, System.String)] - [DirectCast(CustomActivityStep56_4_converted, System.String)] - [DirectCast(CustomActivityStep56_8_converted, System.String)] - - - - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "False" }] - - - - [InvokeSdkMessageStep60_1] - - - - - [InvokeSdkMessageStep60_1] - - - - [InvokeSdkMessageStep60_1_converted] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep60_3 }] - - - - [InvokeSdkMessageStep60_2] - - - - - [InvokeSdkMessageStep60_2] - - - - [InvokeSdkMessageStep60_2_converted] - - - - - [DirectCast(InvokeSdkMessageStep60_1_converted, System.Boolean)] - [DirectCast(InvokeSdkMessageStep60_2_converted, Microsoft.Xrm.Sdk.EntityReference)] - [InvokeSdkMessageStep60SolutionZip_localParameter] - [InvokeSdkMessageStep60IsSuccessful_localParameter] - [InvokeSdkMessageStep60ErrorMessage_localParameter] - - - Managed - - devhub_solution - - Target - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "False" }] - - - - [CreateStep44_1] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "CreateStep44", "String" }] - - - - [CreateStep44_2] - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep44_5 }] - - - - [CreateStep44_4] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, " - ", "String" }] - - - - [CreateStep44_6] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61MajorVersion_localParameter }] - - - - [CreateStep44_7] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, ".", "String" }] - - - - [CreateStep44_8] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61MinorVersion_localParameter }] - - - - [CreateStep44_9] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, ".", "String" }] - - - - [CreateStep44_10] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep61PatchVersion_localParameter }] - - - - [CreateStep44_11] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, " - Unmanaged ", "String" }] - - - - [CreateStep44_12] - - - - - Add - [New Object() { CreateStep44_4, CreateStep44_6, CreateStep44_7, CreateStep44_8, CreateStep44_9, CreateStep44_10, CreateStep44_11, CreateStep44_12 }] - - - - [CreateStep44_3] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "A new unmanaged solution version is available. The merge that created this version can be found here: ", "String" }] - - - - [CreateStep44_14] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep44_16 }] - - - - [CreateStep44_15] - - - - - Add - [New Object() { CreateStep44_14, CreateStep44_15 }] - - - - [CreateStep44_13] - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep44_18 }] - - - - [CreateStep44_17] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CustomActivityStep54_2 }] - - - - [CustomActivityStep54_1] - - - - - [CustomActivityStep54_1] - - - - [CustomActivityStep54_1_converted] - - - - - SelectFirstNonNull - [New Object() { InvokeSdkMessageStep60SolutionZip_localParameter }] - - - - [CustomActivityStep54_4] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, " ", "String" }] - - - - [CustomActivityStep54_5] - - - - - Add - [New Object() { CustomActivityStep54_4, CustomActivityStep54_5 }] - - - - [CustomActivityStep54_3] - - - - - [CustomActivityStep54_3] - - - - [CustomActivityStep54_3_converted] - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CustomActivityStep54_8 }] - - - - [CustomActivityStep54_7] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, ".zip", "String" }] - - - - [CustomActivityStep54_9] - - - - - Add - [New Object() { CustomActivityStep54_7, CustomActivityStep54_9 }] - - - - [CustomActivityStep54_6] - - - - - [CustomActivityStep54_6] - - - - [CustomActivityStep54_6_converted] - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "application/zip", "String" }] - - - - [CustomActivityStep54_10] - - - - - [CustomActivityStep54_10] - - - - [CustomActivityStep54_10_converted] - - - - - [DirectCast(CustomActivityStep54_1_converted, Microsoft.Xrm.Sdk.EntityReference)] - [DirectCast(CustomActivityStep54_3_converted, System.String)] - [DirectCast(CustomActivityStep54_6_converted, System.String)] - [DirectCast(CustomActivityStep54_10_converted, System.String)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "False" }] - - - - [CreateStep41_1] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "CreateStep41", "String" }] - - - - [CreateStep41_2] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "Solution merge succeeded", "String" }] - - - - [CreateStep41_3] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.String, "The solution has been merged into the target solution.", "String" }] - - - - [CreateStep41_4] - - - - - - - - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "False" }] - - - - [CreateStep41_5] - - - - - - - - - - - - - - - - - - - SelectFirstNonNull - [New Object() { CreateStep41_7 }] - - - - [CreateStep41_6] - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeMergeWithTargetSolution-EF05E501-F445-49D9-AB1F-2FDB9CDF972A.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeMergeWithTargetSolution-EF05E501-F445-49D9-AB1F-2FDB9CDF972A.xaml.data.xml deleted file mode 100644 index 62899cd..0000000 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeMergeWithTargetSolution-EF05E501-F445-49D9-AB1F-2FDB9CDF972A.xaml.data.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - /Workflows/SolutionMergeMergeWithTargetSolution-EF05E501-F445-49D9-AB1F-2FDB9CDF972A.xaml - 1 - 1 - 0 - 0 - 4 - 1 - 0 - 0 - 1 - 1 - 1 - 2 - 1 - 1 - 0.1.13.0 - 1 - devhub_solutionmerge - - - - - - - \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeSetName-1FD3B61A-4080-4298-9822-D3BAD18842F7.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeSetName-1FD3B61A-4080-4298-9822-D3BAD18842F7.xaml.data.xml index f303dbc..8ac18f3 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeSetName-1FD3B61A-4080-4298-9822-D3BAD18842F7.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeSetName-1FD3B61A-4080-4298-9822-D3BAD18842F7.xaml.data.xml @@ -19,6 +19,7 @@ 1 0.1.12.0 1 + 1 devhub_solutionmerge diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeUpdateIssueOnStatusUpdate-F087A8F0-963D-45B3-B9A4-2BAA2A1ABD39.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeUpdateIssueOnStatusUpdate-F087A8F0-963D-45B3-B9A4-2BAA2A1ABD39.xaml.data.xml index 9863a4e..fc1469a 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeUpdateIssueOnStatusUpdate-F087A8F0-963D-45B3-B9A4-2BAA2A1ABD39.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeUpdateIssueOnStatusUpdate-F087A8F0-963D-45B3-B9A4-2BAA2A1ABD39.xaml.data.xml @@ -20,6 +20,7 @@ 1 0.1.12.0 1 + 1 devhub_solutionmerge diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeValidateAndUpdateIssue-5856B3CE-273E-4D1A-B6E2-527752ED3BC5.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeValidateAndUpdateIssue-5856B3CE-273E-4D1A-B6E2-527752ED3BC5.xaml.data.xml index 5b54774..e4d8c98 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeValidateAndUpdateIssue-5856B3CE-273E-4D1A-B6E2-527752ED3BC5.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionMergeValidateAndUpdateIssue-5856B3CE-273E-4D1A-B6E2-527752ED3BC5.xaml.data.xml @@ -7,6 +7,7 @@ 1 4 0 + 1 0 0 @@ -18,6 +19,7 @@ 1 0.1.12.0 1 + 1 devhub_solutionmerge diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionResetMinorVersionOnUpdateOfMajorVersion-7DF170C4-DF25-4F70-B60F-C06ECE00761F.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionResetMinorVersionOnUpdateOfMajorVersion-7DF170C4-DF25-4F70-B60F-C06ECE00761F.xaml.data.xml index da2f687..b11f8a7 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionResetMinorVersionOnUpdateOfMajorVersion-7DF170C4-DF25-4F70-B60F-C06ECE00761F.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionResetMinorVersionOnUpdateOfMajorVersion-7DF170C4-DF25-4F70-B60F-C06ECE00761F.xaml.data.xml @@ -20,6 +20,7 @@ 1 0.1.17.0 1 + 1 devhub_solution diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionResetPatchVersionOnUpdateOfMinorVersion-5A7F778D-9C71-4BFD-8A35-79489D5A5377.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionResetPatchVersionOnUpdateOfMinorVersion-5A7F778D-9C71-4BFD-8A35-79489D5A5377.xaml.data.xml index 5dae32f..d0eff3d 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionResetPatchVersionOnUpdateOfMinorVersion-5A7F778D-9C71-4BFD-8A35-79489D5A5377.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionResetPatchVersionOnUpdateOfMinorVersion-5A7F778D-9C71-4BFD-8A35-79489D5A5377.xaml.data.xml @@ -20,6 +20,7 @@ 1 0.1.17.0 1 + 1 devhub_solution diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ManualMergingCompleteisenabledwhenStatusReasonisAw-4A42AA94-FD49-EA11-A812-000D3A0B97CA.xaml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionVersionisvisiblewhenstatusisMerged-ADBC4ED7-87C3-EA11-A812-000D3A86AD99.xaml similarity index 65% rename from solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ManualMergingCompleteisenabledwhenStatusReasonisAw-4A42AA94-FD49-EA11-A812-000D3A0B97CA.xaml rename to solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionVersionisvisiblewhenstatusisMerged-ADBC4ED7-87C3-EA11-A812-000D3A86AD99.xaml index 8b0450e..dc98e00 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/ManualMergingCompleteisenabledwhenStatusReasonisAw-4A42AA94-FD49-EA11-A812-000D3A0B97CA.xaml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionVersionisvisiblewhenstatusisMerged-ADBC4ED7-87C3-EA11-A812-000D3A86AD99.xaml @@ -1,14 +1,14 @@ - + - + - - + + - + Assembly references and imported namespaces for internal implementation @@ -20,8 +20,6 @@ - - @@ -36,7 +34,7 @@ CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400006", "Status" }] + [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.OptionSetValue, "353400001", "Status" }] @@ -60,43 +58,14 @@ - - + + - If Status Reason is Awaiting Manual Merge - - - - - CreateCrmType - [New Object() { Microsoft.Xrm.Sdk.Workflow.WorkflowPropertyType.Boolean, "True" }] - - - - [ConditionBranchStep3_1] - - - - - [True] - - - - - - - - - - - - - - + If the status is Merged diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionVersionisvisiblewhenstatusisMerged-ADBC4ED7-87C3-EA11-A812-000D3A86AD99.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionVersionisvisiblewhenstatusisMerged-ADBC4ED7-87C3-EA11-A812-000D3A86AD99.xaml.data.xml new file mode 100644 index 0000000..c7eb54d --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/SolutionVersionisvisiblewhenstatusisMerged-ADBC4ED7-87C3-EA11-A812-000D3A86AD99.xaml.data.xml @@ -0,0 +1,30 @@ + + + /Workflows/SolutionVersionisvisiblewhenstatusisMerged-ADBC4ED7-87C3-EA11-A812-000D3A86AD99.xaml + 1 + 0 + 2 + 1 + 4 + 0 + 0 + 0 + 0 + 0 + 1 + 2 + 1 + 1 + 0.1.20.0 + 1 + 0 + 1 + 2 + devhub_solutionmerge + + + + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/StartDeveloping-62980A21-1026-4C44-8A75-A2F296C60F6D.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/StartDeveloping-62980A21-1026-4C44-8A75-A2F296C60F6D.xaml.data.xml index c5c1d0e..840b78e 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/StartDeveloping-62980A21-1026-4C44-8A75-A2F296C60F6D.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/StartDeveloping-62980A21-1026-4C44-8A75-A2F296C60F6D.xaml.data.xml @@ -21,6 +21,7 @@ 0.1.9.0 1 {00000000-0000-0000-0000-000000000000} + 1 devhub_issue diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/UpdateSolutionVersion-8EE5A17D-B60A-4337-83F0-C00B6E37B446.xaml.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/UpdateSolutionVersion-8EE5A17D-B60A-4337-83F0-C00B6E37B446.xaml.data.xml index 7a5f6b2..9109b70 100644 --- a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/UpdateSolutionVersion-8EE5A17D-B60A-4337-83F0-C00B6E37B446.xaml.data.xml +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/UpdateSolutionVersion-8EE5A17D-B60A-4337-83F0-C00B6E37B446.xaml.data.xml @@ -21,6 +21,7 @@ 0.1.17.0 1 {00000000-0000-0000-0000-000000000000} + 1 devhub_solution diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json new file mode 100644 index 0000000..c737c9c --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json @@ -0,0 +1 @@ +{"properties":{"connectionReferences":{"shared_commondataserviceforapps":{"runtimeSource":"embedded","connection":{},"api":{"name":"shared_commondataserviceforapps"}},"shared_approvals":{"runtimeSource":"embedded","connection":{},"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":{"Import_the_development_solution":{"runAfter":{"Export_the_development_solution":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"PerformBoundAction","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_environments","actionName":"Microsoft.Dynamics.CRM.devhub_ImportSolution","recordId":"@outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_environmentid']","item/SolutionZip":"@outputs('Export_the_development_solution')?['body/ExportSolutionFile']"},"authentication":"@parameters('$authentication')"}},"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')"}},"Initialize_last_approved_solution_merge_ID":{"runAfter":{"Get_the_last_approved_solution_merge":["Succeeded"]},"type":"InitializeVariable","inputs":{"variables":[{"name":"lastApprovedSolutionMergeId","type":"string"}]}},"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')"}},"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_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"},"authentication":"@parameters('$authentication')"}},"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@{outputs('Import_the_development_solution')?['body/ErrorMessage']}","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":{"Import_the_development_solution":["Succeeded"]},"expression":{"equals":["@outputs('Import_the_development_solution')?['body/Succeeded']",false]},"type":"If"},"Merge_the_solution_components":{"runAfter":{"If_importing_the_development_solution_failed":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"PerformBoundAction","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutions","actionName":"Microsoft.Dynamics.CRM.devhub_Merge","recordId":"@triggerOutputs()?['body/_devhub_targetsolution_value']","item/SourceSolutionUniqueName":"@outputs('Get_the_developed_issue')?['body/devhub_developmentsolution']"},"authentication":"@parameters('$authentication')"}},"If_merging_the_solution_components_failed":{"actions":{"Create_a_note_stating_the_solution_merge_failed":{"runAfter":{},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"CreateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"annotations","item/subject":"Solution merge failed","item/notetext":"Merging solution components into the target solution failed with the following error:\n\n@{outputs('Merge_the_solution_components')?['body/ErrorMessage']}","item/objectid_devhub_solutionmerge@odata.bind":"devhub_solutionmerges(@{triggerOutputs()?['body/devhub_solutionmergeid']})"},"authentication":"@parameters('$authentication')"}},"Update_the_solution_merge_to_failed_(due_to_merging)":{"runAfter":{"Create_a_note_stating_the_solution_merge_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')"}},"Fail_the_flow_(due_to_merging)":{"runAfter":{"Update_the_solution_merge_to_failed_(due_to_merging)":["Succeeded"]},"type":"Terminate","inputs":{"runStatus":"Failed","runError":{"message":"Failed to merge solution components."}}}},"runAfter":{"Merge_the_solution_components":["Succeeded"]},"expression":{"equals":["@outputs('Merge_the_solution_components')?['body/Succeeded']",false]},"type":"If"},"Get_the_post-merge_solution_version":{"runAfter":{"If_merging_the_solution_components_failed":["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_the_solution_version":{"runAfter":{"Get_the_post-merge_solution_version":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"PerformBoundAction","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutions","actionName":"Microsoft.Dynamics.CRM.devhub_UpdateSolutionVersion","recordId":"@triggerOutputs()?['body/_devhub_targetsolution_value']","item/MajorVersion":"@outputs('Get_the_post-merge_solution_version')?['body/MajorVersion']","item/MinorVersion":"@outputs('Get_the_post-merge_solution_version')?['body/MinorVersion']","item/PatchVersion":"@outputs('Get_the_post-merge_solution_version')?['body/PatchVersion']"},"authentication":"@parameters('$authentication')"}},"If_the_solution_version_failed_to_update":{"actions":{"Create_a_note_stating_the_solution_version_failed_to_update":{"runAfter":{},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"CreateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"annotations","item/subject":"Solution version update failed","item/notetext":"Failed to update the solution version to @{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']} with the following error:\n\n@{outputs('Update_the_solution_version')?['body/ErrorMessage']}","item/objectid_devhub_solutionmerge@odata.bind":"devhub_solutionmerges(@{triggerOutputs()?['body/devhub_solutionmergeid']})"},"authentication":"@parameters('$authentication')"}},"Fail_the_flow_(due_to_solution_version_update)":{"runAfter":{"Update_the_solution_merge_to_failed_(due_to_solution_version_update)":["Succeeded"]},"type":"Terminate","inputs":{"runStatus":"Failed","runError":{"message":"Failed to update solution version."}}},"Update_the_solution_merge_to_failed_(due_to_solution_version_update)":{"runAfter":{"Create_a_note_stating_the_solution_version_failed_to_update":["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":{"Update_the_solution_version":["Succeeded"]},"expression":{"equals":["@outputs('Update_the_solution_version')?['body/IsSuccess']",false]},"type":"If"},"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":{"If_the_solution_version_failed_to_update":["Succeeded"]},"expression":{"equals":["@triggerOutputs()?['body/devhub_manualmergeactivities']",true]},"type":"If"},"Export_the_unmanaged_solution":{"runAfter":{"If_the_managed_solution_failed_to_export":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"PerformBoundAction","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutions","actionName":"Microsoft.Dynamics.CRM.devhub_ExportSolution","recordId":"@triggerOutputs()?['body/_devhub_targetsolution_value']","item/Managed":false},"authentication":"@parameters('$authentication')"}},"If_the_unmanaged_solution_failed_to_export":{"actions":{"Create_a_note_stating_the_unmanaged_solution_failed_to_export":{"runAfter":{},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"CreateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"annotations","item/subject":"Unmanaged solution export failed","item/notetext":"Failed to export the latest managed solution with the following error:\n\n@{outputs('Export_the_unmanaged_solution')?['body/ErrorMessage']}","item/objectid_devhub_solutionmerge@odata.bind":"devhub_solutionmerges(@{triggerOutputs()?['body/devhub_solutionmergeid']})"},"authentication":"@parameters('$authentication')"}},"Update_the_solution_merge_to_failed_(due_to_unmanaged_solution_export)":{"runAfter":{"Create_a_note_stating_the_unmanaged_solution_failed_to_export":["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')"}},"Fail_the_flow_(due_to_unmanaged_solution_export)":{"runAfter":{"Update_the_solution_merge_to_failed_(due_to_unmanaged_solution_export)":["Succeeded"]},"type":"Terminate","inputs":{"runStatus":"Failed","runError":{"message":"Failed to export unmanaged solution."}}}},"runAfter":{"Export_the_unmanaged_solution":["Succeeded"]},"expression":{"equals":["@outputs('Export_the_unmanaged_solution')?['body/IsSuccessful']",false]},"type":"If"},"Publish_all_changes":{"runAfter":{"If_there_are_manual_merge_activities":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"PerformBoundAction","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_environments","actionName":"Microsoft.Dynamics.CRM.devhub_PublishAll","recordId":"@outputs('Get_the_target_environment')?['body/devhub_stagingenvironment/devhub_environmentid']"},"authentication":"@parameters('$authentication')"}},"Create_a_new_solution_version":{"runAfter":{"If_the_unmanaged_solution_failed_to_export":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"CreateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionversions","item/devhub_Solution@odata.bind":"devhub_solutions(@{triggerOutputs()?['body/_devhub_targetsolution_value']})","item/devhub_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":"@parameters('$authentication')"}},"Upload_managed_solution_zip":{"runAfter":{"Create_a_new_solution_version":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"UpdateEntityFileImageFieldContent","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionversions","recordId":"@outputs('Create_a_new_solution_version')?['body/devhub_solutionversionid']","fileImageFieldName":"devhub_managedsolutionzip","item":"@base64ToBinary(outputs('Export_the_managed_solution')?['body/SolutionZip'])","x-ms-file-name":"@{outputs('Get_the_target_environment')?['body/devhub_uniquename']}_managed.zip"},"authentication":"@parameters('$authentication')"}},"Upload_unmanaged_zip":{"runAfter":{"Create_a_new_solution_version":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"UpdateEntityFileImageFieldContent","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutionversions","recordId":"@outputs('Create_a_new_solution_version')?['body/devhub_solutionversionid']","fileImageFieldName":"devhub_unmanagedsolutionzip","item":"@base64ToBinary(outputs('Export_the_unmanaged_solution')?['body/SolutionZip'])","x-ms-file-name":"@{outputs('Get_the_target_environment')?['body/devhub_uniquename']}.zip"},"authentication":"@parameters('$authentication')"}},"Update_the_solution_merge_to_'Merged'_and_link_solution_version":{"runAfter":{"Upload_managed_solution_zip":["Succeeded"],"Upload_unmanaged_zip":["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_SolutionVersion@odata.bind":"devhub_solutionversions(@{outputs('Create_a_new_solution_version')?['body/devhub_solutionversionid']})","item/statecode":1,"item/statuscode":353400001},"authentication":"@parameters('$authentication')"}},"Archive_development_solution_on_solution_merge":{"runAfter":{"Update_the_solution_merge_to_'Merged'_and_link_solution_version":["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')"}},"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')"}},"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')"}},"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":{"Initialize_last_approved_solution_merge_ID":["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)"},"authentication":"@parameters('$authentication')"}},"Export_the_managed_solution":{"runAfter":{"Publish_all_changes":["Succeeded"]},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"PerformBoundAction","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"devhub_solutions","actionName":"Microsoft.Dynamics.CRM.devhub_ExportSolution","recordId":"@triggerOutputs()?['body/_devhub_targetsolution_value']","item/Managed":true},"authentication":"@parameters('$authentication')"}},"If_the_managed_solution_failed_to_export":{"actions":{"Create_a_note_stating_the_managed_solution_failed_to_export":{"runAfter":{},"type":"OpenApiConnection","inputs":{"host":{"connectionName":"shared_commondataserviceforapps","operationId":"CreateRecord","apiId":"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"},"parameters":{"entityName":"annotations","item/subject":"Managed solution export failed","item/notetext":"Failed to export the latest managed solution with the following error:\n\n@{outputs('Export_the_managed_solution')?['body/ErrorMessage']}","item/objectid_devhub_solutionmerge@odata.bind":"devhub_solutionmerges(@{triggerOutputs()?['body/devhub_solutionmergeid']})"},"authentication":"@parameters('$authentication')"}},"Update_the_solution_merge_to_failed_(due_to_managed_solution_export)":{"runAfter":{"Create_a_note_stating_the_managed_solution_failed_to_export":["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')"}},"Fail_the_flow_(due_to_managed_solution_export)":{"runAfter":{"Update_the_solution_merge_to_failed_(due_to_managed_solution_export)":["Succeeded"]},"type":"Terminate","inputs":{"runStatus":"Failed","runError":{"message":"Failed to export managed solution."}}}},"runAfter":{"Export_the_managed_solution":["Succeeded"]},"expression":{"equals":["@outputs('Export_the_managed_solution')?['body/IsSuccessful']",false]},"type":"If"}},"outputs":{}}},"schemaVersion":"1.0.0.0"} \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json.data.xml new file mode 100644 index 0000000..aba1e01 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json.data.xml @@ -0,0 +1,25 @@ + + + /Workflows/Whenasolutionmergeisapproved-Mergethesolution-5004652F-F9B3-EA11-A812-000D3A86AD99.json + 1 + 0 + 5 + 0 + 4 + 0 + 0 + 0 + 0 + 0 + 1 + 2 + 1 + 1 + 1.0 + 1 + 1 + none + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json new file mode 100644 index 0000000..d1e705a --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json @@ -0,0 +1 @@ +{"properties":{"connectionReferences":{"shared_commondataserviceforapps":{"runtimeSource":"embedded","connection":{},"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/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json.data.xml b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json.data.xml new file mode 100644 index 0000000..92492d3 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/Extract/Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json.data.xml @@ -0,0 +1,25 @@ + + + /Workflows/Whenasolutionmergeismerged-Approvethefirstqueuedso-C976585F-06B4-EA11-A812-000D3A86AD99.json + 1 + 0 + 5 + 0 + 4 + 0 + 0 + 0 + 0 + 0 + 1 + 2 + 1 + 1 + 1.0 + 1 + 1 + none + + + + \ No newline at end of file diff --git a/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/BusinessLogic/IODataSolutionService.cs b/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/BusinessLogic/IODataSolutionService.cs index 451403a..c6ca0ab 100644 --- a/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/BusinessLogic/IODataSolutionService.cs +++ b/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/BusinessLogic/IODataSolutionService.cs @@ -47,5 +47,11 @@ public interface IODataSolutionService /// The version. /// A representing the asynchronous operation. Task UpdateSolutionVersionAsync(string solutionUniqueName, string solutionVersion); + + /// + /// Publishes all solution components. + /// + /// A representing the asynchronous operation. + Task PublishAllAsync(); } } diff --git a/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/BusinessLogic/ODataSolutionService.cs b/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/BusinessLogic/ODataSolutionService.cs index 7871ed6..35fd1d2 100644 --- a/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/BusinessLogic/ODataSolutionService.cs +++ b/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/BusinessLogic/ODataSolutionService.cs @@ -159,6 +159,12 @@ public async Task UpdateSolutionVersionAsync(string solutionUniqueName, string s await this.solutionRepository.UpdateAsync(solution).ConfigureAwait(false); } + /// + public Task PublishAllAsync() + { + return this.oDataClient.PostAsync("PublishAllXml", Array.Empty()); + } + private Task GetTaskForComponent(SolutionComponent sourceComponent, IEnumerable targetSolutionComponents, string targetSolutionUniqueName) { this.logWriter.Log(Severity.Info, Tag, $"Getting task for solution component {sourceComponent.ObjectId}."); @@ -169,7 +175,7 @@ private Task GetTaskForComponent(SolutionComponent sourceComponent, IEnumerable< { return this.AddSolutionComponent(sourceComponent, targetSolutionUniqueName); } - else if (targetComponent.RootComponentBehavior != sourceComponent.RootComponentBehavior && sourceComponent.RootComponentBehavior != 2) + else if (targetComponent.RootComponentBehavior.HasValue && targetComponent.RootComponentBehavior != sourceComponent.RootComponentBehavior && targetComponent.RootComponentBehavior != 0) { return this.UpdateSolutionComponent(sourceComponent, targetComponent, targetSolutionUniqueName); } diff --git a/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/CodeActivities/PublishAll.cs b/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/CodeActivities/PublishAll.cs new file mode 100644 index 0000000..3b55079 --- /dev/null +++ b/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/CodeActivities/PublishAll.cs @@ -0,0 +1,46 @@ +namespace DevelopmentHub.Develop.CodeActivities +{ + using System.Activities; + using DevelopmentHub.BusinessLogic; + using DevelopmentHub.BusinessLogic.Logging; + using DevelopmentHub.Develop.BusinessLogic; + using DevelopmentHub.Repositories; + using Microsoft.Xrm.Sdk.Workflow; + + /// + /// Import a solution into an environment. + /// + [CrmPluginRegistration( + nameof(PublishAll), + FriendlyName, + Description, + Group, + IsolationModeEnum.Sandbox)] + public class PublishAll : IntegratedWorkflowActivity + { + /// + /// The group of the workflow activity. + /// + public const string Group = "DevelopmentHub.Develop"; + + /// + /// The friendly name of the workflow activity. + /// + public const string FriendlyName = "Publish all"; + + /// + /// The description of the workflow activity. + /// + public const string Description = "Publishes all solution components in a target environment."; + + /// + protected override void ExecuteWorkflowActivity(CodeActivityContext context, IWorkflowContext workflowContext, IODataClient oDataClient, ILogWriter logWriter, IRepositoryFactory repoFactory) + { + var oDataSolutionService = context.GetExtension() ?? new ODataSolutionService(new ODataRepositoryFactory(oDataClient), logWriter); + + oDataSolutionService.PublishAllAsync().Wait(); + + this.IsSuccessful.Set(context, true); + } + } +} diff --git a/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/DevelopmentHub.Develop.csproj b/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/DevelopmentHub.Develop.csproj index 338195b..7f35224 100644 --- a/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/DevelopmentHub.Develop.csproj +++ b/solutions/devhub_DevelopmentHub_Develop/PluginAssemblies/DevelopmentHub.Develop/DevelopmentHub.Develop.csproj @@ -105,6 +105,7 @@ + diff --git a/solutions/devhub_DevelopmentHub_Develop/WebResources/Scripts/src/develop.solutionmerge.ribbon.ts b/solutions/devhub_DevelopmentHub_Develop/WebResources/Scripts/src/develop.solutionmerge.ribbon.ts index 47e6205..5bc9ded 100644 --- a/solutions/devhub_DevelopmentHub_Develop/WebResources/Scripts/src/develop.solutionmerge.ribbon.ts +++ b/solutions/devhub_DevelopmentHub_Develop/WebResources/Scripts/src/develop.solutionmerge.ribbon.ts @@ -49,11 +49,22 @@ namespace DevelopmentHub.Develop { primaryControl.ui.getFormType() !== XrmEnum.FormType.Create; } + export function retry(primaryControl: Xrm.FormContext): void { + primaryControl.getAttribute("statuscode").setValue(353400000); + primaryControl.data.save(); + } + export function approve(primaryControl: Xrm.FormContext): void { const entity = primaryControl.data.entity.getEntityReference(); executeWebApiRequest(new ApproveRequest(entity), "Approving solution merge.") - .then(() => primaryControl.data.refresh(false)); + .then(async () => { + // Flows don't trigger for updates done within actions/workflows. + // Setting the statuscode here as a workaround + primaryControl.getAttribute("statuscode").setValue(353400000); + await primaryControl.data.save(); + primaryControl.data.refresh(false); + }); } export function reject(primaryControl: Xrm.FormContext): void { @@ -62,7 +73,7 @@ namespace DevelopmentHub.Develop { executeWebApiRequest(new RejectRequest(entity), "Rejecting solution merge.") .then(() => primaryControl.data.refresh(false)); } - + function executeWebApiRequest(request: any, progressIndicator: string): Promise { return new Promise((resolve, reject) => { Xrm.Utility.showProgressIndicator(progressIndicator); diff --git a/tests/DevelopmentHub.Tests.Unit/Develop/ImportSolutionZipTests.cs b/tests/DevelopmentHub.Tests.Unit/Develop/ImportSolutionZipTests.cs index 472d2b2..11f36ff 100644 --- a/tests/DevelopmentHub.Tests.Unit/Develop/ImportSolutionZipTests.cs +++ b/tests/DevelopmentHub.Tests.Unit/Develop/ImportSolutionZipTests.cs @@ -61,7 +61,7 @@ public void ImportSolutionZip_NoInjectedConfig_SetsError() } /// - /// Tests that the target instance URL is used when making the . + /// Tests that the target instance URL is used when making the . /// [Fact] public void ImportSolutionZip_PasswordGrantRequest_ResourceSetToTargetInstanceUrl() @@ -70,7 +70,7 @@ public void ImportSolutionZip_PasswordGrantRequest_ResourceSetToTargetInstanceUr this.MockAccessTokenResult(); var expectedResource = "https://targetinstance.crm11.dynamics.com"; this.OAuthTokenRepositoryMock - .Setup(o => o.GetAccessToken(It.Is(req => req.Resource == new Uri(expectedResource)))) + .Setup(o => o.GetAccessToken(It.Is(req => req.Resource == new Uri(expectedResource)))) .ReturnsAsync(new OAuthToken { AccessToken = "ACCESS TOKEN" }) .Verifiable(); this.oDataSolutionServiceMock.SetReturnsDefault(Task.FromResult(new ImportJobData()));