diff --git a/CHANGES.txt b/CHANGES.txt
index 4d95e8a..c234ff4 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -119,6 +119,8 @@
 
   BUG FIXES
 
+    CHUKWA-249. Use ChukwaConfiguration in Demux. (Jerome Boulon via asrabkin)
+
     CHUKWA-250. Updated hadoop jar reference in chukwa config. (Cheng Zhang via Eric Yang)
 
     CHUKWA-211. Manage symlink correctly for RPM upgrade and uninstall. (Eric Yang)
diff --git a/src/java/org/apache/hadoop/chukwa/extraction/archive/ChukwaArchiveBuilder.java b/src/java/org/apache/hadoop/chukwa/extraction/archive/ChukwaArchiveBuilder.java
index 7501e41..1c19df8 100644
--- a/src/java/org/apache/hadoop/chukwa/extraction/archive/ChukwaArchiveBuilder.java
+++ b/src/java/org/apache/hadoop/chukwa/extraction/archive/ChukwaArchiveBuilder.java
@@ -21,6 +21,7 @@
 
 import org.apache.hadoop.chukwa.ChukwaArchiveKey;
 import org.apache.hadoop.chukwa.ChunkImpl;
+import org.apache.hadoop.chukwa.conf.ChukwaConfiguration;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.conf.Configured;
 import org.apache.hadoop.fs.Path;
@@ -54,8 +55,7 @@
       return printUsage();
     }
 
-    JobConf jobConf = new JobConf(getConf(), ChukwaArchiveBuilder.class);
-    jobConf.addResource(new Path("conf/chukwa-demux-conf.xml"));
+    JobConf jobConf = new JobConf(new ChukwaConfiguration(), ChukwaArchiveBuilder.class);
 
     jobConf.setInputFormat(SequenceFileInputFormat.class);
 
diff --git a/src/java/org/apache/hadoop/chukwa/extraction/demux/DailyChukwaRecordRolling.java b/src/java/org/apache/hadoop/chukwa/extraction/demux/DailyChukwaRecordRolling.java
index c734ce3..2074e1f 100644
--- a/src/java/org/apache/hadoop/chukwa/extraction/demux/DailyChukwaRecordRolling.java
+++ b/src/java/org/apache/hadoop/chukwa/extraction/demux/DailyChukwaRecordRolling.java
@@ -275,7 +275,7 @@
   }
 
   public int run(String[] args) throws Exception {
-    JobConf conf = new JobConf(getConf(), DailyChukwaRecordRolling.class);
+    JobConf conf = new JobConf(new ChukwaConfiguration(), DailyChukwaRecordRolling.class);
 
     conf.setJobName("DailyChukwa-Rolling");
     conf.setInputFormat(SequenceFileInputFormat.class);
diff --git a/src/java/org/apache/hadoop/chukwa/extraction/demux/Demux.java b/src/java/org/apache/hadoop/chukwa/extraction/demux/Demux.java
index 9b686a4..25725a3 100644
--- a/src/java/org/apache/hadoop/chukwa/extraction/demux/Demux.java
+++ b/src/java/org/apache/hadoop/chukwa/extraction/demux/Demux.java
@@ -27,6 +27,7 @@
 import java.util.List;
 import org.apache.hadoop.chukwa.ChukwaArchiveKey;
 import org.apache.hadoop.chukwa.ChunkImpl;
+import org.apache.hadoop.chukwa.conf.ChukwaConfiguration;
 import org.apache.hadoop.chukwa.extraction.demux.processor.ChukwaOutputCollector;
 import org.apache.hadoop.chukwa.extraction.demux.processor.mapper.MapProcessor;
 import org.apache.hadoop.chukwa.extraction.demux.processor.mapper.MapProcessorFactory;
@@ -145,8 +146,8 @@
   }
 
   public int run(String[] args) throws Exception {
-    JobConf conf = new JobConf(getConf(), Demux.class);
-    conf.addResource(new Path("conf/chukwa-demux-conf.xml"));
+    JobConf conf = new JobConf(new ChukwaConfiguration(), Demux.class);
+    
 
     conf.setJobName("Chukwa-Demux_" + day.format(new Date()));
     conf.setInputFormat(SequenceFileInputFormat.class);
diff --git a/src/java/org/apache/hadoop/chukwa/extraction/demux/HourlyChukwaRecordRolling.java b/src/java/org/apache/hadoop/chukwa/extraction/demux/HourlyChukwaRecordRolling.java
index cb23029..96a7319 100644
--- a/src/java/org/apache/hadoop/chukwa/extraction/demux/HourlyChukwaRecordRolling.java
+++ b/src/java/org/apache/hadoop/chukwa/extraction/demux/HourlyChukwaRecordRolling.java
@@ -237,7 +237,7 @@
   }
 
   public int run(String[] args) throws Exception {
-    JobConf conf = new JobConf(getConf(), HourlyChukwaRecordRolling.class);
+    JobConf conf = new JobConf(new ChukwaConfiguration(), HourlyChukwaRecordRolling.class);
 
     conf.setJobName("HourlyChukwa-Rolling");
     conf.setInputFormat(SequenceFileInputFormat.class);
