One important note is that this guide does not include the steps required to sign-up to be an ISVForce partner because you are not required to be an ISVForce partner to publish an AppExchange app. ISVForce partners benefit from access to a license management org/app, as well as Trialforce, but are also required to share 15% of the app revenue with Salesforce. The process of becoming an ISVForce partner takes 8-10 weeks to complete, and can be initiated by contacting your regional ISVForce account exec or opening a case in your Partner Portal (step 2 below). Again, it is not necessary to be an ISVForce partner to publish an app in the AppExchange.
So here are the steps. I numbered each step because the order is fairly important - in most cases, you cannot move forward without completing the previous step.
1) Create a Dev Org
This is the org you use to develop your app and create the initial app packages. If you haven't done this already, you can get free developer editions here. I normally have several dev orgs, and use them for development, testing and packaging. Don't wait until you are done developing to continue the process - when your app is close to being done, you should start thinking about the next steps.
2) Become a Salesforce.com Partner
The Salesforce Partner Portal allows you, as SFDC states, to "join the Salesforce.com Partner Ecosystem". You can register to the Partner portal here. This is a very important step because virtually all future steps start in the Partner Portal, or from an org that was created using the Partner Portal.
3) Create Test Orgs
One of the benefits of being a Salesforce Partner is that you can create lots of test orgs that you can use to test the packages you created in the Dev Orgs from step 1 with different licenses and configuration options. This is a very important step, especially if you want Group and Professional users to use your app. From the Partner Portal, you can request orgs that include the following licenses: Enterprise, Platform, One-App, Professional, Group, and Non-Profit. To get a Test Org, you need to login to the Partner Portal (from step 2), click on the "Create a Test Org" button or link, select the edition you want to test with in the dropdown, and submit.
4) Create a Partner Dev Org
Partner Dev Orgs are beefier versions of regular dev orgs. You will use this org to store and package your production code (Managed - Released), and later create upgrades and push patches. Although you can use a regular org for this step, I prefer the bigger org that is available to you as a partner. To get a Partner Dev Org, you need to login to the Partner Portal (from step 2), click on the "Create a Test Org" button or link, select the "Partner Developer Edition" option in the Edition dropdown, and submit. Once you create your final managed released package, be sure to go test it again in the Test Orgs you created in step 3.
5) Create an AppExchange Provider Profile
By now you should have a Managed - Released package in your Partner Dev Org (step 4). You don't need to have your ready-for-primetime package yet, but you should be pretty close. Creating an AppExchange provider profile will allow you to list and publish your AppExchange App. To create your AppExchange profile, log into your Partner Dev Org and click on the link provided on the detail page of your latest package; then click on the Start Publishing button to create your AppExchange provider profile. When creating your profile, it is very important that you link the profile to the Partner Portal user you created in step 2. The user name and password for the AppExchange provider profile will be the same as your Partner Dev Org credentials from step 4.
6) Create an AppExchange App Listing
Once you have an AppExchange Provider Profile, you can go to the Publishing tab, where you can create a new listing. A new listing is always private until the app passes the security review. While private, your app has a link on the AppExchange (which you can send to potential users), but it is not listed publicly and does not show up in searches. In this step you need your marketing and messaging content to be ready - some of the fields are very specific (like max length of certain text, and exact image size for logos), so you will probably need to edit your private listing a few time before it is ready to be published.
7) Submit Your App for Review
To go live on the AppExchange (make your listing public), your app needs to pass a security review by Salesforce. To start that process, you need to go to your private listing and click on the Offering tab. In the "Your Uploaded Packages" section, select the latest version of your app in the dropdown and click the "Start Review" link in the packages table. Only Managed-Released packages show up in the dropdown, so make sure you already created one before you go through this step. Once you start the review process, a case is automatically added to the Partner Portal (step 2) and you will receive an email with further instructions. It takes 6-8 weeks to gather and submit test result, pay the $300 fee, and go through the process. There are lots of moving parts in this step, so I may put together another post just for this step later on so stay tuned.
8) Create Test Drive Org
The Test Drive Org, gives your users the ability to sample your app before they install it. If set up, the AppExchange listing includes a Test Drive link that logs the user into a preconfigured developer edition org as a read-only user. If users of your app need edit/create credentials to make the demo useful, you should probably skip this step. To set up a Test Drive, Go to the Offering tab in your app listing (from step 6). In the "Test Drive" section click on the "Create Test Drive" link to get started. You'll need to create appropriate demo data and configure your application once the org is created - note that the admin user name for the new org is user@
9) Create Lead Management Org
Salesforce allows you to manage your leads even if you are not an ISVForce partner. However, that means that you'll need to get a Salesforce org (and pay for licenses) to be able to manage the leads from the AppExchange. You can link any standard Salesforce Org (not dev org) that has web-to-lead enabled. In lieu of having the License Management Application that is available to ISVForce partners, you can add custom fields and objects to your org to help you manage licenses. You can link the AppExchange listing to your Salesforce org, go to the Leads tab in your app listing (from step 6), and click on the "Change Organization" link.
That's it. Once your security review process from step 7 is complete, you application will be public on the AppExchange!