<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements. See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership. The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied. See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<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-4.1.xsd">
    <changeSet author="fineract" id="1" failOnError="false">
        <preConditions onFail="MARK_RAN" onError="MARK_RAN">
            <sqlCheck expectedResult="1">SELECT 1
                                         FROM information_schema.columns
                                         WHERE table_name='m_loan_repayment_schedule' and column_name='credited_principal'</sqlCheck>
        </preConditions>
        <renameColumn tableName="m_loan_repayment_schedule" oldColumnName="credited_principal" newColumnName="credits_amount"  columnDataType="DECIMAL(19, 6)"/>
    </changeSet>
</databaseChangeLog>
