diff --git a/include/upgrader/streams/core/1ee831c8-36f6b328.task.php b/include/upgrader/streams/core/1ee831c8-36f6b328.task.php
index ef8cd369069ee874343ebf3083a3d4c2c688a17c..d507553358cb17a25ecef590cf3c127f89dbedc7 100644
--- a/include/upgrader/streams/core/1ee831c8-36f6b328.task.php
+++ b/include/upgrader/streams/core/1ee831c8-36f6b328.task.php
@@ -37,7 +37,8 @@ class GroupRoles extends MigrationTask {
 
             $ht['permissions'] = $perms;
 
-            $role = Role::__create($ht);
+            $errors = array();
+            $role = Role::__create($ht, $errors);
             $group->role_id =  $role->getId();
             $group->save();
         }
diff --git a/include/upgrader/streams/core/8f99b8bf-03ff59bf.task.php b/include/upgrader/streams/core/8f99b8bf-03ff59bf.task.php
index f7bb36f7db2da78056a307b730543f6cc43ad5b0..cd41e131bdc7617503aa789d731e538ad0fb7db5 100644
--- a/include/upgrader/streams/core/8f99b8bf-03ff59bf.task.php
+++ b/include/upgrader/streams/core/8f99b8bf-03ff59bf.task.php
@@ -19,17 +19,8 @@ class SequenceLoader extends MigrationTask {
             .'(SELECT MAX(ticket_id)+1 FROM '.TICKET_TABLE.') '
             .'WHERE `id`=1');
 
-        require_once(INCLUDE_DIR . 'class.list.php');
-
-        $lists = $i18n->getTemplate('list.yaml')->getData();
-        foreach ($lists as $l) {
-            DynamicList::create($l);
-        }
-
-        $statuses = $i18n->getTemplate('ticket_status.yaml')->getData();
-        foreach ($statuses as $s) {
-            TicketStatus::__create($s);
-        }
+        // list.yaml and ticket_status.yaml import moved to
+        // core/b26f29a6-1ee831c8.task.php
 
         // Initialize MYSQL search backend
         MysqlSearchBackend::__init();
diff --git a/include/upgrader/streams/core/934954de-f1ccd3bb.task.php b/include/upgrader/streams/core/934954de-f1ccd3bb.task.php
new file mode 100644
index 0000000000000000000000000000000000000000..7fe0f141ed159be2a6d177219c1e8abed25ce2d8
--- /dev/null
+++ b/include/upgrader/streams/core/934954de-f1ccd3bb.task.php
@@ -0,0 +1,26 @@
+<?php
+
+class FileImport extends MigrationTask {
+    var $description = "Import core osTicket attachment files";
+
+    function run($runtime) {
+        $errors = array();
+
+        $i18n = new Internationalization('en_US');
+        $files = $i18n->getTemplate('file.yaml')->getData();
+        foreach ($files as $f) {
+            if (!($id = AttachmentFile::create($f, $errors)))
+                continue;
+
+            // Ensure the new files are never deleted (attached to Disk)
+            $sql ='INSERT INTO '.ATTACHMENT_TABLE
+                .' SET object_id=0, `type`=\'D\', inline=1'
+                .', file_id='.db_input($id);
+            db_query($sql);
+        }
+    }
+}
+
+return 'FileImport';
+
+?>
diff --git a/include/upgrader/streams/core/b26f29a6-1ee831c8.task.php b/include/upgrader/streams/core/b26f29a6-1ee831c8.task.php
index ba6d63515b8bee4a3535185464103057ce66a7fa..19bed1964633046d1152708ca9b4574210738783 100644
--- a/include/upgrader/streams/core/b26f29a6-1ee831c8.task.php
+++ b/include/upgrader/streams/core/b26f29a6-1ee831c8.task.php
@@ -69,6 +69,20 @@ class IntlMigrator extends MigrationTask {
 
         // Add in new custom date format flag
         $cfg->set('date_formats', $touched ? 'custom' : '' );
+
+        // Moved here from  core/8f99b8bf-03ff59bf.task.php
+        require_once(INCLUDE_DIR . 'class.list.php');
+        $i18n = new Internationalization($cfg->get('system_language', 'en_US'));
+        $lists = $i18n->getTemplate('list.yaml')->getData();
+        foreach ($lists as $l) {
+            DynamicList::create($l);
+        }
+
+        $statuses = $i18n->getTemplate('ticket_status.yaml')->getData();
+        foreach ($statuses as $s) {
+            TicketStatus::__create($s);
+        }
+
     }
 }
 
