Difference between revisions of "Package Items"

From AgileApps Support Wiki
imported>Aeric
imported>Aeric
 
(165 intermediate revisions by the same user not shown)
Line 1: Line 1:
Platform elements can be selected for inclusion in a [[Package]] as ''package items''. When selected, dependent elements are automatically included. Items that are related, but upon which the selected item does not actually ''depend'' are excluded by default--although they can generally be selected manually, if desired.
Platform elements that are included in a [[Package]] are known as ''package items''.  
 
This page details when items are included in the package, when they are installed in the target system, and when old items that have been removed from the source system are deleted from the target system, as well.
 
The information provided here is the foundation for the companion article: [[Choosing a Deployment Strategy for Development Systems]]


====Standard Dependencies====
====Standard Dependencies====
When an item is selected for packaging, dependent elements are automatically included. Items that are related, but upon which the selected item does not actually ''depend'' are excluded by default--although they can generally be selected manually, if desired.
:{| border="1" cellpadding="5" cellspacing="0"
:{| border="1" cellpadding="5" cellspacing="0"
! Platform Element !! Dependent Elements
! Platform Element !! Dependent Elements
Line 14: Line 20:
* Includes [[Dashboards]] that are visible to all, a [[Role]], or a [[Team]]. (Does not include private dashboards.)
* Includes [[Dashboards]] that are visible to all, a [[Role]], or a [[Team]]. (Does not include private dashboards.)
* Includes all [[Pages]] used in [[Dashboards]], [[Web Tabs]], and [[Sites]], as well as all Pages invoked by an [[Pages#Display a Page by Clicking an Action Button | Action Button]]
* Includes all [[Pages]] used in [[Dashboards]], [[Web Tabs]], and [[Sites]], as well as all Pages invoked by an [[Pages#Display a Page by Clicking an Action Button | Action Button]]
* Includes all [[Reports]] that are attached to an included dashboard. (Does not include other reports. They can be selected separately.)
* Includes all [[Reports|Application Reports]] that are visible to all or that are visible to an application Role.
* Includes all [[Roles]] used in the application
* Includes all [[Roles]] used in the application
* Includes all [[Sites]] defined in the application
* Includes all [[Sites]] defined in the application
Line 28: Line 34:
|
|
* Includes all object settings and object relationships, including [[Record Locators]]
* Includes all object settings and object relationships, including [[Record Locators]]
* Includes all objects that are the target of a Lookup<br>''Note:''
* Includes all objects that are the target of a [[Lookup]]<br>''Note:''
** Does ''not'' automatically include objects that have a Lookup to the current object.
** Does ''not'' automatically include objects that have a Lookup to the current object.
** If such ''Related Objects'' are not included in the package, any [[Related Information]] sections defined in object forms are automatically removed.  
** If such ''Related Objects'' are not included in the package, any [[Related Information]] sections defined in object forms are automatically removed.  
Line 43: Line 49:
* Includes [[Web Forms]]
* Includes [[Web Forms]]


*''Excludes'' [[Reports]] and [[Web Forms]]<br>Reports can be individually selected. Reports on an object are not automatically included.
*''Excludes'' [[Reports]]<br>Reports can be individually selected. Reports on an object are not automatically included.
*''Excludes'' data<br>Data is not included automatically. Java code can be written to create [[Package Data]] classes that add selected records during packaging, and that take the records out when the package is installed.
*''Excludes'' data<br>Data is not included automatically. Java code can be written to create [[Package Data]] classes that add selected records during packaging, and that take the records out when the package is installed.


Line 65: Line 71:
*[[Page]]s
*[[Page]]s
|
|
|-
|valign="top"|
*[[Processes]]
|
*The [[Business Hours Calendar]] used in processes.<br>(A calendar modified by the installer is never overwritten, so installers are free to modify the calendar to suit their purposes.)
*[[Teams]] and [[Roles]] used in Process tasks


|-
|-
Line 100: Line 99:
*Includes Teams and Roles involved
*Includes Teams and Roles involved
*Includes Child Teams if the ''Include Child Teams'' option is selected for that team
*Includes Child Teams if the ''Include Child Teams'' option is selected for that team
|-
|valign="top"|
*Template
|
|-
|valign="top"|
*Template Access URL
|
*Includes Template.
*Includes [[Application]].
For more information about Templates, see [[How to Create a Custom User Interface (CUI)]].


|-
|-
Line 129: Line 141:
|{{:Packaging Objects in a Master-Detail relationship}}
|{{:Packaging Objects in a Master-Detail relationship}}
|}
|}
::;Template Access URL:Templates and [[Application]] included as dependencies. For more information about Templates, see [[How to Create a Custom User Interface (CUI)]].


====Items that are Never Packaged====
====Items that are Never Packaged====
These platform elements are never added to a package. Customizations made by the subscriber remain intact.
These platform elements are never added to a package. Customizations made by the subscriber remain intact.
:* [[Access Profiles]]
:* [[Access Profiles]]
:* [[Business Hours Calendars]]
:* [[Knowledge Base]] articles
:* [[Knowledge Base]] categories
:* [[SLAs]]
:* [[SLAs]]
:* [[User]] records


====How Package Items are Applied====
====How Package Items are Applied====
Line 141: Line 154:


=====Principles=====
=====Principles=====
:* New items in the Package are ''added'' to the subscriber's system, while items with the same ID are ''replaced''.
:* New items in the Package are ''added'' to the subscriber's system, while items with the same ID are ''replaced'', or updated.
::: '''Note:'''
::: '''Note:'''
::: All aspects of an object (fields and forms, validations, and so on) are given a ''Globally Unique ID'' or {{^GUID}}. Those IDs are preserved when the package is installed, which allows existing items to be replaced while new items are added. (When the ''overwrite'' option is chosen, items on the target system that do not have a matching GUID in the package are deleted.)
::: All aspects of an object (fields and forms, validations, and so on) are given a ''Globally Unique ID'' or {{^GUID}}. Those IDs are preserved when the package is installed, which allows existing items to be replaced while new items are added. (When the ''overwrite'' option is chosen, items on the target system that do not have a matching GUID in the package are deleted.)
Line 147: Line 160:
:* With few exceptions, modified items in the Package replace the versions that came from a previous Package.<br>The exceptions are:
:* With few exceptions, modified items in the Package replace the versions that came from a previous Package.<br>The exceptions are:
::* Global Picklists -- Subscribers are expected to have added items and modified labels, so they are left intact.
::* Global Picklists -- Subscribers are expected to have added items and modified labels, so they are left intact.
::* Email Templates -- Subscribers are expected to have customized email templates with their return address, signature text, and possibly logo images, so they are left intact.
::* Email Templates and Quick Text -- These items are overwritten only if ''Overwrite Previous Package'' was selected by the publisher.
::* Roles -- During installation, the subscriber has the option of merging or overwriting roles that are included in the package.     
::* Roles -- During installation, the subscriber has the option of merging or overwriting roles that are included in the package.     
::* {{TBD|Confirm that Web Services are not part of this list.}}
 
:* Items deleted from the packager's application are never deleted from the subscriber's system unless the [[Overwrite Previous Package]] option has been enabled by the Service Provider, and the packager has chosen the ''Overwrite'' option. (Then, and then only, items deleted from the Service Provider's system are deleted from the subscriber's system when the package is installed.)
{{Note|Items that were added to the target system are ''never'' deleted. Items are deleted only when: (1) They were previously installed from the source system, (2) They were subsequently removed from that system, and (3) The [[Overwrite Previous Package]] option was chosen when the package was created.}}


=====Object Aspects=====
=====Object Aspects=====
This table describes the behavior of individual [[Object Aspects]].
This table describes the behavior of individual [[Object Aspects]].
:{| border="1" cellpadding="5" cellspacing="0"
:{| border="1" cellpadding="5" cellspacing="0"
! align="left"|Object Aspect !! Added if New !! Replaced !! Deleted if Old
!rowspan="2" align="left" | Object Aspect !! align="center" colspan="3"|Installed when...
|-
!                                              Added if New !! Updated  !! Deleted if Old
|-
| [[Business Rules]]                  || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
| [[Custom Form Actions]]              || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
| [[Document Templates]]              || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Business Rules]]                   || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Email Templates]]                 || &#10004; || [[Overwrite Previous Package|Package Overwrite option]] || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Custom Form Actions]]             || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[External Data Source]] definitions || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Document Templates]]               || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Fields]]                           || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Email Templates]]                 || Y || '''N''' || '''N'''
| [[Field Audit Log Settings]]         || &#10004; || &#10004; || n/a
|-
|-
| [[External Data Source]] definitions || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Field Scripts]]                   || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Fields]]                           || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Forms]]                           || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Field Scripts]]                   || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Form Scripts]]                     || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Forms]]                           || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Indexes]]                         || &#10004; || &#10004; || Y
|-
|-
| [[Form Scripts]]                    || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Layout Rules]]                    || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Indexes]]                         || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Macros]]                           || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Layout Rules]]                     || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Processes]]                       || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Macros]]                           || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Quick Text]] *                    || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]  || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Processes]]                       || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Record Locators]]                 || &#10004; || &#10004; || n/a
|-
|-
| [[Record Locators]]                 || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Subforms]]                         || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Validations]]                      || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Validations]]                      || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Web Forms]]                       || || '''N''' || '''N'''
| [[View]] definitions **              || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
| [[Web Forms]]                     || &#10004; || &#10004; *** || [[Overwrite Previous Package|Package Overwrite option]]
|}
|}
:: * Applies only to Cases object in the ServiceDesk application.
:: ** View definitions are included only when they are visible to all, or to an included [[Role]]. Private views are not included.
:: *** Web Forms on objects ''other than Cases'' can contain two kinds of email templates--an auto-response template that
::: is sent to the submitter, and a notification template that tells internal users about new records. Unlike other email templates, they are always overwritten.<!--The rules that govern Email Templates apply to them--they are overwritten only when the package-overwrite option is specified.-->


