Customization Bundles

Customization bundles are used to group custom objects into packages that can be copied to target accounts to implement customized behavior.

Objects Available in Customization Bundles

The following table lists the object types that you can include in a customization bundle.

If an object is lockable, you can lock it in the Bundle Builder, to indicate that the object should be viewable but not editable in target accounts. See Locking Objects in Customization Bundles.

Object Type

Lockable?

Comments

Advanced PDF/HTML Templates

No

Advanced PDF/HTML templates are listed under Custom Forms on the Select Objects page of the Bundle Builder.

Advanced templates for use with custom forms, used to format printed and emailed versions of forms transactions.

Advanced PDF/HTML templates cannot be hidden, meaning that end users can modify the template.

If you associate an advanced PDF/HTML template with a custom form and then include the custom form in the bundle, the Bundle Builder automatically includes the template.

Note:

If you select an advanced PDF/HTML template as a preferred template for a form, the template is not installed as preferred when you install the bundle.

For more information, see Advanced PDF/HTML Templates.

CSV Import Maps

No

These objects are saved field mappings for record types. All mappings saved in the Import Assistant are available to be included in bundles. The access and audience set up for each mapping determine when it is listed in the Bundle Builder.

If the Audience subtab refers to a custom role, the role is automatically included in the bundle as well.

Note that you can also bundle CSV files that are used as templates or to store data to be imported, as File objects.

For more information, see Including Import Maps and CSV Files in SuiteBundler.

Custom Fields

Yes

For each bundled custom field, a preference is available to indicate whether the field should be shown or hidden on existing custom forms when it is installed in target accounts. (Bundled custom fields are always shown on bundled custom forms.) See Bundle Object Preferences.

Depending on the custom field, objects referenced by the custom field may or may not be automatically included in the bundle. For more information, see Referenced Objects in Customization Bundles.

Custom Lists

Yes

For each bundled custom list, a preference is available to indicate, on bundle updates in target accounts, whether the bundled object's data should replace the target account object's existing data. This preference is also available when a custom list that conflicts with an existing target account custom list is installed and the installer chooses to replace the existing object. See Bundle Object Preferences.

Custom Records

Yes

When including custom record types in your bundle, you can also include the custom records already created in your account by checking the Include Data box. If the bundled custom record types have List or Record fields that reference a standard list, such as items or customers, then those fields are installed with no data. The locking behavior is the same whether the custom record includes data.

For each bundled custom record that includes data, a preference is available to indicate, on bundle updates in target accounts, whether the bundled object's data should replace the target account object's existing data. This preference is also available when an Include Data custom record that conflicts with an existing target account custom record is installed and the installer chooses to replace the existing object. See Bundle Object Preferences.

The links on a custom record are preserved only if they refer to standard centers and sections or if the custom centers and sections are also included in the bundle.

Online custom record entry forms are included in bundles by default when a custom record type is included.

Custom Segments

Yes

Custom segments are listed under Custom Lists/Records on the Select Objects page of the Bundle Builder.

Note:

Bundle installation does not copy the Filtered By value for a custom segment to the target account if this value is set to a standard record, such as class, department, location, or subsidiary. If in the target account you manually set the custom segment’s Filtered By value to a standard record, a bundle update causes the deletion of this value. Bundle installations and updates delete the Filtered By values in bundled custom segments because these values can be enabled or disabled by a feature setting in the target account.

For information about custom segments, see Custom Segments. For details about current limitations on bundling custom segments, see Adding a Custom Segment to a Bundle.

Custom Transactions

Yes

Before bundling a custom transaction, complete the steps on the pre-bundling checklist. For more information about bundling a custom transaction, see Custom Transaction Types in Bundles.

Dashboards & Centers

No

Dashboard elements that can be bundled include center categories, center tabs, custom centers, custom KPI scorecards, and dashboards.

For each bundled custom dashboard, a bundle update preference is available to indicate whether dashboard updates should be applied to target account users to whom the dashboard has been published. See Bundle Object Preferences.

