Index: /LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Create.pm
===================================================================
--- /LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Create.pm	(revision 143)
+++ /LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Create.pm	(revision 144)
@@ -31,4 +31,6 @@
     my ( $self, $c ) = @_;
 
+    my $base = $c->model('Accounts')->db;
+    $c->stash->{form} = $c->model('AttrForms', undef, 'user', $base);
     for ($c->req->param('step') || '') {
         /^1$/ and do {
@@ -38,5 +40,4 @@
         };
         /^2$/ and do {
-            my $base = $c->model('Accounts')->db;
             $base->create_c_object('user', $c->req->params->{id}, %{ $c->req->params });
             $base->commit;
Index: /LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Model/AttrForms.pm
===================================================================
--- /LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Model/AttrForms.pm	(revision 143)
+++ /LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Model/AttrForms.pm	(revision 144)
@@ -101,12 +101,25 @@
 }
 
+# call either OBJ or type + base
+
 sub ACCEPT_CONTEXT {
-    my ($self, $c, $form, $object) = @_;
-    $form or return $self;
-    $forms->{$form} or return;
-    $self->{c} = $c;
-    $self->{form} = $form;
-    $self->{object} = $object or return;
-    $self
+    my ($self, $c, $form, $object, $base) = @_;
+    my $new = {};
+    $new->{c} = $c;
+    $new->{form} = $form;
+    $new->{object} = $object if (ref $object);
+    $new->{base} = $base || ($object ? $object->base : undef) or return $self;
+    $new->{otype} = ref $object ? $object->type : $object;
+    bless($new, 'LATMOS::Accounts::Web::Model::AttrForms');
+}
+
+sub base {
+    my ( $self ) = @_;
+    $self->{base}
+}
+
+sub otype {
+    my ($self) = @_;
+    $self->{otype};
 }
 
@@ -118,5 +131,5 @@
 sub attributes {
     my ($self) = @_;
-    grep { $self->{object}->get_field_name($_, 'a') }
+    grep { $self->base->get_field_name($self->otype, $_, 'a') }
     @{ $forms->{$self->{form}}->{attrs} };
 }
@@ -127,7 +140,13 @@
 }
 
+sub attr_raw_value {
+    my ($self, $attr) = @_;
+    return $self->{c}->req->param($attr) ||
+        ($self->{object} ? $self->{object}->get_c_field($attr) : '')
+}
+
 sub attr_field {
     my ($self, $attr, $type) = @_;
-    $type ||= $self->{object}->get_field_name($attr, 'w')
+    $type ||= $self->base->get_field_name($self->otype, $attr, 'w')
         ? $attrs->{$attr}[1] || ''
         : 'label';
@@ -139,8 +158,8 @@
             '<textarea name="%s">%s</textarea>',
             $self->escape($attr),
-            $self->escape($self->{object}->get_c_field($attr)),
+            $self->escape($self->attr_raw_value($attr)),
         );
         /^label$/ and return $self->escape(
-            $self->{object}->get_c_field($attr)
+            $self->attr_raw_value($attr)
         );
         /^select:([^:]+):(.*)$/ and do {
@@ -149,5 +168,5 @@
             my $select = sprintf('<select name="%s">',
                 $self->escape($attr)) . "\n";
-            my $value = $self->{object}->get_c_field($attr);
+            my $value = $self->attr_raw_value($attr);
             foreach my $id ($self->{object}->base->list_objects($otype)) {
                 my $obj = $self->{object}->base->get_object($otype, $id) or next;
@@ -168,8 +187,5 @@
         '<input type="text" name="%s" value="%s">',
         $attr,
-        $self->escape(
-            $self->{c}->req->param($attr) ||
-            $self->{object}->get_c_field($attr)
-        )
+        $self->escape($self->attr_raw_value($attr))
     );
 }
Index: /LATMOS-Accounts-Web/root/html/create/user.tt
===================================================================
--- /LATMOS-Accounts-Web/root/html/create/user.tt	(revision 143)
+++ /LATMOS-Accounts-Web/root/html/create/user.tt	(revision 144)
@@ -3,5 +3,5 @@
 <form action="[% c.uri_for('/create', 'user') %]" method="POST">
 <input type="hidden" name="step" value="2">
-Login: <input type="text" name="id" value="[% c.req.param('id') | html %]"><br
+Login: <input type="text" name="id" value="[% c.req.param('id') | html %]"><br>
 Nom: <input type="text" name="sn" value="[% c.req.param('sn') | html %]"><br>
 Prenom: <input type="text" name="givenName" value="[% c.req.param('givenName') | html %]"><br>
@@ -13,6 +13,6 @@
 <form action="[% c.uri_for('/create', 'user') %]" method="POST">
 <input type="hidden" name="step" value="1">
-Nom: <input type="text" name="sn"><br>
-PrÃ©nom: <input type="text" name="givenName"><br>
+[% form.attr_label('sn') %] [% form.attr_field('sn') %]<br>
+[% form.attr_label('givenName') %] [% form.attr_field('givenName') %]<br>
 <input type="submit">
 </form>
