Index: trunk/ippTools/src/receivetool.c
===================================================================
--- trunk/ippTools/src/receivetool.c	(revision 24059)
+++ trunk/ippTools/src/receivetool.c	(revision 24109)
@@ -238,5 +238,5 @@
         psFree(output);
 
-        if (!receiveFilesetInsert(config->dbh, 0, source_id, fileset, "new", NULL, 0)) {
+        if (!receiveFilesetInsert(config->dbh, 0, source_id, fileset, "reg", NULL, 0)) {
             psError(PS_ERR_UNKNOWN, false, "Unable to add fileset");
             psFree(source_id_str);
@@ -352,9 +352,13 @@
     // required
     PXOPT_LOOKUP_S64(fileset_id, config->args, "-fileset_id", true, false);
-    psMetadataItem *files = psMetadataLookup(config->args, "-file");
+    PXOPT_LOOKUP_STR(file_list, config->args, "-file_list", true, false);
+
+    unsigned int numBad;
+    psMetadata *files = psMetadataConfigRead(NULL, &numBad, file_list, false);
     if (!files) {
-        psError(PS_ERR_UNKNOWN, true, "-file is required");
-        return false;
-    }
+        psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Unable to cleanly read MDC file with file list.");
+        return false;
+    }
+
 
     if (!psDBTransaction(config->dbh)) {
@@ -363,12 +367,26 @@
     }
 
-    psListIterator *iter = psListIteratorAlloc(files->data.list, PS_LIST_HEAD, false); // Iterator
-    psMetadataItem *item = NULL;        // Item from iteration
-    while ((item = psListGetAndIncrement(iter))) {
-        psAssert(item && item->data.V && item->type == PS_DATA_STRING, "Argument is bad");
-
-        if (!receiveFileInsert(config->dbh, 0, fileset_id, item->data.str)) {
+    psMetadataIterator *iter = psMetadataIteratorAlloc(files, PS_LIST_HEAD, NULL); // Iterator
+    psMetadataItem *item;
+    while ((item = psMetadataGetAndIncrement(iter))) {
+        psMetadata *md = item->data.md;
+        psString file = psMetadataLookupStr(NULL, md, "file");
+        psS64    bytes = psMetadataLookupS64(NULL, md, "bytes");
+        psString md5sum = psMetadataLookupStr(NULL, md, "md5sum");
+        psString file_type = psMetadataLookupStr(NULL, md, "file_type");
+        psString component = psMetadataLookupStr(NULL, md, "component");
+        
+        if (!file) {
+            psError(PS_ERR_UNKNOWN, false, "failed to find value for file");
+            return false;
+        }
+        if (!component) {
+            psError(PS_ERR_UNKNOWN, false, "failed to find value for component");
+            return false;
+        }
+
+        if (!receiveFileInsert(config->dbh, 0, fileset_id, file, bytes, md5sum, file_type, component)) {
             psError(PS_ERR_UNKNOWN, false, "Unable to add file");
-            if (!psDBTransaction(config->dbh)) {
+            if (!psDBRollback(config->dbh)) {
                 psError(PS_ERR_UNKNOWN, false, "Database error");
                 return false;
@@ -378,4 +396,5 @@
         }
     }
+
     psFree(iter);
 
Index: trunk/ippTools/src/receivetoolConfig.c
===================================================================
--- trunk/ippTools/src/receivetoolConfig.c	(revision 24059)
+++ trunk/ippTools/src/receivetoolConfig.c	(revision 24109)
@@ -91,5 +91,5 @@
     psMetadata *addfileArgs = psMetadataAlloc();
     psMetadataAddS64(addfileArgs, PS_LIST_TAIL, "-fileset_id", 0, "define fileset_id (required)", 0);
-    psMetadataAddStr(addfileArgs, PS_LIST_TAIL, "-file", PS_META_DUPLICATE_OK, "define file (multiple OK, required)", NULL);
+    psMetadataAddStr(addfileArgs, PS_LIST_TAIL, "-file_list", 0, "define file list (required)", NULL);
 
     // -pendingfile