When you add a dashboard to a bundle, objects referenced in the dashboard, such as center tabs and saved searches displayed in dashboard portlets, are also included in the bundle.

Extensible Lists

No

Includes the following types of lists:

  • Charge Type. Accounting List used by the Recurring Billing SuiteApp. If you uninstall a bundle with a Charge Type object, and another object in the target account references the Charge Type object, the uninstallation continues but NetSuite does not remove the Charge Type object.

File Cabinet Files

Yes

To include a file in a bundle, check the Available for SuiteBundles box on the file record in the File Cabinet and add the file to a bundle in the Bundle Builder.

For more information about bundling files and accessing files after bundle installation, see File and Folder Management in Bundles.

File Cabinet Folders

Yes

To include a folder in a bundle, check the Available for SuiteBundles box on the folder record in the File Cabinet and add the folder to a bundle in the Bundle Builder.

For more information about bundling files and accessing files after bundle installation, see File and Folder Management in Bundles.

Important:

Including large folders in a bundle can extend installation time, in some cases causing network connection problems that result in a failed installation. To ensure installation success, you can perform one of the following actions:

  • You can divide folder contents into multiple smaller bundles.

  • Instead of transferring folder contents to the target account through a bundle installation, you can export all folder contents from the File Cabinet of the source account to a ZIP file and then upload that ZIP file to the File Cabinet of the target account, where you have installed the bundle. For more information, see Downloading Files from the File Cabinet and Uploading Files to the File Cabinet.

    However, even if you exclude some files from bundle installation and import them to the target account through a ZIP file afterward, some objects in the bundle can still reference such previously excluded files and pull them into the target account during bundle installation, thus resulting into duplicate files being installed in the target account.

    There is also a difference in where the files are installed in the File Cabinet, depending on whether you choose to install the files through a bundle, or import the files through a ZIP file.

    For example, if you include a file named foo.js in a bundle with an ID of 100, NetSuite installs the file into the following File Cabinet directory in the target account:

    /SuiteBundles/Bundle 100/foo.js

    However, if you decide to exclude files from bundle installation and import them to the target account through a ZIP file instead, the files imported to the File Cabinet in the target account retain the same folder structure as in the source account.

Forms

Yes

For each bundled custom form, a preference is available to indicate, when it is pushed to target accounts, whether it should be set as the globally preferred form for the record type. See Bundle Object Preferences.

Important:

This preference is applied during push installations only. Unlike other preferences, bundle installers cannot override this preference's Bundle Builder setting.

If a translated form in a bundle matches the base language in the target account, that form is used.

If you associate an advanced PDF/HTML template with a custom form and then include the custom form in the bundle, the Bundle Builder automatically includes the template.

Note:

Unlike other objects, adding a custom form to a bundle does not automatically include all of the custom elements included in the form like custom tabs or custom fields. These elements must be added individually.

After bundle installation, a custom field in the target account will automatically appear in the custom form if the field applies to the form’s record type. For example, when a custom form for the Customer record type is deployed to a target account where a custom field exists that applies to the Customer record type, the custom field automatically appears on that form even though the field was not included in the bundle.

Note:

When you update a bundle that includes a form that you have updated to be the preferred form for one or more roles, the preferred form setting transfers to a target account only for the roles that are included in that bundle.

Note:

When a bundled standard customer form is installed in a target account, the Use for Pop-ups field remains unchecked in the target account even if this field is checked on the source account form.

Online Forms

No

The publishable form URL for an installed bundle is updated to reference the target account where it is installed.

Any files referenced by an online form (form logo, auto-reply email template, and HTML online form template) are included in the bundled form. If the bundle's installer does not want to use these files, the online form should be updated after installation.

The redirect to URL is not carried over from the source account. You must set the redirect to URL after installing a bundle with an online customer form.

The lead status and lead source settings for online customer forms are not maintained when the form is bundled. These must be configured manually after the bundled is installed.

