Professional Documents
Culture Documents
© Copyright 2000-2007 salesforce.com, inc. All rights reserved. Salesforce.com and the “no software” logo are registered trademarks, and
AppExchange, “Success On Demand,” and “The Business Web” are trademarks of salesforce.com, inc. All other trademarks mentioned in
this document are the properties of their respective owners.
Table of Contents
Table of Contents
About AppExchange Packaging................................................................................................................................................3
AppExchange Basics.................................................................................................................................................................4
Preparing Your App for the AppExchange................................................................................................................................8
Tips for Building Your App.....................................................................................................................................................13
Packaging and Registering Apps.............................................................................................................................................17
Publishing and Listing Your App............................................................................................................................................22
Supporting Apps.....................................................................................................................................................................22
Index................................................................................................................................................................25
i
Table of Contents
ii
About AppExchange Packaging
Packaging Process
Before you begin, review the high-level process for packaging your app and making it available on the AppExchange:
3
AppExchange Basics
AppExchange Basics
The AppExchange gives Salesforce users a new venue to share pre-built customizable apps. To get started packaging your
apps for the AppExchange, review these basics:
About the AppExchange
Discover what it is and how it works.
AppExchange Concepts
Review the terminology used in this document and on the AppExchange.
4
AppExchange Basics
AppExchange Concepts
Review the following terminology used on the AppExchange:
AppExchange
The AppExchange is an on-demand application-sharing service from salesforce.com that allows you to
browse, install, and share apps and components built for the Apex platform.
The Apex platform combines a powerful user interface, operating system, and customization and integration
capabilities for CRM — plus a framework for development and deployment of new applications for your
entire enterprise. The Apex platform allows you to customize standard objects and build custom objects,
custom tabs, and custom s-controls.
Apps
A collection of Salesforce components such as tabs, reports, dashboards, and custom s-controls that
addresses a specific business need. You store an app in a package to upload it to the AppExchange.
Beta
An early version of a managed package that is uploaded to the AppExchange for a sampling of your
intended audience to test it. For more information on how beta versions of managed packages behave,
see "Using Beta Versions of Managed Packages" in the Salesforce online help.
Certify
Apps marked "AppExchange Certified" have been inspected by salesforce.com to ensure that they meet
salesforce.com's standards for AppExchange apps. For more information about app certification, go to
www.appexchange.com.
Deploy
Deploying an installed app makes any custom objects in the app available to users in your organization.
Before a custom object is deployed, it is only available to administrators and any users with the "Customize
Application" permission.
5
AppExchange Basics
Developer
The developer of an app is the Salesforce user who created the app and its components. The developer
of an app can be different than the publisher or they can be the same person.
Extension
An extension is any package, component, or set of components that adds to the functionality of a managed
package. An extension requires that the base managed package is installed for it to work.
Feature
A set of components within a package that the developer has categorized as a unit of functionality that
can be enabled as a whole. Installers can enable or disable the features in a package after installation.
Features allow developers to arrange a set of components for an app within one package that will work
for different Salesforce Editions.
Install
Incorporating the contents of a package into your Salesforce organization. A package on the AppExchange
can include an app, a component, or a combination of the two.
Installer
The installer of an app is the person who installed the app from the AppExchange into their Salesforce
organization.
License Management App
The License Management App is a free Salesforce app that you can install from the AppExchange and
use to track information about your package and the Salesforce subscribers who install it.
License Management Organization
A license management organization is the Salesforce organization that you use to track all the Salesforce
subscribers who install your package. A license management organization must have the License
Management App installed. It automatically receives notification every time your package is installed or
uninstalled so that you can easily notify users of upgrades. You can specify any Enterprise, Unlimited, or
Developer Edition organization as your license management organization when you configure your
developer settings.
Managed Package
Managed packages are AppExchange packages that can be upgraded in the installer's organization. They
differ from unmanaged packages in that some components are locked, ensuring a smoother upgrade
process. Unmanaged Packages do not include locked components.
Namespace prefix
A namespace prefix is a one to 15-character alphanumeric identifier that distinguishes your package and
its contents from packages of other developers on the AppExchange. Your namespace prefix must be
globally unique across all Salesforce organizations. It keeps your managed package under your control
exclusively.
Package
The container for an app and its components. You use packages to bundle an app along with any related
components so that you can upload them to the AppExchange together.
Before the Winter '07 release, all packages were unmanaged. Now, you can convert an unmanaged package
to managed to ensure your installed users get upgrades.
Personal Sharing
The process of privately sharing a registered package on the AppExchange using an unlisted URL without
making it public.
Publish
Publishing your app makes it publicly available on the AppExchange. Apps can be found under specific
categories and by doing a search.
6
AppExchange Basics
Publisher
The publisher of an app is the Salesforce user or organization that published the app on the AppExchange.
Publishers are required to register using their contact information after registering their app on the
AppExchange.
Register
Registering your app creates a link to it and any collateral on the AppExchange. When you register your
app, you will receive a URL that you can share with others privately. All apps on the AppExchange must
be registered. After registering your app, you may want to publish it if you want to make it publicly
available.
Share
Allowing other Salesforce users to install your app or components into their Salesforce organizations.
Test Drive
A test drive, also known as a demo, is a fully functional Salesforce organization that contains an app and
any demo records added by the app publisher. It allows users on the AppExchange to experience an app
as a read-only user using a familiar Salesforce interface.
Unmanaged Package
Unmanaged packages are completely editable in both the installer's and developer's organization and are
not upgradeable. All packages are unmanaged unless otherwise indicated by one of the following managed
icons:
• Managed - Beta
• Managed - Released
• Managed - Installed
Upgrade
Upgrading an app is the process of installing a newer version. Salesforce supports upgrades for managed
packages that are not beta.
Upload
Uploading a package sends it to the AppExchange. Uploading your app is just the first step; all apps on
the AppExchange must be registered, making them privately available. The final and optional step is to
publish it, making it publicly available on the AppExchange.
7
Preparing Your App for the AppExchange
Note: Only public list views are installed. If a custom object has any custom list views that you want to include in
your package, ensure that the list view is accessible by all users. For information on list view visibility, see "Creating
Custom List Views" in the Salesforce online help.
8
Preparing Your App for the AppExchange
Branding Considerations
Consider the importance of branding while designing your app. Determine a meaningful and powerful brand that you can use
consistently on the AppExchange to identify your app. See the AppExchange Partner Logo and Naming Guidelines on
www.appexchange.com for app logo and naming conventions.
Composite apps
Composite apps are built with a combination of the Apex platform and external services. The external
services may be publicly available and free, such as Google maps or FedEx package tracking services, or
they may be services that you create and sell. See Charging for Use of Your App on page 10. Composite
apps are also the best way to protect your intellectual property at this time.
Client apps
Client apps are built using only the Apex API to access the Salesforce service. They do not alter or
customize the Salesforce user interface. For example, Outlook Edition transfers emails directly from
Microsoft® Outlook® into the Salesforce service without ever leaving the Outlook application on your
client.
9
Preparing Your App for the AppExchange
Prepare your app or components carefully before you publish. Use the guidelines below to help you determine what and how
to publish:
Choosing custom tabs
The Tab Style for a custom tab must be unique within your app. However, it does not need to be unique
within the organization where it is installed. A custom tab's style will not conflict with an existing custom
tab in the installer's environment.
If you want to provide custom tab names in different languages, see "Renaming Tab and Field Labels"
in the Salesforce online help. Installers will not be able to edit these from a managed package but they
will be able to add additional languages using the translation workbench and provide translated names
for other types of components.
Custom home page components
When you package a custom home page layout, all the custom home page components on it are
automatically added. Standard components such as Messages & Alerts are not included in the package
and do not overwrite the installer's Messages & Alerts. To include a message in your custom home page
layout, create an HTML Area type custom home page component that contains your message and add it
to your custom home page layout.
Custom home page layouts
Once installed, your custom home page layouts are listed with all the installer's home page layouts.
Distinguish them by including the name of your app in the custom home page layout name.
Custom report types
Custom report type names must be unique within an organization.
Tip: To ensure that the names of your custom report types will not conflict with those in an
installer's organization, consider making a managed package so that all of your custom report type
names contain your namespace prefix.
10
Preparing Your App for the AppExchange
Components such as documents, email templates, reports, or dashboards are stored in new folders in the
installer’s organization using the publisher’s folder names. Give these folders names that indicate they are
part of the package.
Naming custom objects and apps
Custom object and app names must be unique within an organization.
Tip: To ensure that the names of your custom objects and apps will not conflict with those in an
installer's organization, consider making a managed package so that all of your custom object and
app names contain your namespace prefix.
Page layouts
The page layout of the person uploading a package is the only one installed for Group and Professional
Edition organizations and becomes the default page layout for Enterprise, Unlimited, and Developer
Edition organizations. Enterprise, Unlimited, and Developer Edition organizations receive any additional
page layouts for the custom objects included in the package. Give these page layouts meaningful names
for the app.
Translation workbench
If you have enabled the translation workbench and added a language to your package, any associated
translated values are automatically packaged for the appropriate components in your package. Make sure
that you have provided translations for all possible components.
An installer of your package can see which languages are supported on the package detail page. The
installer does not need to enable anything for the packaged language translations to appear. The only
reason they may want to enable the translation workbench is to change translations for unmanaged
components after installation or to translate into additional languages.
If you are designing an extension, you can include translations for the extension components but not
additional translations for components in the base package.
Workflow
Salesforce prevents you from uploading workflow alerts that have a public group, partner user, or role
recipient. Change the recipient to a user before uploading your app. During installation, Salesforce replaces
that user with the user installing the app, and the installer can customize it as necessary.
Salesforce prevents you from uploading workflow field updates that change an Owner field to a queue.
Change the updated field value to a user before uploading your app. During installation, Salesforce replaces
that user with the user installing the app, and the installer can customize it as necessary.
Salesforce prevents you from uploading workflow rules, field updates, and outbound messages that reference
a record type on a standard or managed-installed object.
Salesforce prevents you from uploading workflow tasks that are assigned to a role. Change the Assigned
To field to a user before uploading your app. During installation, Salesforce replaces that user with the
user installing the app, and the installer can customize it as necessary.
You can package workflow rules and all associated workflow actions, such as alerts and field updates.
However, any time-based triggers will not be included in the package. Notify your installers to set up any
time-based triggers that are essential to your app.
Note: All the information in the components you package and publish will be visible to anyone on the AppExchange.
You will not be able to hide the content of a custom s-control, formula, or any other component that contains your
code.
11
Preparing Your App for the AppExchange
Registering an app shares it privately. Registered apps are like unlisted phone numbers. They do not appear in any categories
or in search results on the AppExchange. If you give friends the URL for one of your registered apps, they can go directly to
the listing for this private package on the AppExchange. This is called personal sharing. Also, like unlisted phone numbers,
if someone has the URL, they can get access to the package.
A second layer of protection is provided in the form of a password. You can protect a package with a password when it is
uploaded so that only those with the password have access to the package contents. Salesforce prompts you for a password
when installing a registered or published app.
To share your app privately, follow these steps:
• Upload your app
• Create a demo
• Register your app
To share your app publicly, follow these steps:
• Upload your app
• Create a demo
• Register your app
• Publish your app
Go to www.appexchange.com for information on publishing your app.
12
Tips for Building Your App
Note: The security settings associated with the standard objects and other existing custom objects in an installer's
organization are unaffected.
You may have many different types of collateral for your app. We recommend publishing your app on the AppExchange with
the following types of documentation:
About tab
Most apps are installed by an administrator. Therefore, most users will not be aware of the app until it is
deployed. After deployment, an About tab is very useful to users and should give them an introduction
to the entire app.
An About tab is a custom tab included with an app on the AppExchange. It provides users with:
• Description of the app
• Training and support information
Providing users with training options is the best way to ensure customer adoption of your app. Similar to
the way that salesforce.com provides free training, you should provide user training for commercial
applications either through webinars or recorded presentations. Include a section in your About tab that
covers how to get training on the app.
If users of your app call salesforce.com for assistance, we will try to determine if the issue resides with our
application or yours. We can only support our application, our standard user interface, and the installation
of apps from the AppExchange. If the customer is asking about functionality that is unique to your app,
we will ask them to examine the About tab for information on how to get support for your app. We expect
commercial apps to provide support that is similar to the support salesforce.com offers and that the About
tab contain contact information for this support.
13
Tips for Building Your App
Note: An About tab adds to an organization's total number of custom tabs. Consider "App Setup
Limits" in the Salesforce online help for each Edition before creating an About tab that could
make an installer exceed the limit of allowed custom tabs.
Configure option
You can include a Configure option for installers of your app when they view theAppExchange downloads
and app detail pages in their Salesforce organization. This option can link to installation and configuration
details like:
• Adding custom fields and custom links to standard objects
• Requesting or executing an end user license agreement
• Provisioning the external service of a composite app
The Configure option is included in your package as a custom link. You can create a custom link for your
home page layouts and add it to your package. To do this:
1. Create a custom link to a URL that contains configuration information or s-control that implements
configuration. See "Defining Custom Buttons and Links" in the Salesforce online help.
Tip: When you create your custom link, set the display properties to Open in separate
popup window so that the user returns to the same Salesforce page when done.
2. When you create the package, choose this custom link in the Configure Custom Link field of your
package detail. For information on creating a package, see "Creating Packages and Uploading Apps"
in the Salesforce online help.
Multimedia presentation
If you are publishing a commercial app, we recommend compiling a presentation, such as a Breeze
presentation, to demonstrate its attributes.
Data sheet
Give installers the fundamental information they need to know about your app before they install.
Customization and enhancement guide
Let installers know what they should customize after installation as part of their implementation.
Custom tab splash page
You can add a splash page to any custom tabs in your app. Custom splash pages can include information
about using the custom tab and custom object with links to additional information. They include a
Continue button and a Don’t show me this again button.
Create the splash page for your app in the form of a custom link for home pages via Setup ➤ Customize
➤ Home ➤ Custom Links. Custom links can be a URL to an HTML page or a custom s-control. Create
your custom splash page as a Home tab custom link and then add it as the splash page option to any
custom tabs you plan to upload to the AppExchange.
Online help
You can also provide online help from the detail pages of each record. To do so, create custom links or
custom formula fields to point to your help files. Then, put a custom link in the Web Links section of
your page layout or embed custom formula fields in another section of your page layout. Note that you
cannot override the Salesforce online help links that appear on each page.
Alternatively, you can provide custom help for your custom object records and custom fields. For more
information on field-level help and object-level help, see "About Custom Help" in the Salesforce online
help.
14
Tips for Building Your App
• Your presentation should be focused on the value of your app and provide a brief introduction to your company.
• Make sure the target audience for your presentation is users and not Salesforce.
• Your presentation should not be focused on the Apex API.
• Your overall message should be understandable, clear, and concise.
15
Tips for Building Your App
Uninstalling Apps
Users can remove an installed app following the uninstall instructions in the Salesforce online help. By doing an uninstall,
users can remove all the components of an app in their organization with a single click and confirmation. However, the
publisher of the app will not be notified when an uninstall occurs unless the app is based on a managed package and the
publisher has installed the License Management App.
16
Packaging and Registering Apps
An app can contain many different components. To group components in a container to upload to the AppExchange, create
a package and add components to the package. A package is the container for the app that you must use to upload all its
components together. Before you begin, determine if you want to upload a managed or unmanaged package. For more
information about managed packages, see "About Managed Packages" in the Salesforce online help.
To create a package:
1. Click Setup ➤ Exchange ➤ Shared Apps.
2. Click New.
3. Enter a name for your package. This does not have to be the same name that appears on the AppExchange.
4. Optionally, choose a custom link from the Configure Custom Link field to display configuration information to
installers of your app. You can select a predefined custom link to a URL or s-control that you have created for your home
page layouts; see the "Configure option" in the Salesforce online help. The custom link displays as a Configure link within
Salesforce on the AppExchange Downloads page and app detail page of the installer's organization.
5. Optionally, enter a description that defines the package. You will have a chance to change this description before you
upload it to the AppExchange.
6. Click Save.
7. Add the necessary components for your app.
a. Click Add.
17
Packaging and Registering Apps
b. From the drop-down list, choose the type of item you want to add to your package.
• At the top of the list, click a letter to display the contents of the sorted column that begin with that character.
• If available, click the Next Page (or Previous Page) link to go to the next or previous set of items.
• If available, click fewer or more at the bottom of the list to view a shorter or longer display list.
Note: Some types of components cannot be added to Managed - Released packages. For a list of these
items. see "Properties of Managed Components" in the Salesforce online help.
9. Enter a Version Number for the upload such as version 1.0a. This is how you will identify this upload of the package.
10. For managed packages, select a Package Status:
• Choose "Managed - Beta" if you want to upload a version of your package to a small sampling of your audience for
testing purposes. You will still be able to change the components and upload additional beta versions. For information
on beta versions, see "Using Beta Versions of Managed Packages" in the Salesforce online help.
• Choose "Managed - Released" to upload an upgradeable version. After upload, some attributes of your components
will be locked. For a list of locked attributes, see "List of Locked Components" in the Salesforce online help.
18
Packaging and Registering Apps
Give other Salesforce users a chance to test drive your app within a new Salesforce environment by creating a test drive. Test
drives are as safe and secure as any other Salesforce environment. In your test drive, you can add appropriate sample data and
allow users to try the app using the standard Apex on-demand platform.
A test drive is a new fully functional Developer Edition Salesforce environment that contains your app. It will be read-only
to AppExchange viewers. Your app does not require a test drive to be published on the AppExchange. However, a test drive
is registered along with your app and is one of the collateral pieces that the AppExchange hosts for you.
To create a test drive:
1. Click Setup ➤ Exchange ➤ Shared Apps.
2. Select the package you want to associate with the new test drive.
3. Select the version number that you want to associate with the new test drive.
4. Click Create Test Drive.
5. Enter the upload name. This is used as part of your username for the Salesforce environment that is created for your app's
test drive.
Salesforce creates two usernames for your test drive.
admin@upload_name.com
The username you can use to add sample data for the test drive.
eval@upload_name.com
The username you can use to see how other users will experience your app's test drive; it is a restricted
read-only user that is not allowed to save any data. When this user logs in, he or she always sees the
default custom app for the "Restricted Read Only" profile.
6. Click Create Test Drive.
7. Click Done.
You will receive an email with login information for your test drive organization when it has been created. Test drives take
just a few minutes to create. You can check the progress of your request for a test drive organization by viewing the detail
page for the upload.
8. Next, use the login information in the confirmation email to log in to your test drive organization and enter sample data
that shows off the usefulness of your app.
Note: If you are creating a test drive for an extension, Salesforce simply creates a test drive environment. After
that, log in to the test drive environment and install both the base package and extension for your uploaded package.
9. When you are ready for others to use your test drive, click the AppExchange URL from the upload detail page, click the
Edit link, and enter the Test Drive User Name and Test Drive Password for your test drive. For example:
Test Drive User Name: eval@upload1.com
Tip: If you are building an AppExchange app designed for Group and Professional Edition organizations, be sure
to test it using those Editions. Contact your partner success manager about gaining access to the proper test
environment.
19
Packaging and Registering Apps
Remember that your app is not listed on the AppExchange until you register and post it. Go to www.appexchange.com for
information on creating your listing, assigning a publishing profile, and posting your listing.
Tip: We recommend you create your test drive before you register your app so that you can register your test drive
along with the app.
20
Packaging and Registering Apps
• Check the links on your About tab and make sure they reference an external domain where appropriate.
• Check any documents in the Documents tab within the test drive:
• Check the Documents tab to be sure it only contains documents that are appropriate.
• Remove any documents that contain suspicious materials.
Registering Apps
Whether you are sharing your app privately or publicly, you must first register it to make it available on the AppExchange.
After registering your app, salesforce.com sends you a confirmation email including a URL that you can share with others.
Send this URL to others if you would like to share the app privately.
Registered apps have the same functionality as published apps but do not expose the listing to the public. Publish your app
after registration if you want to make it publicly available on the AppExchange.
To register a package:
1. Click Setup ➤ Exchange ➤ Shared Apps.
2. Select the package that contains the app you want to register.
3. Choose the version number you want to register.
4. Click Register. Salesforce displays the URL to your app on the AppExchange. Send this URL to others if you want to
share the app with them privately.
Note: If this option is not available, you may need to change your session security settings.
5. Optionally, click Continue and enter the information about your app that you want displayed when users click the URL
for your app. For privately shared apps, this information is just as private as your app. If you choose to later publish your
app on the AppExchange, this information becomes part of your app's information page.
6. Click Save to save the information you entered.
21
Publishing and Listing Your App
7. Optionally, publish your app to make it publicly available to the entire Salesforce community on the AppExchange.
Supporting Apps
After your app is available on the AppExchange, provide support for it using Salesforce and the AppExchange:
Provide end user support
Be prepared for users who may call requesting support.
Promote your app
Get your app the attention it needs.
Find out how to upgrade
Provide a solution for upgrades to your app.
Monitor usage of your app
Track who has installed your app.
Lock down your app
Be prepared if an installing administrator deletes an essential component.
Bill for use of your app
Currently, salesforce.com does not support billing users for partner apps.
View a checklist for success
Consider the dos and don'ts of posting your app.
Frequently asked questions
Consult the frequently asked questions on the AppExchange website.
Upgrading Apps
22
Supporting Apps
Salesforce supports upgrades for managed packages only. Publishers can publish an upgrade for a managed package and notify
installers that the new version is available. Installers of a managed package can then install the upgrade as follows:
1. Before you install an upgrade, determine if the app you installed was from a managed package. Look for the Managed
- Installed icon on the detail pages for each component and on the list of packages installed.
If the app you installed is not from a managed package, upgrades for it are not available.
2. Then, install the upgrade in the same way you would install any other app from the AppExchange directory. If the publisher
provided a link to the new version, follow the link to the app posting and install it in your organization. The first page of
the install wizard lists the current version you have installed, the version you are about to install, and a list of additional
components included in the new version.
Note: Notes about upgrading managed packages:
• All existing custom objects that were previously deployed will still be deployed. Salesforce prompts you to deploy
any new custom objects or previously undeployed custom objects.
• If your upgrade does not complete successfully, Salesforce displays a message indicating why and lists any components
that did get installed or altered in the process.
• Profile settings are editable but not upgradeable. After upgrading, update the profile settings for any custom objects
included in the package. The developer can make changes to profile settings after releasing them, but those changes
will not be included in an upgrade.
• If the developer chooses to add universally required custom fields, the fields will have default values.
• When you install two apps from the same developer, you may receive duplicate components. For example, the
same custom field included in both managed and unmanaged packages will be installed as two separate custom
fields: one without a namespace prefix from the unmanaged package and one with the namespace prefix that is
upgradeable from the managed package.
• If the developer activates an additional language in an upgrade for which the installer added translated terms,
Salesforce prevents the upgrade until the installer removes the conflicting translations.
• Translation workbench values for components that are "editable but not upgradeable" based on the properties of
managed components are excluded from upgrades.
23
Supporting Apps
Do
• Try to match the Salesforce user interface. For information on detecting the user interface theme and adhering to Salesforce
user interface styles, see Using the Salesforce CSS in Your Apps.
• Provide online help when possible or screens that document the app's intended use clearly.
• Upload your documentation files to the Documents tab and store them in a folder that is specific to your app. Include help
and support keywords for these documents so that they show in search results.
• Review all test drive data, including text and images, for content that might be considered offensive.
Do Not
• Require a browser setting that is not standard.
• Restrict your app to a single browser as this can increase support costs and efforts.
• Store usernames and passwords in your external service. Instead, use User ID to identify the actual user and Session
ID to retrieve the necessary information.
• Use real contact information as test drive data.
• Use the word "force" in your app name or label.
• Target your presentation to salesforce.com. Your target audience should be your intended customer.
• Publish apps with deprecated API calls. Always use the latest available API.
• Create a test drive that attempts to store new data or change data to existing records. Because users viewing your test drive
have read-only capability, changes made outside of Salesforce but within the test drive could fail.
24
Index
Index
A AppExchange (continued)
terminology 5
Apex test drive 19
designing apps 10 test drive checklist 20
AppExchange upgrading apps 22
about 5 uploading apps 17
apps 7 Apps
creating demos 19 uploading 17
creating packages 17
data sheet checklist 15
designing apps 10
P
determining visibility 11 Packages
developing app documentation 13 creating 17
presentation checklist 15 uploading 17
registering apps 21
25