diff --git a/include/client/register.inc.php b/include/client/register.inc.php
index bf6830952a22b1ca359f5259343784e02edfcec5..4f683c718d8fc27cb7404ae21f722a289f51967a 100644
--- a/include/client/register.inc.php
+++ b/include/client/register.inc.php
@@ -27,7 +27,7 @@ $info = Format::htmlchars(($errors && $_POST)?$_POST:$info);
 <tbody>
 <?php
     $cf = $user_form ?: UserForm::getInstance();
-    $cf->render(false);
+    $cf->render(false, false, array('mode' => 'create'));
 ?>
 <tr>
     <td colspan="2">
diff --git a/include/client/templates/dynamic-form.tmpl.php b/include/client/templates/dynamic-form.tmpl.php
index 7a23a4546e734458d2ec14c491da0db26788e105..cfde56a64e9d00c27adc7ed06290c51cb0b69346 100644
--- a/include/client/templates/dynamic-form.tmpl.php
+++ b/include/client/templates/dynamic-form.tmpl.php
@@ -14,8 +14,13 @@
     // 'private' are not included in the output for clients
     global $thisclient;
     foreach ($form->getFields() as $field) {
-        if (!$field->isVisibleToUsers() && !$field->isEditableToUsers())
+        if (isset($options['mode']) && $options['mode'] == 'create') {
+            if (!$field->isVisibleToUsers() && !$field->isRequiredForUsers())
+                continue;
+        }
+        elseif (!$field->isVisibleToUsers() && !$field->isEditableToUsers()) {
             continue;
+        }
         ?>
         <tr>
             <td colspan="2" style="padding-top:10px;">