Documentation Home

Simple Transition

There is a new simplified strategy for Promotion, Approval and Deployment processes. It opts for direct JDBC persistence operations and batch processing which increases performance.
This is an Opt-In feature which is enabled by this property:

sandbox.lifecycle.strategy.simple.enabled=true

Since the new strategy processes Promotions/Approvals in batches, the batch size can be specified with the property below.

sandbox.lifecycle.strategy.simple.pageSize=1

One caveat of the batch approach is that an error in any one Promotion/Approval will cause the entire batch to fail. In such case there are two possible actions that can be taken:

  • Fix the error and promote/approve the entire batch again
  • Skip that failed entity and promote/approve remaining of the batch. Then fix the error and promote again individually.

Benefits of the new simplified strategy

  • This strategy deals strictly with SQL/JDBC and transition records in tables therefore Performance is much much better for large volumes
  • There are fewer cache concerns
  • There are no PersistencePackage interpretation problems. The ideas are simple and the transitions are handled at a lower level, one table at a time.

Schema changes required

A few new tables are needed for this new process. Below are the table definitions in MySQL format. Convert to the format of your database platform as needed:

CREATE TABLE BLC_SNDBX_WRKFLW_CHG_DTL (
  WRKFLW_CHG_DTL_ID bigint NOT NULL,
  CATALOG_DISC bigint DEFAULT NULL,
  DERIVED_TABLE varchar(255) DEFAULT NULL,
  RELATED_TO_TABLE varchar(255) DEFAULT NULL,
  SHORT_VAL varchar(4000) DEFAULT NULL,
  SITE_DISC bigint DEFAULT NULL,
  SITE_ID bigint DEFAULT NULL,
  TARGET_ID bigint DEFAULT NULL,
  TRANSITION_TYPE varchar(255) DEFAULT NULL,
  PRIMARY KEY (WRKFLW_CHG_DTL_ID),
  KEY CHG_DTL_TARGET_IDX (TARGET_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE BLC_SNDBX_WRKFLW_CHG_DTL_REF (
  DETAIL_REF_ID bigint NOT NULL,
  DETAIL_ID bigint DEFAULT NULL,
  WRKFLW_SNDBX_ID bigint DEFAULT NULL,
  PRIMARY KEY (DETAIL_REF_ID),
  KEY CHG_DTL_TARGET_REF_IDX (DETAIL_ID),
  KEY CHG_DTL_WRKFLW_REF_IDX (WRKFLW_SNDBX_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE BLC_SNDBX_WRKFLW_CHG_DTL_VAL (
  CHG_DETAIL_VAL_ID bigint NOT NULL,
  VALUE varchar(4000) DEFAULT NULL,
  CHG_DETAIL_ID bigint DEFAULT NULL,
  PRIMARY KEY (CHG_DETAIL_VAL_ID),
  KEY FK1C1BCEA980E73722 (CHG_DETAIL_ID),
  CONSTRAINT FK1C1BCEA980E73722 FOREIGN KEY (CHG_DETAIL_ID) REFERENCES BLC_SNDBX_WRKFLW_CHG_DTL (WRKFLW_CHG_DTL_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Postgres is not configured for implicit casting of boolean by default. Use the following to configure:

UPDATE pg_cast set castcontext ='i' where castsource=23 and casttarget=16;