=====Application Elements=====
=====Application Elements=====
This table describes the behavior of other platform elements that go into an application.
This table describes the behavior of other platform elements that go into an application.
:{| border="1" cellpadding="5" cellspacing="0"
:{| border="1" cellpadding="5" cellspacing="0"
! align="left"|Platform Element !! Added if New !! Replaced !! Deleted if Old
! rowspan="2" align="left" valign="bottom"| Application Element !!colspan="2"|Included when  ||colspan="3"|Installed when
|-
!                                  Selected !! or if Referenced by !! Added if New !! Updated !! Deleted if Old
|-
| [[Application]]                || &#10004; || [[Package Dependency]]<br>Template Access URL || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Application]] settings      || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Classes]]                   || &#10004; || [[Business Rule]]<br>[[Macro]] || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Access Profiles]]           || colspan="3" align="center"|''not included''
| [[Customer Satisfaction Surveys]] ||       || [[ServiceDesk]] || &#10004; || '''N''' || n/a
|-
|-
| [[Business Hours Calendars]]  || colspan="3" align="center"|''not included''
| [[Case Analytics Dashboard]]  ||         || [[ServiceDesk]] || &#10004; || n/a || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Classes]]                   || Y || '''N''' || '''N'''
| [[Dashboards]]                 ||         || if visible to all, a [[Role]], or a [[Team]] || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Dashboards]]                 || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Global Picklists]]           ||         || Object [[Field]] || &#10004; || &#10004; || '''N'''
|-
|-
| [[Global Picklists]]           || Y || '''N''' || '''N'''
| [[Global Template Variables]] || colspan="5" align="center"|''not included''
<!--||        || [[Custom Form Action]] (JavaScript)<br> [[Email Template]]<br>[[Document Template]] || &#10004; || bgcolor="pink"|'''N''' || '''N'''
-->
|-
|-
| [[Mapping Profile]]s          || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Knowledge Base]] articles    || colspan="5" align="center"|''not included''
|-
|-
| [[Pages]]                     || Y || Y || [[Overwrite Previous Package|Packaging option]] option
| [[Knowledge Base]] categories  || colspan="5" align="center"|''not included''
|-
|-
| [[Processes]]                 || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Mapping Profile]]s          || &#10004; ||             || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Reports]]                   || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Object]] definitions  || &#10004; || [[Lookup]] field<br>[[Rollup Summary Field]] || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Roles]]                      || Y || [[Packages#Overriding or Merging Roles|Subscriber choice]] || '''N'''
| Object records                ||         || [[Package Data]] class  || colspan="3"| as defined by the class
|-
|-
| [[Sites]]                      || Y || '''N''' || '''N'''
| [[Pages]]                      || &#10004; || [[Custom Form Action]]<br>[[Dashboard]]<br>[[Site]]<br>[[Web Tab]]  || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[SLAs]]                       || colspan="3" align="center"|''not included''
| [[Reports]]                   || &#10004; || visible to all or to an application role || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Static Resources]]           || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Roles]]                     ||         || [[Application]]<br>[[Process]]<br>[[Team Data Sharing Policy]] || &#10004; || [[Packages#Overriding or Merging Roles|Subscriber choice]] || '''N'''
|-
|-
| [[Tab Preferences]]           || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Sites]]                     || &#10004; || [[Application]] || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Team]] definitions          || Y || '''N''' || '''N'''
| [[SLAs]]                       || colspan="5" align="center"|''not included''
|-
|-
| [[Team Data Sharing Policies]] || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Static Resources]]           || &#10004; ||               || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Translation Workbench]]      || Y || colspan="2" align="center"|{{TBD|}}
| [[Tab Preferences]]            ||          || [[Role]]      || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[View Preferences]]          || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Team]] definitions           || &#10004; || [[Business Rule]]<br>[[Macro]]<br>[[Process]]<br>[[Team Data Sharing Policy]] || &#10004; || '''N''' || '''N'''
|-
|-
| [[Web Services]]               ||colspan="3" align="center"|{{TBD|}}
| Team-object Business Rules    ||  ||  [[Team]]               || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
|-
| [[Web Tabs]]                  || Y || Y || [[Overwrite Previous Package|Packaging option]]
| [[Team Data Sharing Policies]] || &#10004; ||                  || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
| Templates|| &#10004; || Template Access URL      || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
| Template Access URL|| &#10004; ||                  || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
| [[Translation Workbench]] entries || &#10004; ||                  || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
| [[Users Object]] *            || &#10004; ||                  || &#10004; || &#10004; || n/a
|-
| User-object Business Rules    ||          || [[Users Object]] || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
| User-object Fields            ||          || [[Users Object]] || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
| [[View Preferences]]          ||          ||  [[Role]]    || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|-
| [[Web Services]] <!--**-->    || &#10004; || [[Business Rule]]<br>[[External Data Source]]<br>[[External Lookup]]<br>[[Process]]  || &#10004; || &#10004; || '''N'''
|-
| [[Web Tabs]]                  || &#10004; || [[Application]] || &#10004; || &#10004; || [[Overwrite Previous Package|Package Overwrite option]]
|}
|}


