Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

 

Table of Contents
maxLevel2

...

Note: when modifySQL is run, Liquibase has already converted MySQL's DATETIME into Oracle TIMESTAMP, so TIMESTAMP is what needs to be in the replace clause to match against.the replace clause to match against.

Contexts

Liquibase has the concept of a context.  When running liquibase, a context can be specified and only changes with this context will be loaded.  All liquibase change files should have the appropriate context on them.  All liquibase change sets should have the appropriate context specified.  Multiple contexts can be specified by separating them with commas.  Here is an example:

Code Block
languagexml
<changeSet author="KFS51" id="KFSCNTRB-734" context="bootstrap,demo,unit">
	<comment>KFSCNTRB-734</comment>
	<addColumn tableName="FS_DOC_HEADER_T">
		<column name="SECURE_FIELD" type="VARCHAR(255)" />
	</addColumn>
</changeSet>

 

This is a list of the contexts defined for financials.

ContextPurpose
bootstrapThis context will load the minimum data to start up and run the financials project
demoThis context will load demo data for financials.
unitThis context will setup a database with demo data from kfs and rice in the same database. It is used for unit tests.
kfskc_bootstrapThis context (when used along with bootstrap) will load the minimum data to start up financials with integration with Kuali Coeus.
kfskc_demoThis context (when used along with demo) will load the demo data for financials setup for integration with Kuali Coeus.

 

DBMS

The dbms setting is used to specify that a changeset is for a specific database.  An example of where this is used is for sequences.  A sequence is a feature specific to Oracle.  Financials will require a table in place of the sequence when running against MySql.  The following is an example that uses the dbms attribute.

Code Block
<changeSet author="kfs" id="CA_A21_ICR_ACCT_SEQ" dbms="mysql" context="bootstrap,demo,unit">
  <createTable tableName="CA_A21_ICR_ACCT_SEQ">
    <column autoIncrement="true" name="id" type="BIGINT">
      <constraints primaryKey="true"/>
    </column>
  </createTable>
  <insert tableName="CA_A21_ICR_ACCT_SEQ">
    <column name="id" value="10020"/>
  </insert>
</changeSet>
<changeSet author="kfs" id="CA_A21_ICR_ACCT_SEQ" dbms="oracle" context="bootstrap,demo,unit">
  <createSequence sequenceName="CA_A21_ICR_ACCT_SEQ" startValue="10020"/>
</changeSet>

Sample Liquibase Scripts

Code Block
titleCreate Table
	<changeSet author="KFS50" id="KFSMI-6921_CA_ACCT_AUTODEF_ICR_T">
		<comment>KFSMI-6921 Create Account and A21SubAccount ICR collection tables</comment>
		<createTable tableName="CA_ACCT_AUTODEF_ICR_T">
			<column name="CA_ICR_ACCT_GNRTD_ID" type="DECIMAL(10,0)">
				<constraints primaryKey="true" primaryKeyName="CA_ACCT_AUTODEF_ICR_TP1" />
			</column>
			<column name="OBJ_ID" type="VARCHAR(36)">
				<constraints nullable="false" unique="true" uniqueConstraintName="CA_ACCT_AUTODEF_ICR_TC0" />
			</column>
			<column name="VER_NBR" type="DECIMAL(8,0)" defaultValueNumeric="1">
				<constraints nullable="false" />
			</column>
			<column name="ACCT_DFLT_ID" type="DECIMAL(10,0)" />
			<column name="ICR_FIN_COA_CD" type="VARCHAR(2)" />
			<column name="ICR_FIN_ACCT_NBR" type="VARCHAR(7)" />
			<column name="ACLN_PCT" type="DECIMAL(35,20)" />
			<column name="ACTV_IND" type="VARCHAR(1)" defaultValue="Y" />
		</createTable>
	</changeSet>

...

Update liquibase files, if any, are located in a package corresponding to each module + /db/phase5phaseX/ (ex: kfs-ar/src/main/resources/org.kuali.kfs.module.ar/db/phase5phaseX/).

LiquiRelational Properties

...

No Format
java -jar {/path/to/liquinbase}.jar --logLevel=finest --defaultsFile={path/to}/liquibase.properties --changeLogFile={path/to}/liquibase.xml updateSQL 

LiquiBase Notes

...