Plug-ins

Yes

Include the following plug-in types or plug-in implementations:

Reports

No

If a custom report's audience includes custom roles, the custom roles are not included in the bundle by default. You must add the roles to the bundle as well. For details about how bundle updates affect report audience, see Bundle Update Reference.

If you include a custom financial statement in a bundle, the custom layout assigned to the report is automatically bundled as well. Whenever possible, the assignment of a layout to a bundled financial statement from the source account is preserved in target accounts. If there is ambiguity about this assignment, it is not preserved in target accounts, and users in these accounts can set up the assignments themselves. See Bundling NetSuite Financial Statements.

Roles

Yes

If a role has custom record permissions, then NetSuite does not automatically include corresponding custom records in the bundle. If you explicitly include custom records in a bundle, any permission levels granted to roles in that bundle are maintained when installed in the target account.

If role-based preferences have been defined, these are included with the bundled role.

Subsidiaries selected for a role in a OneWorld source account are not included with the bundled role, because subsidiaries are specific to accounts.

Note:

If you include a role with 2FA enabled in a bundle, the 2FA setting is not transferred to a target account when you install the bundle. This capability is available for SuiteApps created with the SuiteCloud Development Framework (SDF). For more information, see role and tfarequired.

Saved Searches

Yes

Only public saved searches can be bundled.

If a saved search includes a formula that references a custom field, then NetSuite does not automatically pull the custom field into the bundle. You must explicitly add the custom field to the bundle.

If a saved search's audience includes custom roles, the custom roles are included in the bundle automatically. For details about how bundle updates affect search audience, see Bundle Update Reference.

If a saved search is filtered by a custom transaction type value, the custom transaction type is included in the bundle automatically.

Note:

If a saved search with an email alert defined is included in a bundle, note that in target accounts where the bundle is installed, the email alert is not sent unless the Enable Email Alerts for WS and CSV Imports preference is enabled, at Setup > Company > Email Preferences.

SSP Applications

Yes

An SSP application implements Web store customizations .

All files in an SSP application are grouped together in a folder in the source account's NetSuite File Cabinet. An SSP Application record indicates the touch points where pages in the SSP application should be substituted for default Web store pages.

When a bundled SSP application is installed in target accounts, it is hosted from the same location in each target account File Cabinet. The installed bundle includes touch points, but SSP application pages are not used in the Web store until touch points are deployed to the site. See Bundle an SSP Application.

Note:

As of 2019.1, when you update an installed bundle that includes an SSP application, the script deployments are not updated in the target account. Because script deployments are not updated, the existing touch points are not overwritten and both the Log Level and Status fields are also not updated in the target account. The Log Level and Status fields can be viewed on the Script Deployment page.

Sublists

No

 

Subtabs

No

 

SuiteScripts

Yes

You can check the Hide in SuiteBundle box on the file record for a server script file to prevent those who download your bundle from viewing your server SuiteScript files. You cannot hide client SuiteScripts in a bundle or any files that may be referenced in client SuiteScript files, such as library files. See Protecting Your Bundled Server SuiteScripts.

You should make script parameters settable as preferences. This insures that updates to your bundle do not change the way scripts are set up in the target account. Also, allowing users to set parameters as preferences can help users in the target account to set up the bundle. For more information about scripting parameters, see Creating Script Parameters.

Locking the script record does not lock its deployments. The Bundle Builder pages do not display script deployments. Therefore, the bundle author cannot specify which deployments are locked.

Be aware that the order in which bundled scripts run in the source account is maintained when the bundle is installed in target accounts. You can set up script execution order for client and user event scripts on the Scripted Records page, at Customization > Scripting > Scripted Records. See The Scripted Records Page.

For each bundled SuiteScript, a preference is available to indicate whether the script's deployments should be updated in target accounts when bundle updates occur. See Bundle Object Preferences.

