How Do These Orgs Map to Non-Cloud Development Models?
Define a package and describe how Managed - Beta and Managed - Released packages are used in the development lifecycle.
List the types of orgs used in the development of an AppExchange app and the use of each org.
Describe why to treat the golden package org with the utmost care.
Ready to build your app, test it, and send it off to customers? As an AppExchange partner, you use many different orgs to get your app published. This module introduces the environments used in developing your app, how you create and manage them, and how you move your app between those orgs.
As an AppExchange Partner, you have orgs for development, testing, staging and packaging, demos, marketing, selling, and distributing your app. To create and manage orgs for development, you use the Environment Hub app.
The Environment Hub is installed in your business org. The business org also has all the apps and features for your marketing, sales, operations, and alliances teams to do their jobs.
The business org provided to you as a Salesforce partner has two licenses, which are usually assigned to people running your business.
You can create a Partner Developer Edition org to serve as a development management org and request that the Environment Hub app be installed there. This org comes with 20 licenses. You can assign those licenses to your development and quality assurance team members so that they can create and manage their own orgs.
Use the Environment Hub in your business org (1) to create a Partner Development Edition (PDE) org (2).
When you have the new PDE org, file a case in the Partner Community to request the Environment Hub app in the new org (3). This may take a couple of days.
Throughout your business, you are going to use many different types of orgs. For now, we focus on development, packaging, and testing orgs, which you use in app development. Packaging is the first step in distributing your app to customers.
Here’s a simple example using these three types of orgs during development.
You and your team develop your app in Partner Development Edition (PDE) orgs (1). How many PDE orgs do you set up? It depends on your needs and the number of developers in your team.
You merge configurations from the PDE orgs to a single beta packaging org (2) using a Salesforce migration tool.
Unlike our customers, AppExchange partners do not use sandboxes in development, so change sets can’t be used for deployment between your orgs.
In the beta packaging org (3), you create Managed - Beta packages for testing your app.
You install the beta package in a test org (4). The test org edition is based on the edition of your target customer. You can have multiple test orgs.
If you find issues, you and your team return to development in the PDE orgs.
When development is done, create a Managed - Released package in your beta packaging org. Send it to a fresh test org for a final check.
When your app is ready to launch, you create your final packaging org. We call this org the “golden package” org, because it’s important in the life of your app. You have only one golden package org per product, regardless of how many versions of the product you have.
You move your app to the golden package org using a migration tool (1). You then create a Managed - Released package (2) and perform at least one quality assurance run by installing the package into a fresh test org (3).
When your app is happily bundled in its managed package, you publish it privately on the AppExchange (1). It then goes through security review, which we’ve left out of the diagram. When it’s approved, you publicly publish the app. From there, customers install the package in their orgs (2).
Check out this table to see how your orgs map to non-cloud development environments.
These orgs provide the full range of functionality for creating your app.
Use this org to bring together development code, package it, and push it to test orgs. It must be a PDE org to create a managed package.
Test your app in the org editions that your customers use.
This org isn’t quite a staging environment, but it’s the launch pad from which your app will fly! It must be a PDE org to create a managed package.
Use this org for final sign-off before your app goes live.
Although we didn’t show it in our simplified path, we highly recommend storing metadata in a source control system, particularly if you’re working with multiple developers. You can use systems like Github or SVN, and you can find apps on the AppExchange designed for Salesforce.
If you’re looking on the AppExchange, make sure that the version control system supports partner development. As we mentioned earlier, our customers use sandboxes in development, which are a bit different.
Why does the business org have an Environment Hub app?
You can create many types of orgs with the Environment Hub app. For example, your sales teams can create demo orgs, and your operations team can create Trialforce Management orgs. Because these teams are usually in the business org, having an Environment Hub app in the business org is useful.
Why can’t I use the same Partner Development Edition org for my Environment Hub app, development, and packaging?
Maintaining separate orgs based on their use case supports a proper release process and adds security. The org containing the Environment Hub—the development management org—is used for creating and managing orgs. You might not want everyone to use it. And allowing development in that org leads to chaos!
Using an org that is solely for development allows developers to explore Salesforce and build your app without treading on anyone’s toes.
Your packaging org is like the printing plate for currency. You want to keep this org in a pristine, steady state and only modify it when your app is ready for release or update. Remember, when you release your app from this org, you use this org to package your app forever. So you want to lock down this org as much as possible.
One final note: Having the Environment Hub app in an org that contains a managed package can cause issues when creating a package version or pushing a package upgrade to your customers. So don’t even think of packaging in your development management org.
All that being said, some small teams use the same org for development and packaging. We use the same org in this module to make your life easier, but we don’t recommend it as a general practice.
What if my team is used to a different configuration of environments?
The configuration we’ve described here is just an example. You can use different configurations depending on your needs.
The configuration described here is just an example. You can use different configurations depending on your needs.
Create a PDE org for development management from your business org.
Enable the Environment Hub app in the development management org.
Create PDE orgs for development.
Create a PDE org for combining configurations and creating beta packages for testing.
Create test orgs that match your target editions.
Create a PDE org to use as your Golden Package org.
Create UAT (test) orgs for testing your golden package.
This process includes over seven different orgs—and you are likely to use even more.
We haven’t talked about all the orgs available to AppExchange partners, just those orgs used during development. And we’ve only introduced the Environment Hub app, not others used in selling your app, such as the License Management app.
In the next units, we dive into using the Environment Hub app, creating packages, and setting up test orgs. To get the most out of these units, make sure that you do the following.
Get your badge, then you’re off to play with the Environment Hub.