1. Home
  2. Knowledge Base
  3. MDCMS Enhancements in 8.4

MDCMS Enhancements in 8.4

From Build Date Description
May 4, 2021 The maximum length of object names and source names has been increased from 80 characters to 128 characters to handle longer-named SQL entities and IFS files
The maximum length of application codes has been increased from 4 characters to 6 characters
The maximum length of level numbers has been increased from 2 digits to 3 digits
Object Request Tracing
Beginning with any requests that are checked out or installed after upgrading to MDCMS version 8.4, MDCMS now stores the route that an object request takes as it is deployed to various levels across all partitions. The data includes the date/time of the event as well as the RFP number, user and request reason.
This data can be viewed in the following places:

  • MDCMS Object Manager option Q=Trace Request for an active request
  • MDCMS Objects in RFP option T=Trace Request for active or installed objects on an RFP. The Objects in RFP screen is accessed from RFP Manager or RFP History.
  • MDOpen option Trace Request for any active or historical object request from any primary view where object requests are listed.

The steps listed will include:

  • all steps up to the request for the selected level
  • all steps for the request after the selected level on the same partition
  • if the partition is designated as an MDWorkflow location, then all steps taken on other partitions where data syncing back to this partition is defined.
When copying a promotion level to a new level number, the option can be taken to also copy the distribution levels defined for the promotion level
May 18, 2021 In order to very easily, cleanly and automatically update the DB objects for development and test branch libraries when the objects are installed into the copy of production on the development or test partition, a new parameter “Library in Branch” has been added to the Object Replication Templates
When Branch Library is set to Y, MDCMS will check if an installation has occurred into the branch library for the Object since the Production version of the object was originally checked out. If there has been an install, this means that either the branch was used to create the production version or another long-running project is working on the object and the object will be left as-is. If there hasn’t been an install, then MDCMS will replicate the object to the branch library, keeping the data in the branch library intact. Anyone currently using separate levels to perform this, can now remove those levels and use the replication template instead.
June 6, 2021 The data copy templates can now copy data in physical files that have multiple members from one partition to another
July 5, 2021 Azure DevOps Work Item Interface for import of Work Items in Azure DevOps as Projects, Tasks and Subtasks in MDCMS. Also transition the state of Work Items and post comments from MDCMS.
ability to use update commands instead of compile time commands for new objects compiled from source or for recompiles. This provides a mechanism to wait to create an object until the installation time. A use case for this is for the migration and execution of SQL scripts for indexes created by the IBM index advisor.
July 12, 2021 Execute Bamboo Pipeline plans during the RFP batch process to build, test, deploy, perform workflow acceptance or rollback artifacts on target systems. Any number of Bamboo Pipeline plans can be invoked during the appropriate RFP phase, with the ability to pass any number of MDCMS or customer parameters and to cache parameter values between plans for a very flexible and powerful DevOps master process from within MDCMS.
All job information generated by Bamboo can be automatically injected into the RFP Deployment log for a single point of auditing and troubleshooting across platforms.
Execute GitLab Pipelines during the RFP batch process to build, test, deploy, perform workflow acceptance or rollback artifacts on target systems. Any number of GitLab Pipelines can be invoked during the appropriate RFP phase, with the ability to pass any number of MDCMS or customer parameters and to cache parameter values between pipelines for a very flexible and powerful DevOps master process from within MDCMS.
All job information generated by GitLab can be automatically injected into the RFP Deployment log for a single point of auditing and troubleshooting across platforms.
August 12, 2021 Constraints are now enabled and reapplied during the MDRapid process to reduce downtime during the installation, as long as they were added within the CREATE TABLE script or already existed on the live version of the file, and aren’t separately requested on the same RFP.
The MDRapid console now shows the total number of records in the live and new version of the file per the most recent sync point (when no journal transactions are pending processing for the file by MDRapid). If there is a mismatch, the file will be placed in error status, but will continue syncing. An authorized user must explicitly select to allow record errors for MDCMS to proceed with the installation.
August 26, 2021 MDCMS can now be used as a remote node for Azure, Bamboo, GitLab and Jenkins Pipelines.
If you wish to orchestrate your deployments from a Pipeline rather than from MDCMS itself, you can now trigger the checkout of IBM i source from git repositories directly from a Pipeline step using the MDCMS REST API resource /git/checkout. A trace key can be included in the checkout request which is applied to the RFP. This key can then be passed as the filter parameter for the /RFP/SUBMIT API to submit the RFP for processing for each pending level.
MDCMS can then inform the pipeline of the state of the processing for any RFP exit point using new command MDUPDPIPE.
September 27, 2021 When in the target location list screen for an RFP in the Send screen, new option T can be used to view details about the RFP on the target system that was received as a result of sending from the local system. If the sending system is also registered as a MDWorkflow base partition, and the user is authorized to approve or install RFPs on the target system, the Approve, Launch MDRapid and Install steps can be carried out from the send screen for the target RFP.
A new validation check is performed prior to submitting an RFP to see if any logical files (indexes or views) are based on requested tables, but missing from the RFP. If any are missing, they must be added to the RFP in order to continue. Once that check is finished, MDCMS continues to the warning check for all other dependencies. This makes it very quick and easy to include all DB relations without necessarily taking other types of dependencies.
October 27, 2021 Option to require Conflict Resolution when merging branch changes into the trunk. To enable the conflict resolution requirement, go to MDCMS Settings->Distribution Levels and set the parameter Local Dist Reason to M=Merge with Trunk on the LCL distribution levels from the branch to the trunk. Then, for any future receipts into the trunk from the branch, each conflict has to be resolved in the Compare with Branch dialog before the RFP will be allowed to be submitted.
Project/Task Exit Point Commands. In MDCMS→Projects, you can now press F13 to get to the Project/Task Exit Point screen. From here, you can create exit points. For each exit point, the list of applicable Project Types and/or Task Types can be set as well as the list of from and to status codes being transitioned. Once those filter rules are set, you can then create 1-n commands to be run when a matching transition occurs for a project of match project type or task/subtask of matching task type. Those commands are submitted to batch using the Job Description defined for the exit point so that the interactive process isn’t slowed down.
A good use case for such exit points would be automated email notifications when a task is created or transitioned to a certain status.
MDCMS can now manage the deployment of partitioned tables. And, when a partitioned table is modified, any partitions and partition rules in the prior version of the table are automatically applied to the new version prior to copying any data.
November 19, 2021 MDCMS now has an interface to trigger Azure DevOps Build and Release Pipelines
November 27, 2021 Active Object Requests in the Object Manager and Send List can now be transferred to another developer. This can be for all requests or filtered by Application, Level, RFP, Project, Task and Subtask. For each distinct developer library or folder, the source and objects can also be automatically copied or moved to the new developer’s library or folder.
This is performed from MDSEC using option T=Transfer Requests for a user.
January 9, 2022 Command MDUPDLWC added in order to systematically update the value of Level Wildcard variables.