=====Choosing a Deployment Strategy=====
{{Note|
Package deployment is already optimized for the publisher/subscriber model, where the subscriber is expected to have customized one or more aspects of the application. So if that's what you're doing, you're in pretty good shape. You may want to double-check the behavior of things you'll be publishing, but there shouldn't be much you need to do.
#Include the Users Object in the package whenever fields or business rules in the package has references to the Users object.
#Include the Users Object in the package whenever record visibility criteria for an object in the package has references to user custom field.
}}
<!--
: ** When a Web Service is updated, the service end-point URL is left alone. (It is expected that a development environment, test environment, and production environment will be using different services.)
-->


Things get a little more interesting if you're deploying packages in a development scenario, where you have one or more development systems, a test system, and a production system. In that situation, there are several things you'll need to do.
=====System Elements=====
 
This section describes important system-object and system-configuration items:
'''The first step, if you have multiple developers, is to partition the application appropriately:'''
:{| border="1" cellpadding="5" cellspacing="0"
 
! rowspan="2" align="left" valign="bottom"| System Element !!colspan="2"|Included when  ||colspan="3"|Installed when
# Make sure that only one person makes edits to any given aspect of an object.<br>If multiple people add validations, for example, that can work. But only one person should make edits to existing validations, otherwise someone's work will get overwritten.
|-
#:
! Selected !! or if Referenced by !! Added if New !! Updated !! Deleted if Old
# Each person who owns objects should package them and share the package with other developers.<br>That step ensures that each of the development systems has the same object definitions.
|-
#:
| [[Access Profiles]]            || colspan="5" align="center"|''not included''
# Ideally, that person will be responsible for all additions to an object, as well.<br>If several developers add validations, for example, an integration step is required to get all of the validations on the test system. (Each developer can publish to the test system--but then individual developers don't have the same set. Or they can all publish to each other--but that requires coordination. It's easier to make one person responsible for all of the validations, ''and'' all of the forms, field definitions, and other aspects of any given object.)
|-
 
| [[Business Hours Calendars]]  ||          || [[Process]]  || &#10004; || '''N''' || '''N'''
'''The next step is choose your deployment model''' (sandbox deployment or publish/install):
|-
:* If you have created development sandboxes, it's natural to use [[Sandbox Deployment]].
| [[Email Channel]] settings    || colspan="5" align="center"|''not included''
::* The advantage of that process is that sandbox pathways are clearly defined.
<!--|-
::* The disadvantage is that the owner of the target sandbox has no say in the matter--the deployment comes at them when the packager says, whether or not the target system is ready.
| [[Facebook Channel]] settings  || colspan="5" align="center"|''not included'' (Hiding due to LJP-8904)-->
::* Is also important to note that the deployment process still follows the publisher/subscriber model, and that same rules apply. So choosing sandbox deployment doesn't automatically replace everything on the target system.
|-
 
| [[LDAP Configuration]]        || colspan="5" align="center"|''not included''
:* As a result, it is common even in the development scenario to use the normal publication process, where the packager "publishes" a package to make it available, after which the target systems install the package. The advantages of that process are:
|-
::* The installer can choose when to install the package.
| [[Marketplace]] listings *   || colspan="5" align="center"|''not included''
::* The installer can see what's in the package
|-
::''But:''
| [[Service Portal]] settings    || colspan="5" align="center"|''not included''
::* The installer needs to be sure to choose the "override roles" option during the installation, to be sure that any changes that were made to existing roles are reflected on the target system.
|-
 
| [[Scheduled Jobs]] **         || colspan="5" align="center"|''not included''
'''Finally, you need to make sure that each system targeted by the deployment process is an accurate reflection of the packaged application.'''  
|-
 
| [[Single Sign-On]] settings    || colspan="5" align="center"|''not included''
To do that:
<!--|-
# ...
| [[Twitter]] settings          || colspan="5" align="center"|''not included'' (Hiding due to LJP-8904)-->
#:
|}
# On all target systems, manually delete any roles that are no longer needed.
:: * Potentially valuable for an on-premise installation that wants to back up their primary admin tenancy.
#:
:: ** [[Scheduled Rules]], on the other hand, ''are'' included, along with other [[Business Rules]].
# On all target systems, manually replicate any changes made to these application components:
#:* Classes         
#:* Global Picklists
#:* Object Email Templates 
#:* Object Web Forms
#:* Site definitions
#:* Team definitions
#:
# On all target systems, manually replicate any changes made to these system components (but only if they ''need'' to be replicated in the target environment):
#:* Access Profiles
#:* Business Calendars
#:* SLAs

