A variety of factors are considered when assessing the success of a project. Naming standards are an important, but often overlooked component. The application and enforcement of naming standards not only establishes consistency in the repository, but provides a friendly environment for developers. Choose a good naming standard and adhering to it to ensures that the repository can be easily understood by all developers.
Having a good naming convention facilitates smooth migrations and improves readability for anyone reviewing or carrying out maintenance on the repository objects. It helps them to understand the processes being affected. If consistent names and descriptions are not used, significant time may be needed to understand the workings of mappings and transformation objects. If no description is provided, a developer is likely to spend considerable time going through an object or mapping to understand its objective.
The following pages offer suggested naming conventions for various repository objects. Whatever convention is chosen, it is important to make the selection very early in the development cycle and communicate the convention to project staff working on the repository. The policy can be enforced by peer review and at test phases by adding processes to check conventions both to test plans and to test execution documents.
Designer Objects |
Suggested Naming Conventions |
Mapping |
m_{PROCESS}_{SOURCE_SYSTEM}_{TARGET_NAME} or suffix with _{descriptor} if there are multiple mappings for that single target table |
Mapplet |
mplt_{DESCRIPTION} |
Target |
t_{update_types(s)}_{TARGET_NAME} this naming convention should only occur within a mapping as the actual target name object affects the actual table that PowerCenter will access |
Aggregator Transformation |
AGG_{FUNCTION} that leverages the expression and/or a name that describes the processing being done. |
Application Source Qualifier Transformation |
ASQ_{TRANSFORMATION} _{SOURCE_TABLE1}_{SOURCE_TABLE2} represents data from application source. |
Custom Transformation |
CT_{TRANSFORMATION} name that describes the processing being done. |
Data Quality Transform |
IDQ_{descriptor}_{plan} with the descriptor describing what this plan is doing with the optional plan name included if desired. |
Expression Transformation |
EXP_{FUNCTION} that leverages the expression and/or a name that describes the processing being done. |
External Procedure Transformation |
EXT_{PROCEDURE_NAME} |
Filter Transformation |
FIL_ or FILT_{FUNCTION} that leverages the expression or a name that describes the processing being done. |
Flexible Target Key |
Fkey{descriptor} |
HTTP |
HTTP_{descriptor} |
Idoc Interpreter |
idoci_{Descriptor}_{IDOC Type} defining what the idoc does and possibly the idoc message. |
Idoc Prepare |
idocp_{Descriptor}_{IDOC Type} defining what the idoc does and possibly the idoc message. |
Java Transformation |
JTX_{FUNCTION} that leverages the expression or a name that describes the processing being done. |
Joiner Transformation |
JNR_{DESCRIPTION} |
Lookup Transformation |
LKP_{TABLE_NAME} or suffix with _{descriptor} if there are multiple look-ups on a single table. For unconnected look-ups, use ULKP in place of LKP. |
Mapplet Input Transformation |
MPLTI_{DESCRIPTOR} indicating the data going into the mapplet. |
Mapplet Output Transformation |
MPLTO_{DESCRIPTOR} indicating the data coming out of the mapplet. |
MQ Source Qualifier Transformation |
MQSQ_{DESCRIPTOR} defines the messaging being selected. |
Normalizer Transformation |
NRM_{FUNCTION} that leverages the expression or a name that describes the processing being done. |
Rank Transformation |
RNK_{FUNCTION} that leverages the expression or a name that describes the processing being done. |
Router Transformation |
RTR_{DESCRIPTOR} |
SAP DMI Prepare |
dmi_{Entity Descriptor}_{Secondary Descriptor} defining what entity is being loaded and a secondary description if multiple DMI objects are being leveraged in a mapping. |
Sequence Generator Transformation |
SEQ_{DESCRIPTOR} if using keys for a target table entity, then refer to that |
Sorter Transformation |
SRT_{DESCRIPTOR} |
Source Qualifier Transformation |
SQ_{SOURCE_TABLE1}_{SOURCE_TABLE2}. Using all source tables can be impractical if there are a lot of tables in a source qualifier, so refer to the type of information being obtained, for example a certain type of product SQ_SALES_INSURANCE_PRODUCTS. |
SQL Transformation |
SQL_{Query function to be performed} |
Stored Procedure Transformation |
SP_{STORED_PROCEDURE_NAME} |
Transaction Control Transformation |
TC_{DESCRIPTOR} indicating the function of the transaction control. |
Union Transformation |
UN_{DESCRIPTOR} |
Unstructured Data Transform |
UD_{descriptor} with the descriptor ideintifying the kind of data being parsed by the UDO transform. |
Update Strategy Transformation |
UPD_{UPDATE_TYPE(S)} or UPD_{UPDATE_TYPE(S)}_{TARGET_NAME} if there are multiple targets in the mapping. E.g., UPD_UPDATE_EXISTING_EMPLOYEES |
Web Service Consumer |
WSC_{descriptor} |
XML Generator Transformation |
XG_{DESCRIPTOR}defines the target message. |
XML Parser Transformation |
XP_{DESCRIPTOR}defines the messaging being selected. |
XML Source Qualifier Transformation |
XSQ_{DESCRIPTOR}defines the data being selected. |
Ports names should remain the same as the source unless some other action is performed on the port. In that case, the port should be prefixed with the appropriate name.
When the developer brings a source port into a lookup, the port should be prefixed with in_ or i_. This helps the user immediately identify the ports that are being input without having to line up the ports with the input checkbox. In any other transformation, if the input port is transformed in an output port with the same name, prefix the input port with in_ or i_.
Generated output ports can also be prefixed with out_ or o_. This helps trace the port value throughout the mapping as it may travel through many other transformations. If it is intended to be able to use the autolink feature based on names, then outputs may be better left as the name of the target port in the next transformation. For variables inside a transformation, the developer can use the prefix v, 'var_ or v_' plus a meaningful name.
To highlight the input/output, and variable port prefixes lowercase may be specified even when an uppercase naming standard is used for ports.
With some exceptions, port standards apply when creating a transformation object. The exceptions are the Source Definition, the Source Qualifier, the Lookup, and the Target Definition ports, which must not change since the port names are used to retrieve data from the database or filesystem and sometimes these are case sensitive.
Other transformations that are not applicable to the port standards are:
All other transformation object ports can be prefixed or suffixed with:
Prefixes are preferred because they are generally easier to notice; developers do not need to expand the columns to see the suffix for longer port names.
Transformation object ports can also:
This section defines the standards to be used for transformation descriptions in the Designer.
Where:
Must adhere to the following format:
Expressions can be distinctly different depending on the situation; therefore the explanation should be specific to the actions being performed.
Within each Expression, transformation ports have their own description in the format:
Must adhere to the following format:
Aggregators can be distinctly different, depending on the situation; therefore the explanation should be specific to the actions being performed.
Within each Aggregator, transformation ports have their own description in the format:
Must adhere to the following format:
Where:
Must adhere to the following format:
Where:
Must adhere to the following format:
Where:
Must adhere to the following format:
Where:
These comments describe the source data obtained and the structure file, table or facts and dimensions that it populates. Remember to use business terms along with such technical details as table names. This is beneficial when maintenance is required or if issues arise that need to be discussed with business analysts.
These comments are used to explain the process that the mapplet carries out. Always be sure to see the notes regarding descriptions for the input and output transformation.
Repositories, as well as repository level objects, should also have meaningful names. Repositories should prefix with either L_ for local or G for global and a descriptor. Descriptors usually include information about the project and/or level of the environment (e.g., PROD, TEST, DEV).
Working folder names should be meaningful and include project name and, if there are multiple folders for that one project, a descriptor. User groups should also include project name and descriptors, as necessary. For example, folder DW_SALES_US and DW_SALES_UK could both have TEAM_SALES as their user group. Individual developer folders or non-production folders should prefix with z_ so that they are grouped together and not confused with working production folders.
Any object within a folder can be shared across folders and maintained in one central location. These objects are sources, targets, mappings, transformations, and mapplets. To share objects in a folder, the folder must be designated as shared. In addition to facilitating maintenance, shared folders help reduce the size of the repository since shortcuts are used to link to the original, instead of copies.
Only users with the proper permissions can access these shared folders. These users are responsible for migrating the folders across the repositories and, with help from the developers, for maintaining the objects within the folders. For example, if an object is created by a developer and is to be shared, the developer should provide details of the object and the level at which the object is to be shared before the Administrator accepts it as a valid entry into the shared folder. The developers, not necessarily the creator, control the maintenance of the object, since they must ensure that a subsequent change does not negatively impact other objects.
If the developer has an object that he or she wants to use in several mappings or across multiple folders, like an Expression transformation that calculates sales tax, the developer can place the object in a shared folder. Then use the object in other folders by creating a shortcut to the object. In this case, the naming convention is sc_ (e.g., sc_EXP_CALC_SALES_TAX). The folder should prefix with SC_ to identify it as a shared folder and keep all shared folders grouped together in the repository.
WorkFlow Objects |
Suggested Naming Convention |
Session |
s_{MappingName} |
Command Object |
cmd_{DESCRIPTOR} |
Worklet |
wk or wklt_{DESCRIPTOR} |
Workflow |
wkf or wf_{DESCRIPTOR} |
Email Task: |
email_ or eml_{DESCRIPTOR} |
Decision Task: |
dcn_ or dt_{DESCRIPTOR} |
Assign Task: |
asgn_{DESCRIPTOR} |
Timer Task: |
timer_ or tmr_{DESCRIPTOR} |
Control Task: |
ctl_{DESCRIPTOR}Specify when and how the PowerCenter Server is to stop or abort a workflow by using the Control task in the workflow. |
Event Wait Task: |
wait_ or ew_{DESCRIPTOR}Waits for an event to occur. Once the event triggers, the PowerCenter Server continues executing the rest of the workflow. |
Event Raise Task: |
raise_ or er_{DESCRIPTOR} Represents a user-defined event. When the PowerCenter Server runs the Event-Raise task, the Event-Raise task triggers the event. Use the Event-Raise task with the Event-Wait task to define events. |
All Open Database Connectivity (ODBC) data source names (DSNs) should be set up in the same way on all client machines. PowerCenter uniquely identifies a source by its Database Data Source (DBDS) and its name. The DBDS is the same name as the ODBC DSN since the PowerCenter Client talks to all databases through ODBC.
Also be sure to setup the ODBC DSNs as system DSNs so that all users of a machine can see the DSN. This approach ensures that there is less chance of a discrepancy occurring among users when they use different (i.e., colleagues') machines and have to recreate a new DSN when they use a separate machine.
If ODBC DSNs are different across multiple machines, there is a risk of analyzing the same table using different names. For example, machine1 has ODBS DSN Name0 that points to database1. TableA gets analyzed in on machine 1. TableA is uniquely identified as Name0.TableA in the repository. Machine2 has ODBS DSN Name1 that points to database1. TableA gets analyzed in on machine 2. TableA is uniquely identified as Name1.TableA in the repository. The result is that the repository may refer to the same object by multiple names, creating confusion for developers, testers, and potentially end users.
Also, refrain from using environment tokens in the ODBC DSN. For example, do not call it dev_db01. When migrating objects from dev, to test, to prod, PowerCenter can wind up with source objects called dev_db01 in the production repository. ODBC database names should clearly describe the database they reference to ensure that users do not incorrectly point sessions to the wrong databases.
Security considerations may dictate using the company name of the database or project instead of {user}_{database name}, except for developer scratch schemas, which are not found in test or production environments. Be careful not to include machine names or environment tokens in the database connection name. Database connection names must be very generic to be understandable and ensure a smooth migration.
The naming convention should be applied across all development, test, and production environments. This allows seamless migration of sessions when migrating between environments. If an administrator uses the Copy Folder function for deployment, session information is also copied. If the Database Connection information does not already exist in the folder the administrator is copying to, it is also copied. So, if the developer uses connections with names like Dev_DW in the development repository, they are likely to eventually wind up in the test, and even the production repositories as the folders are migrated. Manual intervention is then necessary to change connection names, user names, passwords, and possibly even connect strings.
Instead, if the developer just has a DW connection in each of the three environments, when the administrator copies a folder from the development environment to the test environment, the sessions automatically use the existing connection in the test repository. With the right naming convention, sessions can be migrated from test to the production repository without manual intervention.
At the beginning of a project, have the Repository Administrator or DBA setup all connections in all environments based on the issues discussed in this Best Practice. Then use permission options to protect these connections so that only specified individuals can modify them. Whenever possible, avoid allowing developers create their own connections using different conventions and possibly duplicating connections.