Thank you for your interest in contributing to Technology Transfer Starter! This guide will help you set up your development environment and walk you through the contribution process.
Before you begin, ensure you have the following installed:
- Salesforce CLI
- Salesforce DX Extensions for VSCode
- CumulusCI
- Git
- Access to a Salesforce DevHub
To develop on this project, you need access to the namespace DevHub. Please contact Stewart Anderson at stewart.anderson@salesforce.com to request access.
Once you have access, authenticate to the DevHub:
sf org login web --set-default-dev-hub --alias TTSDevHubSet the DevHub as your default:
sf config set target-dev-hub=TTSDevHubCreate a scratch org using the Salesforce CLI:
sf org create scratch --definition-file orgs/dev.json --alias tts_dev --duration-days 30 --set-defaultThen connect it to CumulusCI:
cci org import tts_dev tts_devCreate a scratch org directly with CumulusCI:
cci org scratch dev tts_dev --days 30Deploy the solution to your dev org using CumulusCI:
cci flow run dev_org --org tts_devThis flow will:
- Update dependencies
- Deploy the metadata
- Assign required permission sets:
- Technology_Transfer_Starter_Visa_Management
- Technology_Transfer_Starter_Permission
- Technology_Transfer_Starter_Space_Manager
- Technology_Transfer_Starter_Mentoring_Manager
Make your changes in the org through Setup or using the Salesforce UI. You can also make changes directly to the source code in your IDE.
After making changes in the org, retrieve them back to your local source:
cci task run retrieve_changes --org tts_devReview the changes in your source directory to ensure only the intended changes were retrieved.
Create a QA org to test your changes:
sf org create scratch --definition-file orgs/dev.json --alias tts_qa --duration-days 30
cci org import tts_qa tts_qacci org scratch dev tts_qa --days 30Deploy to the QA org:
cci flow run qa_org --org tts_qaTest your changes thoroughly in the QA org to ensure:
- All functionality works as expected
- No regressions were introduced
- All automation and flows execute correctly
- Permission sets provide the correct access
Once you've validated your changes:
- Commit your changes to a feature branch
- Push the branch to GitHub
- Create a Pull Request (PR) targeting the
mainbranch - Provide a clear description of your changes and any testing performed
- Wait for code review and approval
To create a new 2GP package version:
sf package version create --package 0HoDm000000CaTXKA0 --target-dev-hub TTSDevHub --installation-key-bypass --code-coverage --wait 10This command will:
- Create a new package version
- Run Apex tests and validate code coverage
- Wait up to 10 minutes for the process to complete
- Return a package version ID (04t...)
After testing the package version, promote it to released status:
sf package version promote --target-dev-hub TTSDevHub --package 04t...Replace 04t... with the actual package version ID from the previous step.
Test the package installation in a scratch org:
sf package install --wait 20 --package 04t...Replace 04t... with the package version ID you want to test.
cci org listcci org info tts_devcci org browser tts_devcci task run deploy --org tts_dev
cci task run assign_permission_sets --org tts_devcci task run delete_data --org tts_devcci task run load_dataset --org tts_devforce-app/- Main source directory containing all metadataorgs/- Scratch org configuration filesrobot/- Robot Framework test filescumulusci.yml- CumulusCI configurationsfdx-project.json- Salesforce DX project configuration
- Follow Salesforce best practices for metadata development
- Use meaningful naming conventions
- Add comments to complex automation
- Ensure all Apex code has appropriate test coverage (minimum 75%)
- Test thoroughly before submitting PRs
If you encounter issues or have questions:
- Review the CumulusCI documentation
- Check the Salesforce CLI documentation
- Contact Stewart Anderson at stewart.anderson@salesforce.com
- Open an issue in the GitHub repository
By contributing to Technology Transfer Starter, you agree that your contributions will be licensed under the same license as the project.