Latest revision as of 14:45, 31 January 2020

Platform elements that are included in a Package are known as package items.

This page details when items are included in the package, when they are installed in the target system, and when old items that have been removed from the source system are deleted from the target system, as well.

The information provided here is the foundation for the companion article: Choosing a Deployment Strategy for Development Systems

Standard Dependencies

When an item is selected for packaging, dependent elements are automatically included. Items that are related, but upon which the selected item does not actually depend are excluded by default--although they can generally be selected manually, if desired.

Platform Element Dependent Elements
  • Application
  • Excludes Reports
    Reports can be individually selected. Reports on an object are not automatically included.
  • Excludes data
    Data is not included automatically. Java code can be written to create Package Data classes that add selected records during packaging, and that take the records out when the package is installed.
  • Classes (includes
    user-created classes)
  • Sites
  • Includes Teams and Roles involved
  • Includes Child Teams if the Include Child Teams option is selected for that team
  • Template
  • Template Access URL

For more information about Templates, see How to Create a Custom User Interface (CUI).

  • Includes localized labels and items


  • Web Tabs

Special Dependencies

When the following elements are added to a package, the listed items are added as dependencies:

Team Data Sharing Policies
Roles and Teams included as dependencies
  • If the Include Child Teams checkbox is enabled, the child teams of the selected teams in the Data Sharing Policy are added as dependencies