This can also now be done with REST API level/wildcard

January 16, 2022 Ability to automatically sync database changes among all branch development and test levels on a partition and to recompile dependencies over those database objects.
If development or test branches are defined that contain their own persistent Database libraries, it is recommended to create a Distribution Level from the copy of the production level on the local partition to the lowest level for each of those branches. It is also recommended to set Auto-Send to Y for the production copy level and Default to Send should be set to Y for the distribution level along with setting the Local Distribution Reason to the new value of D=DB Sync.
When the send occurs, MDCMS will only include object requests for *DTAARA, *FILE (PF-DTA or LF) or any of the *SQL types (except *SQLSCR and *SQLPKG). Additionally, a DB object request will be omitted from the send if the same object is currently checked out for modify or delete in the target level.When the receipt occurs, MDCMS will automatically add recompile requests for any dependencies that exist in any level of the branch of the target level and will then auto-submit the RFP at each level for the branch. This keeps the entire process automated unless an error occurs or manual approval or installation is required.
March 13, 2022 Report on any unrequested source or objects left stranded in Delta Level libraries. Data is collected about the last install of the unrequested items as well as where they are requested or physically located higher in the level chain. For Source, the code is additionally compared to the source located higher in the level chain.
The generated report can then be worked with interactively in order to selectively delete unnecessary items.
The report can be generated and acted upon using new option C=Clean from the Promotion Levels settings screen in MDCMS.
Request to automatically create or reset project branches. Once a delta level has been defined in MDCMS, Option C=Clean can be used in order to select to create/reset the folders and libraries making up the delta environment. The reset can include the option to freshly generate all data areas, tables, indexes and views into the delta level with or without data.
MDSNDRFP can now be used to batch a set of transfers to specific target levels, so that a single process will send to several different targets at the same time rather than each one individually. This provides a way to avoid conflicts when trying to send to multiple targets for the same RFP using multiple calls to this command. Parameter BATCH (Batch Element) has been added to the MDSNDRFP command for this purpose.
2 new status codes have been added for better understanding of the state of a target RFP from the send listing:
CLOS – the target RFP has been manually closed by a user
MERG – the object requests on the target RFP have been merged with a different RFP. If this occurs, MDCMS will automatically close the RFP in the send list if all other targets have been installed, merged or ignored. This is because any future tracking will be with the more recently sent RFP that the target RFP had been merged into.
March 20, 2022 MDCRTSCO command added to MDCMS to Create a Send RFP containing any objects in a library that have been created or changed since a specified date. Or, all objects in the library if the minimum date isn’t specified. For an object to be considered, the defined MDCMS attribute for it must point to the library value passed in the command.
April 17, 2022 Developer Library Naming Templates – these new templates provide the naming format for developer source and object libraries/folders for specific Application Levels or across multiple applications or levels.
By default, the developer library handling will continue to be as it has been, but when a template is defined and applied to a level, the library can be based on any fixed value or a naming pattern based on any combination of fixed values together with MD, Project, Task, Level or Custom wildcards. This then provides a simple and flexible way to base the developer library/folder names on specific Project Tasks or RFPs, for example.
Besides setting a naming pattern, the template can be used to define the authority template to apply to an automatically created library/folder as well as define the ASP to create the library in.The template can also be used to force the inclusion of a Project, Task, Subtask or RFP value when checking out an object for modification.
Ability to use substrings or suppress leading zeroes for wildcard values in MDCMS. Any wildcard can have 1 of the following 2 special values appended to them:
(position, length) can be used to use only the substring of a value. For example, wildcard ++PROJID(1,6)++ will result in a value containing only the first 6 characters of the project ID. Or, ++PROLVL(3,1)++ will result in a value containing the 3rd digit of a promotion level.
(TLZ) can be used to trim any leading zeroes from a value. For example, wildcard ++RFPNBR(TLZ)++ will result in a value containing the RFP number without any leading zeroes.
May 1, 2022 Command MDADDORR added to provide the ability to systematically add Object Replication Rules to a specific Object Request
Option added to Object Replication templates to be able to automatically skip replication of a logical file if any of the based-on files for that logical are missing in the target library.
MDRapid can now be used to execute table updates with minimal downtime without requiring a full modify or recompile request.
This can be useful for performing an ALTER TABLE statement or simply to remove deleted records, without needing the source or being concerned about changing the record format level (unless column specs are modified in the ALTER TABLE statements). Update commands aren’t required for this, but will be applied to the temporary version in the MDRapid library while the application is live.
June 3, 2022 MDRapid can now be used for updates to files such as to perform an ALTER TABLE. When a file is requested for update, MDRapid will not be used by default, but can be explicitly enabled by editing the request record and specifying *YES for the Use MDRapid parameter.
When MDRapid begins, it will create a duplicate object without data of the live file into a temporary MDRapid library and then execute the defined update commands against the temporary file. It then copies the data and journal transactions from the live file just as it would for a modified or recompiled file.
This is an ideal way to transition a large, single-member table into a partitioned table without requiring a long downtime window.
If records in a file can be uniquely identified by a combination of fields, MDRapid can use those values to map copied and synced records from the live file to the temporary file in a much shorter period of time for syncing and without needing the performance/disk overhead of journaling over the file in the temporary library.
MDRapid will automatically use unique key values when they are defined for the file or in a primary key/unique key constraint.For files that are only logically unique, the user can use option K=Key in the MDTransform screen for the file to designate up to 99 fields that combine to uniquely identify of record in the file.
June 7, 2022 Enhancements to the administration process when copying or importing Promotion Levels:

  • Prompt for the applied Attribute Templates for Attributes of the copied Promotion Level
  • Prompt for target level numbers and descriptions of Distribution Levels for the copied Promotion Level
  • Find/Replace feature for mass rename of Folders/Libraries for the copied Promotion Level
  • *TEMPDB special value for source changing source libraries to database objects to *TEMP and removing source library settings for non-database objects