If a script deployment's audience includes custom roles, the custom roles are included in the bundle automatically. For details about how bundle updates affect script deployment audience, see Bundle Update Reference.

You cannot attach a SuiteScript 2.x script file to more than one bundle. If you create multiple bundles and the bundles include the same SuiteScript 2.x script file, your script may throw a Module does not exist exception. NetSuite is instituting this restriction to avoid the following scenario: You have the same script file bundled in both SuiteApp A and SuiteApp B. If SuiteApp B is upgraded, then the script file moves to SuiteApp B. The old location (module path) to SuiteApp A no longer works. This triggers an exception when the script in SuiteApp A attempts to execute.

Important:

Bundle installation scripts have different requirements and characteristics than other scripts included in bundles. For details, see Using Bundle Installation Scripts.

SuiteSignOn

No

Each Outbound Connection object includes the data entered on the SuiteSignOn page used to implement single sign-on integration between NetSuite and an external application. This data includes the name of the NetSuite user interface element where the connection is implemented, the external application landing page, optional data that sets context for the landing page, and optional user identification data.

Any custom subtabs and portlet scripts defined as connection points, and any custom fields defined as user identification, are automatically included with the SuiteSignOn Outbound Connection object.

If any custom fields are defined as integration variables, you must explicitly add these fields to the bundle.

For more information, see Creating a SuiteSignOn Bundle.

Translation Collections

Yes

Translation Collections are custom objects comprised of translated terms. The Translations Collection object includes terms and their translations in the specified locale. For more information about Translation Collections, see Translation Collections Overview and Creating a Translation Collection.

After installation, the bundle ID displays in the From Bundle field when the Translation Collection is viewed or edited in the target account.

The Multi-Language feature must be enabled in the source account, to support the bundling of Translation Collection objects. If that feature is not enabled in the target account, the objects are installed and scripts can access them, although the Translation Collections are not viewable in the NetSuite UI.

During bundle installation, the script ID for a Translation Collection object is automatically renamed when there is a script ID conflict but the default locale is different. Unlike other script ID conflicts, there is no option to replace the existing object during bundle installation.

As of 2020.2, SuiteBundler supports enhancements to custom object translatable fields and Translation Collections. For more information, see Translatable Fields Supported in SDF Custom Objects.

This support imposes the following limitations on bundles that include a Translation Collection and custom objects that contain translatable fields that reference translation strings from that Translation Collection:

  • You cannot install these bundles from a source account running 2020.2 to a target account running 2020.1, or from a source account running 2020.1 to a target account running 2020.2.

  • You can only install such bundles to target accounts running the same NetSuite version as the source account.

Note:

These limitations do not apply to bundles that include only Translation Collections.

Consider the following when modifying Translation Collections in a bundle:

  • If you delete a translation string from a bundled Translation Collection in a source account, and later you update that bundle in a target account:

    • All references in custom object translatable fields to that deleted translation string from the Translation Collection are unlinked from that deleted translation string in the target account. The unlinked translation string becomes a standalone translation string.

    • Custom object translatable fields retain the original translation string, including the translations, in the target account.

  • If you update a translation string in a bundled Translation Collection in a source account, and a custom object translatable field in a target account that references that translation string fails validation:

    • The custom object translatable field is not updated in the target account and is unlinked from the translation string in the Translation Collection. The unlinked translation string becomes a standalone translation string.

    • The custom object translatable field retains the original translation string, including the translations, in the target account.

For more information about translation strings, see String Hierarchy and Translation String Linking.

Web Site Customizations

No

Website customizations that can be bundled include color themes, item/category templates, layouts, tags, and themes.

Workflows

Yes

If a bundled workflow is locked, you may not edit the definition, instance fields, states, transitions, or actions in a target account. Also, you may not add transitions or states to a locked workflow.

Workflow instances and history logs are not copied to target accounts when a bundle is installed or updated.

For more information about bundling a workflow, see Bundling a Workflow.

Related Topics

General Notices