Objects in a Master-Detail relationship

Notepad.png

Note:
The "Master-Detail relationship" option on a Lookup field has been deprecated. This section is provided for legacy objects that have a Lookup field for which that option has been selected.
Learn more: Master-Detail relationships

  • If a Detail object is added to a Package, the Master object is added (automatically) as a dependent object
  • If a Master object is added to a Package and if that Master object includes any Rollup Summary Fields, then the Detail object is added (automatically) as a dependent object
  • When a Tenant installs a Package, the Rollup Summary Fields limit defined in Manage Tenant Capabilities is honored
  • If the limit is exceeded, the installation process will stop and cannot proceed
  • In order to complete the installation, delete existing Rollup Summary Fields to reduce the total number to within the defined limit
  • After packaging, do not add or remove any Master-Detail relationships; doing so may cause unexpected results and/or loss of data
Template Access URL
Templates and Application included as dependencies. For more information about Templates, see How to Create a Custom User Interface (CUI).

Items that are Never Packaged

These platform elements are never added to a package. Customizations made by the subscriber remain intact.

How Package Items are Applied

The principles that follow summarize the behavior of package items at installation time. Detailed tables list the behavior for individual items, following the summary.

Principles
  • New items in the Package are added to the subscriber's system, while items with the same ID are replaced, or updated.