July 3, 2022 The MDADDCMD command can now additionally be used to add commands to attributes, *RFP commands for levels, specific RFPs or for Object command definitions for future requests of a specific object.
When copying or receiving level settings, you are now prompted for copying any level wildcards that are defined for the level that is being copied from. Additionally, when pushing all attributes for a level, the level wildcards are also pushed to the target location.
July 10, 2022 When a Pre-Submit error occurs during the automatic submission of an RFP, add specific information about the error and objects involved in the local RFP deployment log as well as in the Problem log of the sent RFP.
In order to pre-define the attribute to be applied to a given object when there isn’t yet installation history for the object, an Object Command definition can be added. When the developer then tries to check out the object without explicitly stating the attribute, MDCMS will check the Object command table when installation history isn’t found.
If there shouldn’t be an object-specific command defined, *NONE can be used for the command string to avoid trying to execute the command.
Commands can be added to the Object-Specific command definition table by using MDADDCMD with parameter REUS set to *DEF
wildcard ++SRCDSC++ can be used on the LABEL statement in SQL scripts in order to automatically apply the text of the source member to the created system object for an SQL element.
July 24, 2022 The Project and Task reports from the MDCMS green screen report configurator now include the filter criteria in the footer of the report.
September 21, 2022 When requesting a *DATA or *DTAGRP object for checkout, the option now exists to create the relevant files in the developer’s library and copy the data for the object from the target environment (or chain) to the developer’s library.
  When requesting to submit an RFP, the pre-submit validation for database relations now includes all relations, including those over the impacted based-on libraries that exist in non-managed libraries. The user can then request the option to delete the relation, such as a performance index, and MDCMS will accept the request even if an attribute for the library containing the dependent relation isn’t defined. In this case, MDCMS will automatically delete the dependent LF (or index or view) immediately prior to deploying the based-on table/view. A rollback in such a circumstance is not possible.
Now that this check is done during the interactive pre-submit phase, the check during the batch bundle phase has now been eliminated.
  Automatically allocate Azure DevOps workitems and ServiceNow tasks for Continuous Integration requests based on tagged commit statements.
Addition of C and C++ attributes in the wizard for generating attributes. Also added *IFS versions of bound cl attributes