<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
            http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">

    <property name="cmUserIdLength" value="1024" dbms="postgresql,oracle"/>
    <property name="cmUserIdLength" value="255" dbms="mysql,mssql"/>

    <changeSet id="03-profile-tables" author="marst">
        <createTable tableName="acm_user_org">
            <column name="cm_user_org_id" type="${idType}">
                <constraints primaryKey="true" primaryKeyName="pk_user_org"/>
            </column>
            <column name="cm_company_name" type="VARCHAR(512)" defaultValue="ACTIVE">
                <constraints nullable="false"/>
            </column>
            <column name="cm_first_address" type="VARCHAR(1024)" defaultValue="ACTIVE">
                <constraints nullable="true"/>
            </column>
            <column name="cm_second_address" type="VARCHAR(1024)" defaultValue="ACTIVE">
                <constraints nullable="true"/>
            </column>
            <column name="cm_main_office_phone" type="VARCHAR(128)" defaultValue="ACTIVE">
                <constraints nullable="true"/>
            </column>
            <column name="cm_fax" type="VARCHAR(128)" defaultValue="ACTIVE">
                <constraints nullable="true"/>
            </column>
            <column name="cm_city" type="VARCHAR(128)" defaultValue="ACTIVE">
                <constraints nullable="true"/>
            </column>
            <column name="cm_state" type="VARCHAR(128)" defaultValue="ACTIVE">
                <constraints nullable="true"/>
            </column>
            <column name="cm_zip" type="VARCHAR(128)" defaultValue="ACTIVE">
                <constraints nullable="true"/>
            </column>
            <column name="cm_website" type="VARCHAR(128)" defaultValue="ACTIVE">
                <constraints nullable="true"/>
            </column>
            <column name="cm_organization" type="${fkIdType}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_location" type="VARCHAR(512)" defaultValue="ACTIVE">
                <constraints nullable="false"/>
            </column>
            <column name="cm_im_account" type="VARCHAR(128)" defaultValue="ACTIVE">
                <constraints nullable="true"/>
            </column>
            <column name="cm_im_system" type="VARCHAR(128)" defaultValue="ACTIVE">
                <constraints nullable="true"/>
            </column>
            <column name="cm_office_phone" type="VARCHAR(128)" defaultValue="ACTIVE">
                <constraints nullable="true"/>
            </column>
            <column name="cm_mobile_phone" type="VARCHAR(128)" defaultValue="ACTIVE">
                <constraints nullable="true"/>
            </column>
            <column name="cm_user" type="VARCHAR(${cmUserIdLength})">
                <constraints nullable="false"/>
            </column>
        </createTable>

        <createIndex tableName="acm_user_org" indexName="idx_user">
            <column name="cm_user"/>
        </createIndex>

        <createIndex tableName="acm_user_org" indexName="idx_organization">
            <column name="cm_organization"/>
        </createIndex>

    </changeSet>

    <changeSet id="03-drop-companyName-column-add-profile_ecm_folder_id-column" author="marst" dbms="${excludeMSSQL}">
        <dropColumn tableName="acm_user_org" columnName="cm_company_name"/>
        <addColumn tableName="acm_user_org">
            <column name="cm_profile_ecm_folder_id" type="VARCHAR(1024)">
                <constraints nullable="true"/>
            </column>
        </addColumn>
        <createIndex tableName="acm_user_org" indexName="idx_profile_folder_id">
            <column name="cm_profile_ecm_folder_id"/>
        </createIndex>
    </changeSet>

    <changeSet id="03-1-drop-companyName-column-add-profile_ecm_folder_id-column-mssql" author="marst" dbms="mssql">
        <sql>ALTER TABLE acm_user_org DROP CONSTRAINT DF_acm_user_org_cm_company_name</sql>
    </changeSet>

    <changeSet id="03-2-drop-companyName-column-add-profile_ecm_folder_id-column-mssql" author="riste.tutureski" dbms="mssql">
        <dropColumn tableName="acm_user_org" columnName="cm_company_name"/>
        <addColumn tableName="acm_user_org">
            <column name="cm_profile_ecm_folder_id" type="VARCHAR(1024)">
                <constraints nullable="true"/>
            </column>
        </addColumn>
        <createIndex tableName="acm_user_org" indexName="idx_profile_folder_id">
            <column name="cm_profile_ecm_folder_id"/>
        </createIndex>
    </changeSet>

    <changeSet id="04-edit-cm-location-and-cm-organization-column" author="marst">
        <!--<addNotNullConstraint tableName="acm_user_org" columnName="cm_location"/>-->
        <dropNotNullConstraint tableName="acm_user_org" columnName="cm_location" columnDataType="VARCHAR(512)"/>
        <dropNotNullConstraint tableName="acm_user_org" columnName="cm_organization" columnDataType="${fkIdType}"/>
    </changeSet>

    <changeSet id="05-add-fileId-creator-modifier-and-date-fields" author="marst">
        <addColumn tableName="acm_user_org">
            <column name="cm_ecm_file_id" type="${fkIdType}" defaultValue="-1"></column>
        </addColumn>
    </changeSet>

    <changeSet id="06-add-title-field" author="marst">
        <addColumn tableName="acm_user_org">
            <column name="cm_title" type="VARCHAR(1024)"></column>
        </addColumn>
    </changeSet>

    <changeSet id="userorg-07-add-container-folder-id" author="dmiller">
        <addColumn tableName="acm_user_org">
            <column name="cm_container_folder_id" type="${fkIdType}"/>
        </addColumn>
    </changeSet>

    <changeSet id="userorg-08-rename-container-id" author="dmiller">
        <renameColumn tableName="acm_user_org" oldColumnName="cm_container_folder_id" newColumnName="cm_container_id"
            columnDataType="${fkIdType}"/>
    </changeSet>

    <changeSet id="userorg-09-add-column-cm-object-type" author="nebojsha.davidovikj">
        <addColumn tableName="acm_user_org">
            <column name="cm_object_type" type="VARCHAR(100)" defaultValue="USER_ORG">
                <constraints nullable="false"/>
            </column>
        </addColumn>
    </changeSet>

    <changeSet id="userorg-10-add-outlook-password" author="dmiller">
        <addColumn tableName="acm_user_org">
            <column name="cm_ms_outlook_password" type="VARCHAR(1024)"/>
        </addColumn>
    </changeSet>

    <changeSet id="11-acm_user_org-id" author="nebojsha.davidovikj">
        <createTable tableName="acm_user_org_id">
            <column name="cm_seq_num" type="${idType}"/>
            <column name="cm_seq_name" type="VARCHAR(255)"/>
        </createTable>
        <insert tableName="acm_user_org_id">
            <column name="cm_seq_num" value="100"></column>
            <column name="cm_seq_name" value="acm_user_org"></column>
        </insert>
    </changeSet>

    <changeSet id="12-add-signature-fileId" author="ilinpetar">
        <preConditions onFail="MARK_RAN">
            <and>
                <tableExists tableName="acm_file"/>
                <columnExists tableName="acm_user_org" columnName="cm_file_id"/>
            </and>
        </preConditions>
        <addColumn tableName="acm_user_org">
            <column name="cm_ecm_signature_file_id" type="${fkIdType}"/>
        </addColumn>
        <addForeignKeyConstraint baseTableName="acm_user_org" baseColumnNames="cm_ecm_signature_file_id"
            constraintName="fk_user_org_signature_fileid" referencedTableName="acm_file" referencedColumnNames="cm_file_id"
            deferrable="${deferrable}" initiallyDeferred="${initially.deferred}"/>
    </changeSet>

    <changeSet id="13-add-signature-fileId" author="bojan.milenkoski">
        <preConditions onFail="MARK_RAN">
            <not>
                <columnExists tableName="acm_user_org" columnName="cm_ecm_signature_file_id"/>
            </not>
        </preConditions>
        <addColumn tableName="acm_user_org">
            <column name="cm_ecm_signature_file_id" type="${fkIdType}"/>
        </addColumn>
    </changeSet>

</databaseChangeLog>