Note:
All aspects of an object (fields and forms, validations, and so on) are given a Globally Unique ID or GUID. Those IDs are preserved when the package is installed, which allows existing items to be replaced while new items are added. (When the overwrite option is chosen, items on the target system that do not have a matching GUID in the package are deleted.)
  • If the subscriber created a new platform element with the same name as an item included in the package, the subscriber gets an error. (The error occurs immediately after they select the package. Installation is not allowed to proceed.)
  • With few exceptions, modified items in the Package replace the versions that came from a previous Package.
    The exceptions are:
  • Global Picklists -- Subscribers are expected to have added items and modified labels, so they are left intact.
  • Email Templates and Quick Text -- These items are overwritten only if Overwrite Previous Package was selected by the publisher.
  • Roles -- During installation, the subscriber has the option of merging or overwriting roles that are included in the package.

Notepad.png

Note: Items that were added to the target system are never deleted. Items are deleted only when: (1) They were previously installed from the source system, (2) They were subsequently removed from that system, and (3) The Overwrite Previous Package option was chosen when the package was created.

Object Aspects

This table describes the behavior of individual Object Aspects.

Object Aspect Installed when...
Added if New Updated Deleted if Old
Business Rules Package Overwrite option
Custom Form Actions Package Overwrite option
Document Templates Package Overwrite option
Email Templates Package Overwrite option Package Overwrite option
External Data Source definitions Package Overwrite option
Fields Package Overwrite option
Field Audit Log Settings n/a
Field Scripts Package Overwrite option
Forms Package Overwrite option
Form Scripts Package Overwrite option
Indexes Y
Layout Rules Package Overwrite option
Macros Package Overwrite option
Processes Package Overwrite option
Quick Text * Package Overwrite option Package Overwrite option
Record Locators n/a
Subforms Package Overwrite option
Validations Package Overwrite option
View definitions ** Package Overwrite option
Web Forms ✔ *** Package Overwrite option
* Applies only to Cases object in the ServiceDesk application.
** View definitions are included only when they are visible to all, or to an included Role. Private views are not included.
*** Web Forms on objects other than Cases can contain two kinds of email templates--an auto-response template that
is sent to the submitter, and a notification template that tells internal users about new records. Unlike other email templates, they are always overwritten.
Application Elements