diff --git a/include/upgrader/streams/core/d51f303a-dad45ca2.task.php b/include/upgrader/streams/core/d51f303a-dad45ca2.task.php
index 309f68e836e9f808a47fd3e69f6f143642226597..03a77f61d6349db29cd3d058ffa629afc388f53f 100644
--- a/include/upgrader/streams/core/d51f303a-dad45ca2.task.php
+++ b/include/upgrader/streams/core/d51f303a-dad45ca2.task.php
@@ -16,16 +16,7 @@ class NewHtmlTemplate extends MigrationTask {
             EmailTemplateGroup::create($t, $errors);
         }
 
-        $files = $i18n->getTemplate('file.yaml')->getData();
-        foreach ($files as $f) {
-            $id = AttachmentFile::create($f, $errors);
-
-            // Ensure the new files are never deleted (attached to Disk)
-            $sql ='INSERT INTO '.ATTACHMENT_TABLE
-                .' SET object_id=0, `type`=\'D\', inline=1'
-                .', file_id='.db_input($id);
-            db_query($sql);
-        }
+        // NOTE: Core files import moved to 934954de-f1ccd3bb.task.php
     }
 }
 return 'NewHtmlTemplate';
diff --git a/include/upgrader/streams/core/dad45ca2-61c9d5d7.task.php b/include/upgrader/streams/core/dad45ca2-61c9d5d7.task.php
index 98d128fbdaed3a1a4a57fe3af06cd0fbb99c591e..9f046b3e68716184692821096d20498955be0a0a 100644
--- a/include/upgrader/streams/core/dad45ca2-61c9d5d7.task.php
+++ b/include/upgrader/streams/core/dad45ca2-61c9d5d7.task.php
@@ -11,9 +11,50 @@ class DynamicFormLoader extends MigrationTask {
     function run($max_time) {
         $i18n = new Internationalization('en_US');
         $forms = $i18n->getTemplate('form.yaml')->getData();
-        foreach ($forms as $f)
+        foreach ($forms as &$f) {
+            // Only import forms which exist at this stage.
+            if (!in_array($f['type'], array('U', 'T', 'C', 'O')))
+                continue;
+
+            if ($f['fields'])  {
+                foreach($f['fields'] as &$field) {
+                    $flags = $field['flags'];
+                    // Edit mask
+                    $field['edit_mask'] = $this->f2m($flags);
+                    // private
+                    if (!($flags & DynamicFormField::FLAG_CLIENT_VIEW))
+                        $field['private'] = true;
+                    // required
+                    if (($flags & DynamicFormField::FLAG_CLIENT_REQUIRED)
+                            || ($flags & DynamicFormField::FLAG_AGENT_REQUIRED))
+                        $field['required'] = true;
+
+                    unset($field['flags']);
+                }
+                unset($field);
+            }
+
             DynamicForm::create($f);
+        }
+        unset($f);
     }
+
+    function f2m($flags) {
+        $masks = array(
+                1 => DynamicFormField::FLAG_MASK_DELETE,
+                2 => DynamicFormField::FLAG_MASK_NAME,
+                4 => DynamicFormField::FLAG_MASK_VIEW,
+                8 => DynamicFormField::FLAG_MASK_REQUIRE
+               );
+
+        $mask = 0;
+        foreach ($masks as $k => $v)
+            if (($flags & $v) != 0)
+                $mask += $k;
+
+        return $mask;
+   }
+
 }
 
 return 'DynamicFormLoader';