{"id":20806888,"url":"https://github.com/agentgill/spring-unlockedpackages","last_synced_at":"2026-04-19T23:32:05.141Z","repository":{"id":152507088,"uuid":"166676742","full_name":"agentgill/spring-unlockedpackages","owner":"agentgill","description":"Sample repository for getting started with Salesforce Unlocked Packing (2gp)","archived":false,"fork":false,"pushed_at":"2019-01-27T14:13:18.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-27T08:42:24.332Z","etag":null,"topics":["2gp","dx","metadata","salesforce"],"latest_commit_sha":null,"homepage":"https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_dev2gp_intro.htm","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agentgill.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2019-01-20T15:27:56.000Z","updated_at":"2019-01-27T17:40:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"6eac1b34-b72f-4f4d-b955-aa068c7e9757","html_url":"https://github.com/agentgill/spring-unlockedpackages","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/agentgill/spring-unlockedpackages","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentgill%2Fspring-unlockedpackages","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentgill%2Fspring-unlockedpackages/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentgill%2Fspring-unlockedpackages/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentgill%2Fspring-unlockedpackages/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agentgill","download_url":"https://codeload.github.com/agentgill/spring-unlockedpackages/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentgill%2Fspring-unlockedpackages/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32026619,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["2gp","dx","metadata","salesforce"],"created_at":"2024-11-17T19:28:07.560Z","updated_at":"2026-04-19T23:32:05.122Z","avatar_url":"https://github.com/agentgill.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Salesforce Weekly - Getting started with Unlocked Packages\n\n## Installation Instructions\n\n#### Setup your environment\n\n- Sign up for a Spring '19 pre-release org and enable Dev Hub\n- Install the pre-release version of the Salesforce CLI\n- Install Visual Studio Code\n- Install the Visual Studio Code Salesforce extensions\n\n#### Clone this repository\n\n```\ngit clone git@github.com:agentgill/spring19-unlockedpackages.git\n```\n\nCD into new directory\n\nSet sfdx defaultuser to be your source / production org\n\n```\nsfdx force:config:set defaultusername=xxx\n```\n\nEdit sfdx-project.json and set the path for your first package (e.g application-package) -\n\n```\n{\n  \"packageDirectories\": [\n    {\n      \"path\": \"\u003cUnlockedPackageFolder\u003e\",\n      \"default\": true\n    }\n  ],\n  \"namespace\": \"\",\n  \"sfdcLoginUrl\": \"https://login.salesforce.com\",\n  \"sourceApiVersion\": \"45.0\"\n}\n```\n\nmkdir which matches path from step 5 (e.g. application-package)\n\n```\n  mkdir \u003cUnlockedPackageFolder\u003e\n```  \n\n## Preparing Unlocked Package Source\n\n**Understanding Org Dependencies**\n- In Salesforce \u003e Setup \u003e Package Manager \u003e New Unmanged Package\n- Select changes which you intend to package\n- Try starting with central objects (Application_Event__c) or an App (Application Events)\n\n*Tip - this will help you indentify and understand dependencies* \n\n**Pulling Packaging source locally**\n\nIn order to create your Unlocked Package you need  pull the source down locally and convert it to DX.\n\n**Pull down unmanaged package created previously from the Salesforce UI**\n\n```\nsfdx force:mdapi:retrieve -p \u003cUnmanagedPackageName\u003e -u source -r  .\nunzip unpackage.zip\n```\n\nNext convert the unzipped source into the the DX source format using the following command\n\n```\nsfdx force:mdapi:convert -r \u003cUnzipedFolder\u003e -d \u003cUnlockedPackageFolder\u003e\n```\n\nYou are ready to create unlocked package from here...\n\n### Alternative ways to get package source\n\n**Use Python Script \u0026 CSV**\n\n- Add list of items to scripts/Build.csv\n- Run following bash script\n\n```\n. pull.sh\n```\n\nThis will output to the manifest/package.xml\n\n**IDE \u0026 Tools**\n\n- Use an IDE like **Illuiminated Cloud**\n- Use an online app like [Package Builder](https://packagebuilder.herokuapp.com/)\n\n**Salesforce CLI**\n\nUse the source retrieve command to bring down source\n\n```\nsfdx force:source:retrieve -m CustomObject,Layout\n```\n\nThis will pull down custom objects and all layouts - you can then manual narrow your package source down to what is required for your package\n\n## Create your first package\n\nLet's create our package using the source from the path specificed in the sfdx-project.json\n\n-v our packaging org  \n-r the path to the source (e.g. application-packaging)  \n-n the name of the package (will also become the package alias)  \n-e no namespace  \n-d description of the package  \n-t type of package e.g. unlocked  \n\n```\nsfdx force:package:create -v source -r application-package -n application-package -e -d \"application package\" -t unlocked\n```\n\nReview the sfdx-project.json for details of package\n\n## Create your first package version\n\nLet's create an installable version of our package\n\n-p this is our package name/alias  \n-d the path to the source  \n-x no installation key (no password in other words)  \n-w wait for X (syncronously wait for the package version is created)  \n-v our packaging org  \n\n```\nsfdx force:package:version:create -p application-events -d application-events -x --wait 10 -v source\n```\n\nReview the sfdx-project.json for details of package version\n\n## Useful Packaging Commands\n\nList Packages\n\n```\nsfdx force:package:list -v play\n```\n\nView Versions\n\n```\nsfdx force:package:version:list -v play\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagentgill%2Fspring-unlockedpackages","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagentgill%2Fspring-unlockedpackages","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagentgill%2Fspring-unlockedpackages/lists"}