This table describes the behavior of other platform elements that go into an application.

Application Element Included when Installed when
Selected or if Referenced by Added if New Updated Deleted if Old
Application Package Dependency
Template Access URL
Package Overwrite option
Classes Business Rule
Macro
Package Overwrite option
Customer Satisfaction Surveys ServiceDesk N n/a
Case Analytics Dashboard ServiceDesk n/a Package Overwrite option
Dashboards if visible to all, a Role, or a Team Package Overwrite option
Global Picklists Object Field N
Global Template Variables not included
Knowledge Base articles not included
Knowledge Base categories not included
Mapping Profiles Package Overwrite option
Object definitions Lookup field
Rollup Summary Field
Package Overwrite option
Object records Package Data class as defined by the class
Pages Custom Form Action
Dashboard
Site
Web Tab
Package Overwrite option
Reports visible to all or to an application role Package Overwrite option
Roles Application
Process
Team Data Sharing Policy
Subscriber choice N
Sites Application Package Overwrite option
SLAs not included
Static Resources Package Overwrite option
Tab Preferences Role Package Overwrite option
Team definitions Business Rule
Macro
Process
Team Data Sharing Policy
N N
Team-object Business Rules Team Package Overwrite option
Team Data Sharing Policies Package Overwrite option
Templates Template Access URL Package Overwrite option
Template Access URL Package Overwrite option
Translation Workbench entries Package Overwrite option
Users Object * n/a
User-object Business Rules Users Object Package Overwrite option
User-object Fields Users Object Package Overwrite option
View Preferences Role Package Overwrite option
Web Services Business Rule
External Data Source
External Lookup
Process
N
Web Tabs Application Package Overwrite option

Notepad.png

Note:

  1. Include the Users Object in the package whenever fields or business rules in the package has references to the Users object.
  2. Include the Users Object in the package whenever record visibility criteria for an object in the package has references to user custom field.
System Elements

This section describes important system-object and system-configuration items:

System Element Included when Installed when
Selected or if Referenced by Added if New Updated Deleted if Old
Access Profiles not included
Business Hours Calendars Process N N
Email Channel settings not included
LDAP Configuration not included
Marketplace listings * not included
Service Portal settings not included
Scheduled Jobs ** not included
Single Sign-On settings not included
* Potentially valuable for an on-premise installation that wants to back up their primary admin tenancy.
** Scheduled Rules, on the other hand, are included, along with other Business Rules.