{"id":22695886,"url":"https://github.com/rajyraman/powerapps-solution-extract","last_synced_at":"2026-03-19T23:26:50.124Z","repository":{"id":79830564,"uuid":"291343157","full_name":"rajyraman/powerapps-solution-extract","owner":"rajyraman","description":"GitHub Action to extract, commit and release Power Apps Solutions.","archived":false,"fork":false,"pushed_at":"2020-12-11T18:28:47.000Z","size":19,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-19T23:23:05.368Z","etag":null,"topics":["alm","cds","powerapps"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rajyraman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-29T20:20:42.000Z","updated_at":"2024-04-04T19:50:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"0a4d9777-d882-43a3-ad74-1093625d780d","html_url":"https://github.com/rajyraman/powerapps-solution-extract","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/rajyraman/powerapps-solution-extract","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajyraman%2Fpowerapps-solution-extract","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajyraman%2Fpowerapps-solution-extract/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajyraman%2Fpowerapps-solution-extract/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajyraman%2Fpowerapps-solution-extract/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rajyraman","download_url":"https://codeload.github.com/rajyraman/powerapps-solution-extract/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajyraman%2Fpowerapps-solution-extract/sbom","scorecard":{"id":760140,"data":{"date":"2025-08-11","repo":{"name":"github.com/rajyraman/powerapps-solution-extract","commit":"a223b5a5fb182df63d5915c0b6cb363e38f43c25"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/8 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-22T23:10:05.443Z","repository_id":79830564,"created_at":"2025-08-22T23:10:05.443Z","updated_at":"2025-08-22T23:10:05.443Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29309593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T16:09:25.305Z","status":"ssl_error","status_checked_at":"2026-02-10T16:08:52.170Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alm","cds","powerapps"],"created_at":"2024-12-10T04:12:15.531Z","updated_at":"2026-02-10T17:30:58.333Z","avatar_url":"https://github.com/rajyraman.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Power Apps Extract Solution\r\n\r\nThis Action exports the specified solution in the source environment, extract and decomposes them them into individual components and commits them into the repo. This Action can also build the Managed and Unmanaged Solutions from the individual components in the repo, and publish these file to Release as assets.\r\n\r\n## Inputs\r\n\r\n| Input                | Required | Default | Description                                                                                                                                                                                                                                                                                                                                                          |\r\n| -------------------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\r\n| token                | ✅       | -       | [GitHub Personal Access Token](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token). This is required for downloading the solution files from Releases.                                                                                                                                                                      |\r\n| solutionName         | ✅       | -       | The Unique Name of the solution. This is used in Solution Upgrade step, if you are deploying a Managed Solution.                                                                                                                                                                                                                                                     |\r\n| sourceEnvironmentUrl | ✅       | -       | Environment URL from where the Solution will be downloaded from.                                                                                                                                                                                                                                                                                                     |\r\n| applicationId        | ✅       | -       | Application Id that will be used to connect to the Power Apps environment.Refer [Scott Durow's video](https://www.youtube.com/watch?v=Td7Bk3IXJ9s) if you do not know how to set Application Registration and scopes in Azure to facilitate this.                                                                                                                    |\r\n| applicationSecret    | ✅       | -       | Secret that will be used in the Connection String for authenticating to Power Apps. Use GitHub Secrets on your repo to store this value. Refer to [Using Encrypted Secrets](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#using-encrypted-secrets-in-a-workflow) on how to use this in your workflow. |\r\n| releaseSolution      |          | false   | By default, this Action does not publish the Managed and Unmanaged solutions into Releases. Set this to true, if you would like to do so. You need to publish the release with the solution files, if you are using the [Power Apps Deploy Solution](https://github.com/rajyraman/powerapps-deploy-solution/) Action.                                                |\r\n| branch               |          | main    | Branch to push the solution components to.                                                                                                                                                                                                                                                                                                                           |\r\n\r\n## Outputs\r\n\r\n| Output                      | Description                                                                                               |\r\n| --------------------------- | --------------------------------------------------------------------------------------------------------- |\r\n| solutionVersion             | Automatically generate Solution version number. The format of the version is yyyy.MM.dd.action_run_number |\r\n| solutionFileNameWithVersion | Solution File Name with the version number.                                                               |\r\n\r\n## Example\r\n\r\nBelow is an example on how to use [Power Apps Solution Extract](https://github.com/rajyraman/powerapps-solution-extract/) and [Power Apps Deploy Solution](https://github.com/rajyraman/powerapps-deploy-solution/) in your Workflow.\r\n\r\n```yaml\r\n# This workflow is run only manually, as it uses a workflow_dispatch. It is recommended to use cron or push into main branch to trigger this. Since this workflow also commits into the repo, use ignore tags to prevent infinite loop. Refer https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#example-ignoring-branches-and-tags\r\n\r\nname: extract-and-deploy\r\non:\r\n  workflow_dispatch:\r\n    inputs:\r\n      solutionName:\r\n        description: \"Solution Name\"\r\n        required: true\r\n        default: \"GitHubSolution\"\r\n      sourceEnvironmentUrl:\r\n        description: \"Source Environment URL\"\r\n        required: true\r\n        default: \"https://xxxx.crm.dynamics.com\"\r\n      targetEnvironmentUrl:\r\n        description: \"Target Environment URL\"\r\n        required: true\r\n        default: \"https://xxxx.crm.dynamics.com\"\r\n      release:\r\n        description: \"Release?\"\r\n        required: true\r\n        default: true\r\n      managed:\r\n        description: \"Managed?\"\r\n        required: true\r\n        default: true\r\n      debug:\r\n        description: \"Debug?\"\r\n        required: true\r\n        default: \"true\"\r\n\r\njobs:\r\n  build:\r\n    # The type of runner that the job will run on. This needs to be Windows runner.\r\n    runs-on: windows-latest\r\n\r\n    steps:\r\n      - uses: actions/checkout@v2\r\n\r\n      - name: Dump GitHub context\r\n        if: github.event.inputs.debug == 'true'\r\n        env:\r\n          GITHUB_CONTEXT: ${{ toJson(github) }}\r\n        run: echo \"$GITHUB_CONTEXT\"\r\n\r\n      - name: Extract Solution\r\n        id: extract-solution\r\n        uses: rajyraman/powerapps-solution-extract@v1.3\r\n        with:\r\n          token: ${{ secrets.GITHUB_TOKEN }}\r\n          solutionName: ${{ github.event.inputs.solutionName }}\r\n          sourceEnvironmentUrl: ${{ github.event.inputs.sourceEnvironmentUrl }}\r\n          applicationId: ${{ secrets.APPLICATION_ID }}\r\n          applicationSecret: ${{ secrets.APPLICATION_SECRET }}\r\n          releaseSolution: ${{ github.event.inputs.release }}\r\n\r\n      - name: Deploy Solution\r\n        id: deploy-solution\r\n        uses: rajyraman/powerapps-deploy-solution@v1.1\r\n        with:\r\n          token: ${{ secrets.GITHUB_TOKEN }}\r\n          solutionName: ${{ github.event.inputs.solutionName }}\r\n          targetEnvironmentUrl: ${{ github.event.inputs.targetEnvironmentUrl }}\r\n          applicationId: ${{ secrets.APPLICATION_ID }}\r\n          applicationSecret: ${{ secrets.APPLICATION_SECRET }}\r\n          tag: ${{ steps.extract-solution.outputs.solutionVersion }}\r\n          managed: ${{ github.event.inputs.managed }}\r\n\r\n        # This step below can be removed, if you do not want to send a notification to Teams about this solution deployment.\r\n      - name: Notify Teams\r\n        uses: fjogeleit/http-request-action@v1.4.1\r\n        with:\r\n          # Url to Power Automate Flow to notify about Solution Deployment\r\n          url: \"${{ secrets.FLOW_HTTP_URL }}\"\r\n          # Request body to be sent the Flow with HTTP Trigger\r\n          data: \u003e-\r\n            {\r\n                \"solutionFile\": \"${{ steps.deploy-solution.outputs.solution }}\",\r\n                \"tag\": \"${{ steps.deploy-solution.outputs.solutionVersion }}\",\r\n                \"environmentUrl\": \"${{ github.event.inputs.targetEnvironmentUrl }}\",\r\n                \"repoUrl\": \"https://github.com/${{ github.repository }}\",\r\n                \"runId\": \"${{ github.run_id }}\",\r\n                \"sha\": \"${{ github.sha }}\"\r\n            }\r\n```\r\n\r\n## Credits\r\n\r\n1. Wael Hamze for [Xrm CI Framework](https://github.com/WaelHamze/xrm-ci-framework)\r\n2. Microsoft for [PowerShellForGitHub](https://github.com/microsoft/PowerShellForGitHub)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajyraman%2Fpowerapps-solution-extract","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frajyraman%2Fpowerapps-solution-extract","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajyraman%2Fpowerapps-solution-extract/lists"}