diff --git a/src-test/data/configScripts/TEST.xml b/src-test/data/configScripts/TEST.xml
new file mode 100644
--- /dev/null
+++ b/src-test/data/configScripts/TEST.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+  <data>
+    <!--1--><TEST>
+    <!--1-->  <TEST_ID><![CDATA[1]]></TEST_ID>
+    <!--1--></TEST>
+  </data>
\ No newline at end of file
diff --git a/src-test/model/configScripts/BASE_MODEL.xml b/src-test/model/configScripts/BASE_MODEL.xml
new file mode 100644
--- /dev/null
+++ b/src-test/model/configScripts/BASE_MODEL.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+  <database name="TABLE TEST">
+    <table name="TEST" primaryKey="TEST_ID">
+      <column name="TEST_ID" primaryKey="true" required="true" type="VARCHAR" size="32" autoIncrement="false">
+        <default/>
+        <onCreateDefault/>
+      </column>
+      <column name="COL1" primaryKey="false" required="false" type="VARCHAR" size="60" autoIncrement="false">
+        <default/>
+        <onCreateDefault/>
+      </column>
+      <column name="COL2" primaryKey="false" required="false" type="VARCHAR" size="60" autoIncrement="false">
+        <default/>
+        <onCreateDefault/>
+      </column>
+    </table>
+  </database>
\ No newline at end of file
diff --git a/src-test/model/configScripts/configScript.xml b/src-test/model/configScripts/configScript.xml
new file mode 100644
--- /dev/null
+++ b/src-test/model/configScripts/configScript.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+  <vector>
+    <columnDataChange tablename="TEST" columnname="COL1" pkRow="1">
+      <oldValue/>
+      <newValue><![CDATA[active='Y']]></newValue>
+    </columnDataChange>
+      <columnDataChange tablename="TEST" columnname="COL2" pkRow="1">
+      <oldValue/>
+      <newValue><![CDATA[This is the first part 
+This is the second part]]></newValue>
+    </columnDataChange>
+  </vector>
\ No newline at end of file
diff --git a/src-test/src/org/openbravo/dbsm/test/base/DbsmTest.java b/src-test/src/org/openbravo/dbsm/test/base/DbsmTest.java
--- a/src-test/src/org/openbravo/dbsm/test/base/DbsmTest.java
+++ b/src-test/src/org/openbravo/dbsm/test/base/DbsmTest.java
@@ -1,6 +1,6 @@
 /*
  ************************************************************************************
- * Copyright (C) 2015 Openbravo S.L.U.
+ * Copyright (C) 2015-2016 Openbravo S.L.U.
  * Licensed under the Apache Software License version 2.0
  * 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
@@ -465,6 +465,18 @@
     io.writeToDir(originalDB, new File(path));
   }
 
+  /** Reads a configuration script and returns the changes that it contains */
+  protected Vector<Change> readConfigScript(String configScriptPath) {
+    File configScriptFile = new File(configScriptPath);
+    if (configScriptFile.exists()) {
+      log.info("Loading configuration script " + configScriptFile.getAbsolutePath());
+      final DatabaseIO dbIO = new DatabaseIO();
+      return dbIO.readChanges(configScriptFile);
+    }
+    log.error("Couldn't find configuration script " + configScriptFile.getAbsolutePath());
+    return null;
+  }
+
   /** returns platform for current execution */
   protected Platform getPlatform() {
     platform = PlatformFactory.createNewPlatformInstance(getDataSource());
diff --git a/src-test/src/org/openbravo/dbsm/test/configscript/ConfigScriptColumnDataChange.java b/src-test/src/org/openbravo/dbsm/test/configscript/ConfigScriptColumnDataChange.java
new file mode 100644
--- /dev/null
+++ b/src-test/src/org/openbravo/dbsm/test/configscript/ConfigScriptColumnDataChange.java
@@ -0,0 +1,92 @@
+/* ************************************************************************************
+ * Copyright (C) 2016 Openbravo S.L.U.
+ * Licensed under the Apache Software License version 2.0
+ * 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.
+ ************************************************************************************
+ */
+
+package org.openbravo.dbsm.test.configscript;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+
+import org.apache.ddlutils.alteration.Change;
+import org.apache.ddlutils.model.Database;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.openbravo.dbsm.test.base.DbsmTest;
+
+@RunWith(Parameterized.class)
+public class ConfigScriptColumnDataChange extends DbsmTest {
+
+  private static final String DATA_DIRECTORY = "data/configScripts";
+  private static final String BASE_MODEL = "configScripts/BASE_MODEL.xml";
+  private static final String CONFIG_SCRIPT = "model/configScripts/configScript.xml";
+  private static final String TEST_TABLE = "TEST";
+  private static final Map<String, String> columnDataChanges;
+
+  static {
+    columnDataChanges = new LinkedHashMap<String, String>();
+    columnDataChanges.put("TEST_ID", "1");
+    // check for single quote
+    columnDataChanges.put("COL1", "active='Y'");
+    // check for breakline
+    columnDataChanges.put("COL2", "This is the first part \nThis is the second part");
+  }
+
+  public ConfigScriptColumnDataChange(String rdbms, String driver, String url, String sid,
+      String user, String password, String name) throws FileNotFoundException, IOException {
+    super(rdbms, driver, url, sid, user, password, name);
+  }
+
+  @Test
+  public void isDataChangeApplied() {
+    resetDB();
+    Database database = updateDatabase(BASE_MODEL, DATA_DIRECTORY, Arrays.asList(TEST_TABLE));
+    Vector<Change> changes = readConfigScript(CONFIG_SCRIPT);
+    if (changes != null) {
+      getPlatform().applyConfigScript(database, changes);
+    }
+    assertEquals("Data changed correctly by configuration script",
+        getColumnDataChangesColumnValues(), getRowValues());
+  }
+
+  private static List<String> getColumnDataChangesColumnValues() {
+    return new ArrayList<String>(columnDataChanges.values());
+  }
+
+  private List<String> getRowValues() {
+    List<String> values = new ArrayList<String>();
+    String rowId = columnDataChanges.get("TEST_ID");
+    try {
+      Row row = getRowValues(TEST_TABLE, rowId);
+      for (String column : columnDataChanges.keySet()) {
+        values.add(getColumnValue(row, column));
+      }
+    } catch (SQLException sqlex) {
+      log.error("Error retrieving row with id " + rowId, sqlex);
+    }
+    return values;
+  }
+
+  private String getColumnValue(Row row, String columnName) {
+    if (getRdbms() == Rdbms.ORA) {
+      return row.getValue(columnName.toUpperCase());
+    }
+    return row.getValue(columnName.toLowerCase());
+  }
+}
diff --git a/src/org/apache/ddlutils/platform/PlatformImplBase.java b/src/org/apache/ddlutils/platform/PlatformImplBase.java
--- a/src/org/apache/ddlutils/platform/PlatformImplBase.java
+++ b/src/org/apache/ddlutils/platform/PlatformImplBase.java
@@ -62,6 +62,7 @@
 import org.apache.ddlutils.alteration.Change;
 import org.apache.ddlutils.alteration.ColumnChange;
 import org.apache.ddlutils.alteration.ColumnDataChange;
+import org.apache.ddlutils.alteration.ColumnSizeChange;
 import org.apache.ddlutils.alteration.RemoveRowChange;
 import org.apache.ddlutils.dynabean.SqlDynaClass;
 import org.apache.ddlutils.dynabean.SqlDynaProperty;
@@ -2909,16 +2910,40 @@
   }
 
   public void applyConfigScript(Database database, Vector<Change> changes) {
+    Vector<Change> columnDataChanges = new Vector<Change>();
+    List<ColumnSizeChange> columnSizeChanges = new ArrayList<ColumnSizeChange>();
+    for (Change change : changes) {
+      if (change instanceof ColumnDataChange)
+        columnDataChanges.add(change);
+      else if (change instanceof ColumnSizeChange)
+        columnSizeChanges.add((ColumnSizeChange) change);
+    }
+    applyColumnDataChanges(database, columnDataChanges);
+    applyColumnSizeChanges(database, columnSizeChanges);
+  }
+
+  private void applyColumnDataChanges(Database database, Vector<Change> columnDataChanges) {
+    try {
+      Connection connection = borrowConnection();
+      alterData(connection, database, columnDataChanges);
+      connection.close();
+    } catch (Exception e) {
+      _log.error("Error applying column size changes", e);
+    }
+  }
+
+  private void applyColumnSizeChanges(Database database, List<ColumnSizeChange> columnSizeChanges) {
     StringWriter buffer = new StringWriter();
-
     getSqlBuilder().setWriter(buffer);
     try {
-      getSqlBuilder().getConfigScript(database, changes);
+      for (ColumnSizeChange change : columnSizeChanges) {
+        getSqlBuilder().printColumnSizeChange(database, (ColumnSizeChange) change);
+      }
       Connection connection = borrowConnection();
       evaluateBatch(connection, buffer.toString(), true);
       connection.close();
     } catch (Exception e) {
-      e.printStackTrace();
+      _log.error("Error applying column size changes", e);
     }
   }
 
diff --git a/src/org/apache/ddlutils/platform/SqlBuilder.java b/src/org/apache/ddlutils/platform/SqlBuilder.java
--- a/src/org/apache/ddlutils/platform/SqlBuilder.java
+++ b/src/org/apache/ddlutils/platform/SqlBuilder.java
@@ -4500,15 +4500,6 @@
     return new UID().toString().replace(':', '_').replace('-', '_');
   }
 
-  public void getConfigScript(Database database, Vector<Change> changes) throws IOException {
-    for (Change change : changes) {
-      if (change instanceof ColumnDataChange)
-        printColumnDataChange(database, (ColumnDataChange) change);
-      else if (change instanceof ColumnSizeChange)
-        printColumnSizeChange(database, (ColumnSizeChange) change);
-    }
-  }
-
   public void printColumnDataChange(Database database, ColumnDataChange change) throws IOException {
     HashMap map = new HashMap();
     Table table = database.findTable(change.getTablename());
