You can create extensions for these metadata object types:
Extension objects are part of the same release development cycle as all other metadata objects that you create. However, extension objects are not functional unless the solution they are associated with is enabled in the environment. That is, if you create an extension object but do not enable the associated solution, the extension is not connected at run time and you won't be able to see or test the resulting applications.
How to develop with extensions
To develop extensions, you must:
- Define a solution in the Solution Definitions application.
- Register the solution in the Nextworld Solutions Registry application.
- Enable the solution in the Tenant Environment Setup application. An entry for each environment and tenant is required.
Extensions and security
Solution developers do not have the ability to configure security for extension objects. Whatever access is granted by the base objects applies to extension objects.
Extension best practices
These best practices ensure that extensions are configured consistently across all solutions.
Solution Developers use extension to add fields and functionality to existing Nextworld applications. To easily identify an object is an extension, use the word "Extension" in your object name. For example, if you extend the GeneralLedgerHeader table, your extension is named GeneralLedgerHeaderExtension.
General
- Do not modify a value in the base table. Only modify values in your extension table.
- Do not extend any Nextworld object. This includes objects in Nextworld product families: Platform Base and No-Code Platform. Only ERP product families can be extended.
List Lookups
- Extending list lookups takes on the same customization pattern as the base list lookup.
- If the list lookup is a complete unlock, do not extend and or code any logic against the value. A list lookup as a complete unlock is delivered empty and user defined by the customer.
Logic Blocks
- Logic blocks extensions should be built over your extension table rather than the base table.
- Do not update fields in the base table. Only update fields in your extension table.
- If the logic block inserts directly into a table and bypasses an action block (not recommended), the action block should be evaluated to see what fields are being defaulted and validated. Similar logic may be required for the insert to be successful.
Applications
- If you need to hide fields from the base application,
- First consider using application settings to hide fields and place on your own menu.
- You can also create your own application over the Nextworld tables, then extend your own application.
- To add a form/row/field action, you must create an extension application. You must first create an extension table with no fields and create your extension application over the extension table.
Table extensions
Solution developers create extension tables to add fields to existing tables and summary tables. Extension tables are connected to the base table and contain fields used in extension applications, and in interactive reports.
In the Table Definitions application, you can extend tables of these types:
- Main
- Header
- Detail
- Work Table
- Join
You can also extend summary tables in the Cube Summary Table Definitions, Periodic Summary Table Definitions, and As Of Summary Table Definitions applications.
How data is processed
When a data mutation (insert/update/delete) is performed, data from both base and extension tables are saved at the same time.
Security
Extension table fields can be included in restricted field and workflow restricted field profiles. This ensures the security for the base table fields is applied to the extension fields. Learn more in Restricted field profile extensions.
Table extension configuration
Solution Developers configure extension tables in the Table Definitions application. Extension tables are connected to a base table. Customer Defined Attributes (CDAs) can be configured on both the base, or the extended table.
Before you can create your extension table, you must identify the base table.
Table Definitions
In the Table Definitions application, you must:
- Create a new table. The Table Type and Table Category values on the extension table must match type and category on the base table.
- Add your desired data items to the extension table. All data items added to an extension table must be in the same namespace as the extension table itself. You cannot add a data item to the extension table that already exists on the base table.
- On the Relationships page, in the Extension Table section, select the Extension checkbox. In the Base Table field, specify the name of the table you are extending.
- Continue developing your table as normal.
Primary sorts
Any fetch to an extension table also retrieves the base table. When a fetch is performed on an extension table, any sorts configured for the base table or base application are honored.
For more information, see Sort configuration.
Filtered table lookups
Filtered table lookups are supported for table extensions. Learn more in the Additional mappings in logic blocks topic.
Security
Extension table fields can be included in restricted field and workflow restricted field profiles. This ensures the security for the base table fields is applied to the extension fields. Learn more in Restricted field profile extensions.
List lookup extensions
An extension list lookup is a lookup that Solution Developers use to add lookup keys to a base list lookup. Whenever the base or extension lookup are referenced (for example, in an application or logic block), the available lookup keys are the combination of the base lookups keys and any enabled extension lookup keys.
List lookup extensions are enabled by with the solution. A customer will only see the keys from a given extension if they have enabled a Solution that contains the product family to which the extension belongs.
List lookup extension configuration
Solution Development partners configure extension list lookups in the List Lookup Definitions application.
Extension list lookups are connected to the base lookup. Before you create your extension, you must have the Lookup Name of the base list lookup.
List Lookup Definitions
In the List Lookup Definitions application, you must:
- Create a new list lookup, and select the Extension checkbox.
- In the the Base Lookup field, specify the name of the list lookup you are extending.
- Create the desired Lookup Keys. The Lookup Value must include a namespace. The Lookup Value does not automatically add a namespace. You must include a namespace to save a lookup when Extension is selected.
- Configure the list lookup as normal.
Logic block extensions
An extension logic block is a logic block that Solution Developers use to add processing to a base logic block. The extension executes every time the base logic block is called.
An extension logic block must be built over either the same table as the base logic block, or over an extension of that table. If it is built over an extension table, the fields of both the extension and base table are available in the logic block.
Extension logic blocks cannot be called directly. They are invoked only when the base logic block runs.
Inputs and outputs
Extension logic block must integrate directly to the pre-extension inputs and post-extension outputs. This means the extension's inputs and outputs must exactly match the extended logic block's pre-extension inputs and post-extension outputs.
Error handling
When a request is made to execute a Nextworld logic block, the related extensions are retrieved and executed either before or after the Nextworld logic block, depending on their configuration. If any extension that runs before the base logic block ends in error, all processing stops. If there are any additional extensions to the logic block, neither they nor the base logic block are run. Similarly, if the base logic block ends in error, the extension logic blocks configured to run after it are not run.
Transaction boundaries, thread management, and security
The extension logic block inherits all security, transaction boundaries, and error processing of the base logic block.
Extension logic blocks are scoped with the base logic block. Even if marked as Require New DB Transaction, they are still contained within the transaction boundary of the base logic block. Similarly, they inherit the thread (background or UI) and the security attributes of the extended logic block.
Logic block extension configuration
Solution Development partners configure extension logic blocks in the Logic Block Builder application.
Extension logic blocks are connected to a base logic block. Before you can create your extension logic block, you must identify the base logic block. Extension logic blocks must be built over either the same table as the base logic block, or over an extension of that table. If it is built over an extension table, the fields of both the extension and base table are available in the logic block.
Logic Blocks
In the Logic Block Builder application, you must:
- Create a new logic block.
- Select the Extension checkbox.
- Select the Add button in the Extension Logic Blocks detail list field to enter a row for each logic block you want to extend.
- Enter the name of the base logic block.
- Use the Execute Before and Execute After checkboxes to indicate whether the the extension logic block should run before the specified base logic block runs, or after it.
- Continue logic block configuration as normal.
Workflow extensions
Solution developers use workflow extensions to automate manual transitions or to add post run logic blocks to transitions in a base workflow definition.
Workflow extensions are attached to base workflow definitions.
Automate Transitions
You can only automate manual transitions that have a Workflow Condition type of Chosen by Decision.
Post run logic blocks
Specify logic bocks that you want to run after any transitions that meet the criteria you define. These logic blocks can be attached to specific transitions, or all transitions on a base workflow.
The logic blocks are executed in the order defined in the Post-transition Logic Blocks subtable.
Learn more in the Workflow extension configuration topic.
Workflow extension configuration
Solution developers configure workflow extensions to automate manual transitions or to add post run logic blocks to a transition on a base workflow definition in the Workflow Builder application.
Workflow extensions are attached to the base workflow definition.
Workflow Builder
In the Workflow Builder, you must:
- Create a new record and select the Extension checkbox.
- In the Parent Workflow field, enter the name of the base workflow definition that you want to extend.
- In the State Lookup, State Type Lookup, and Table Name fields, enter the same values as your base workflow definition.
- On the Automate Manual Transitions page, in the Automate Manual Transitions subtable, you can automate manual transitions that have a Workflow Condition type of
Chosen by Decisionin the base definition. - On the Multi-transition Logic Blocks page, in the Post-transition Logic Blocks subtable, you can add post run logic blocks to specific transitions, or all transitions on a base workflow. The logic block runs after any transitions that meet the criteria you define. See the Post-run logic blocks for workflow definitions topic for more information.
Application extensions
Solution Developers use extensions in applications to add pages and fields from an extension table to a base application. Users see the page created by the extensions once the related solution is enabled in an environment.
In the list form, extension application fields are added to the list at the end of the base application fields. When using the application, users can reorder fields and intermix the extension application fields with the base fields.
In the detail form, extension application fields appear on separate page. If the base application does not have any pages configured, the extension application fields are appended to the bottom of the base application fields, rather than as a separate page.
The following topics discuss application extensions:
- Application extension configuration
Solution developers configure application extensions in the Data Item Definitions , Table Definitions , and Application Builder applications.
- Application extension testing
Solution developers test their application extensions as part of the development process. When the appropriate solutions are enabled in the environment, and once the application is released to production, the base application recognizes the extension application at the time of generation.
- Application extension actions
Solution developers can configure actions, such as field actions, row actions, and event actions, on extension applications.
- Application extension field dependencies
Solution developers can configure field dependencies to control an extension field, or characteristic of an extension field, included in an extension application.
- Application extension best practices
These best practices ensure that extension applications are configured consistently.
Application extension configuration
Solution developers configure application extensions in the Data Item Definitions, Table Definitions, and Application Builder applications.
Data Item Definitions
In the Data Item Definitions application, configure data items as you would for any other application type.
Table Definitions
In the Table Definitions application, create an extension for the table over which the base application is built. For more information on extension tables, see Table extension configuration.
Application Builder
In the Application Builder application, you must:
- Create a new application with an Application Type of
Standard. - In the Application Style field, select the same style as the base application you are extending. This can be
Standard,Mini App,Header, orDetail. Header Detail and Relationship applications can't be extended, but the components for Header Detail applications and the Detail component for Relationship applications can be extended. - On the General Configuration page, enter the name of your extension table in the Table Name field.
- Select theExtension checkbox.
- In the Base Application field, enter the name of the application you are extending.
- On the Detail Form page, configure at least one page for your extension application. There are several considerations, such as:
- The extension row title is prefixed with the page name when no page is defined on the base app.
- If the base application does not have an existing page, extension application fields are appended to the bottom of the base application fields, rather than as an additional page.
- In the detail form, all extension application fields appear on pages defined for the extension.
- Optionally, on the Field Dependencies page, configure field dependencies to control an extension field, or characteristic of an extension field, included in the extension application.
Continue to develop the application as normal. For more information, see:
Once you have completed the development of your extension application, generate the extension application or use the Generate Related Apps row action.
Customizations and Extensions
You must create a customized version of your base application to test your extension. Learn more in the Application extension testing topic.
Application extension testing
Solution developers test their application extensions as part of the development process. When the appropriate solutions are enabled in the environment, and once the application is released to production, the base application recognizes the extension application at the time of generation.
Create a customized version of the base application which you want to extend. If the application is previously customized, create another customized version in your development environment. You can choose to make changes for the purpose of testing, or leave the customization empty.
Header Detail applications
For Header Detail applications, extensions are defined on one, several, or all of the component Header and Detail applications. In order to test your Header Detail application, the base version of every component application must be customized, even if it hasn’t been extended. Once you have customized the base components, customize the associated base Header Detail applications and generate them. The generated customized Header Detail application pulls in all the extended components so they can then be tested.
Relationship applications
Relationship applications cannot be extended. However, a Relationship application’s Detail application, which is the application that drives the Relationship application’s user experience, can be extended.
To start testing your Detail application extension, the base Detail application and the associated Relationship application must be customized. Only the customized Relationship application needs to be generated. During generation, it discovers and includes the Detail application extension.
Application extension actions
Solution developers can configure actions, such as field actions, row actions, and event actions, on extension applications.
| Field actions | Field actions can be configured for the extension application. The extension field syntax is: For example, if an extension application is built over the extension table Field Actions on subtables are not supported. |
|---|---|
| Row actions | Row actions can be configured for the extension application. All extension row actions are appended to the end of the base application row actions. The order in which extension actions appear cannot be controlled. |
| List form actions | List form actions can be configured for the extension application. All extension list form actions are appended to the end of the base application list form actions. The order in which extension actions appear cannot be controlled. |
| Event actions | Event actions can be configured for the extension application. All extension event actions execute after the base application event actions. For example, if both the base and extension application have a Form Init event and a Field Value Changed event configured, each time the event is triggered, the base application's event will run first, followed by the extension’s. |
| Application links and dynamic application links | Both application links and dynamic application links can be configured for the extension application. However, you must be conscious of any dependencies you may create between the the extension fields and the base application fields. Table lookup values cannot currently be filtered based on enabled solutions. For example, if you create an application link to the General Ledger from your extension app, you’re creating a dependency from your extension app to the Nextworld Financials family. Since this family is currently a family delivered to all customers, that would not cause any problems in a production. However, if in the future Nextworld were to change delivery so that Financials were not automatically enabled in all environments, your solution would have to be purchased and enabled alongside the Financials family. |
| Search actions | Search actions may be configured on the extension application for fields on the base or extension application. Do not configure a search action for a base field if it already has an associated search action. If a search action has already been defined for a field on the base app, one configured on the extension app for the same field will not override the pre-existing one. |
Application extension field dependencies
Solution developers can configure field dependencies to control an extension field, or characteristic of an extension field, included in an extension application.
Characteristics of an extension field can be dictated by either a base application field, or by another extension field.
For example, if you want your extension field's currency code to be consistent with the base application's currency code, you can configure a field dependency with the base application field as the Controlling Field, and the extension field as the Dependent Field.
Learn more in the Field Dependencies topic.
Application extension best practices
These best practices ensure that extension applications are configured consistently.
General
- Always configure at least one page for your application, and always give that page a title. If you create rows, title your rows. This gives users context when navigating extensions.
- Avoid creating dependencies between your extension application and any metadata objects from a family different from the application you're extending. For example, if you are extending an application in the Financials family, you should not create an application link to an application in the Supply Chain family.
Logic blocks
When creating logic blocks for extension apps, you should only build them over the extension table. These logic blocks can:
- Update extension fields.
- Hide / Show extension fields. When using the Hide or Show logic block action, you must specify the extension application (not the base application) if you wish to hide or show a field on the extension application.
Restricted field profile extensions
Solution Developers create extensions of restricted field profiles and workflow restricted field profiles to add their own fields to an existing base profile.
Restricted field profiles and workflow restricted field profiles are used to control access to a specified group of fields through use of security permissions and roles. How the profile works, and how to configure them, is unique to each profile type:
- Restricted Field Definitions—Once an extended restricted field profile is created, the fields in the profile are automatically restricted for everyone. To allow access to the fields for specific user groups, you must grant permissions. Permissions manage access to one or more fields in a restricted field profile. Learn more in the Restricted Field Definitions application and Restricted field profile extension configuration topics.
- Workflow Restricted Field Definitions—Once an extended workflow restricted field profile is created, you must reference it in an access rule in the Workflow Security Definitions application to restrict access to the fields. All fields included in the profile are restricted, even if the Allow Update checkbox is selected for the access rule. Learn more in the Workflow security and Workflow restricted field profile extension configuration topics.
Restricted field profile extension configuration
Configure restricted field profile extensions with the Restricted Field Definitions application.
To extend a profile, you can:
- Extend an existing profile so that it is included in the current permissions and roles.
- Create a new profile over an extension table and then add your own permissions and roles.
Extend Existing Profile
To extend an existing restricted field profile, in the Restricted Field Definitions application, you must:
- Create a new record.
- Select the Is Extension Application checkbox.
- Enter the internal name of the existing restricted field profile.
- In the Restricted Fields subtable, add the additional fields which you want restricted.
Permissions which exist on the restricted field profile are applied to any fields you add in the extension profile.
Create Over Extension Table
To create a new restricted field profile, in the Restricted Field Definitions application, you must:
- Create a new record.
- Select the name of the extension table.
- In the Restricted Fields subtable, add the fields from the extension table which you want restricted.
To allow access to fields included in a restricted field profile, you must grant permission. Permissions are configured in the Permission Definitions application, on the Field Security page. To learn more about roles and permissions, see the Permissions and Roles topics.
Workflow restricted field profile extension configuration
Configure workflow restricted field profile extensions with the Workflow Restricted Field Definitions and Workflow Security Definitions applications.
To extend a profile, you can:
- Extend an existing profile so that it is included in the current permissions and roles.
- Create a new profile over an extension table and then add your own permissions and roles.
Extend Existing Profile
To extend an existing workflow restricted field profile, in the Workflow Restricted Fields application, you must:
- Create a new record.
- Select the Is Extension Application checkbox.
- Enter the internal name of the existing workflow restricted field profile.
- In the Restricted Fields subtable, select the Add button to create an entry for each additional field that should be restricted.
The workflow security applied to the original workflow restricted field profile is applied to the extended profile.
Create Over Extension Table
To create a new restricted field profile, in the Workflow Restricted Fields application, you must:
- Create a new record.
- In the Restricted Fields subtable, select the Add button to create an entry for each field that should be restricted.
To restrict fields in the new profile, in the Workflow Security Definitions application, you must:
- Create a new record.
- Select the table the workflow is built over.
- In the Access Rules subtable, enter the name of the restricted field definition.