diff --git a/dcd.pl b/dcd.pl
index 744090ece59637ff4876428c40fdad106689ca41..539dcb33149c396885d20e1ef2644e453351018a 100755
--- a/dcd.pl
+++ b/dcd.pl
@@ -41,6 +41,7 @@ my $config_file= '/etc/irma/DataCite.json';
 # identifiers table
 my $na_path= 'na/na-dcd-10-25365';
 my $identifiers_file= join ('/', $na_path, 'identifiers.tsv');
+
 my $ifx= '10.25365/phaidra';
 my $na_id= 1;
 my $context_id= 1;
@@ -63,7 +64,12 @@ while (defined ($arg= shift (@ARGV)))
        if ($opt eq 'help')   { usage(); }
     elsif ($opt eq 'ticket') { $ticket= $val || shift (@ARGV);  }
     elsif ($opt eq 'doit')   { $register_live= 1; }
-     else { usage(); }
+    elsif ($opt eq 'test')
+    {
+      $na_path= 'na/na-dcd-10-5072';
+      $identifiers_file= join ('/', $na_path, 'identifiers.tsv');
+    }
+    else { usage(); }
   }
   elsif ($arg =~ /^-(.+)/)
   {
@@ -130,6 +136,7 @@ sub register_url
   print __LINE__, " repo_url=[$repo_url]\n";
   if ($repo_url =~ m#^https?://(phaidra(-(sandbox|temp))?\.univie\.ac\.at)/(detail_object|view/)?(o:\d+)$#
       # || $repo_url =~ m# ... uscholar ... #)
+      || $repo_url =~ m#https://(ojs3test\.(univie)\.(ac)\.at)/(index\.php)/wks/article/view/(\d+)$#
      )
   {
     my ($repo, $s1, $s2, $s3, $pid)= ($1, $2, $3, $4, $5);
@@ -154,101 +161,110 @@ sub register_url
     }
 
     my ($pfx, $ns, $nr)= split_doi_string ($prod_doi_string);
+# print __LINE__, " prod_doi_string=[$prod_doi_string] pfx=[$pfx] ns=[$ns] nr=[$nr]\n";
 
-    my $fo_xml= join ('/', $na_path, 'metadata', $ns, join ('.', $ns, $nr, 'xml'));
+    my $dc_xml= join ('/', $na_path, 'metadata', $ns, join ($repo_cnf->{id_separator}, $ns, $nr) .'.xml');
 
-print __LINE__, " prod_doi_string=[$prod_doi_string] pfx=[$pfx] ns=[$ns] nr=[$nr] fo_xml=[$fo_xml]\n";
+print __LINE__, " prod_doi_string=[$prod_doi_string] pfx=[$pfx] ns=[$ns] nr=[$nr] dc_xml=[$dc_xml]\n";
 
     my $prod_xml_new; # DataCite Metadata in XML format
-    if (-f $fo_xml)
+    if (-f $dc_xml)
     {
       my @st= stat(_);
       my $size= $st[7];
-      print "ATTN: XML file [$fo_xml] already exists, reading it!\n";
-      unless (open (FO_XML, '<:utf8', $fo_xml))
+      print "ATTN: XML file [$dc_xml] already exists, reading it!\n";
+      unless (open (DC_XML, '<:utf8', $dc_xml))
       {
-        print "ATTN: can not read XML from [$fo_xml]\n";
+        print "ATTN: can not read XML from [$dc_xml]\n";
         return;
       }
-      sysread (FO_XML, $prod_xml_new, $size);
-      close (FO_XML);
+      sysread (DC_XML, $prod_xml_new, $size);
+      close (DC_XML);
     }
     else
     { # no XML found, so fetch metadata, convert it to XML and test it on the mds.test.datacite.org
 
-      my $repo_obj= new Phaidra::DataCite (config => $repo_cnf);
-      # print __LINE__, " repo_obj: ", main::Dumper ($repo_obj);
-
-      # my ($c1, $xml)=  $repo_obj->get_metadata ($pid, 'xml');
-      my ($c2, $json)= $repo_obj->get_metadata ($pid, 'json');
-      my $api_res= decode_json ($json);
-      if ($api_res->{status} ne '200')
-      {
-        print __LINE__, " api_res: ", Dumper ($api_res);
-        return undef;
-      }
-
-      my $dc_res= $api_res->{datacite};
-      print __LINE__, " dc_res: ", Dumper ($dc_res);
-
-      # TODO:
-      # * mint new DOI
-      # * insert DOI in metadata
-
-      # NOTE: if ($dc_res->{status} ne 'OK') request a dummy doi_string
-
-      my $t_reg_obj= new DataCite::API (config => $t_reg_cnf, 'xmode' => 'test');
-      my $doi_string= $t_reg_obj->mint_doi();
-   
-      my $doi_element=
+      if ($repo_cnf->{repo_type} eq 'phaidra')
       {
-        xmlname => 'identifier',
-        value => $doi_string,
-        attributes =>
-        [
-          {
-            xmlname => 'identifierType',
-            value => 'DOI'
-          }
-        ]
-      };
-      print __LINE__, " doi_element: ", main::Dumper($doi_element);
+        my $repo_obj= new Phaidra::DataCite (config => $repo_cnf);
+        # print __LINE__, " repo_obj: ", main::Dumper ($repo_obj);
 
-      my $md= $dc_res->{datacite_elements};
-      unshift (@$md, $doi_element);
-      print __LINE__, " md: ", main::Dumper ($md);
+        # my ($c1, $xml)=  $repo_obj->get_metadata ($pid, 'xml');
+        my ($c2, $json)= $repo_obj->get_metadata ($pid, 'json');
+        my $api_res= decode_json ($json);
+        if ($api_res->{status} ne '200')
+        {
+          print __LINE__, " api_res: ", Dumper ($api_res);
+          return undef;
+        }
 
-      my $xml_new= $repo_obj->json_2_xml ($md);
-      print __LINE__, " xml_new=[$xml_new]\n";
+        my $dc_res= $api_res->{datacite};
+        print __LINE__, " dc_res: ", Dumper ($dc_res);
 
-      # TODO: interact with the IRMA database to find out if the DOI string is really unique and register in there
+        # TODO:
+        # * mint new DOI
+        # * insert DOI in metadata
 
-      # TODO: interact with DataCite API to register the DOI with the metadata
-      my $t_reg_result= $t_reg_obj->register_doi ($doi_string, $xml_new, $repo_url);
+        # NOTE: if ($dc_res->{status} ne 'OK') request a dummy doi_string
 
-      $doi_element->{value}= $prod_doi_string;  # overwrite test DOI string with real DOI string
-
-      $prod_xml_new= $repo_obj->json_2_xml ($md);
-
-      unless (open (FO_XML, '>:utf8', $fo_xml))
-      {
-        print "ATTN: can not write XML to [$fo_xml]\n";
-        return;
-      }
-      syswrite (FO_XML, $prod_xml_new);
-      close (FO_XML);
-
-      print "metatada fetched: ", get_ts(), "\n";
-      if ($dc_res->{status} ne 'OK')
-      {
-        print "Metadata not ok; status=[$dc_res->{status}] errors: ", Dumper ($dc_res->{errors});
-        return undef;
+        my $t_reg_obj= new DataCite::API (config => $t_reg_cnf, 'xmode' => 'test');
+        my $doi_string= $t_reg_obj->mint_doi();
+   
+        my $doi_element=
+        {
+          xmlname => 'identifier',
+          value => $doi_string,
+          attributes =>
+          [
+            {
+              xmlname => 'identifierType',
+              value => 'DOI'
+            }
+          ]
+        };
+        print __LINE__, " doi_element: ", main::Dumper($doi_element);
+
+        my $md= $dc_res->{datacite_elements};
+        unshift (@$md, $doi_element);
+        print __LINE__, " md: ", main::Dumper ($md);
+
+        my $xml_new= $repo_obj->json_2_xml ($md);
+        print __LINE__, " xml_new=[$xml_new]\n";
+
+        # TODO: interact with the IRMA database to find out if the DOI string is really unique and register in there
+
+        # TODO: interact with DataCite API to register the DOI with the metadata
+        my $t_reg_result= $t_reg_obj->register_doi ($doi_string, $xml_new, $repo_url);
+
+        $doi_element->{value}= $prod_doi_string;  # overwrite test DOI string with real DOI string
+
+        $prod_xml_new= $repo_obj->json_2_xml ($md);
+
+        unless (open (DC_XML, '>:utf8', $dc_xml))
+        {
+          print "ATTN: can not write XML to [$dc_xml]\n";
+          return;
+        }
+        syswrite (DC_XML, $prod_xml_new);
+        close (DC_XML);
+
+        print "metatada fetched: ", get_ts(), "\n";
+        if ($dc_res->{status} ne 'OK')
+        {
+          print "Metadata not ok; status=[$dc_res->{status}] errors: ", Dumper ($dc_res->{errors});
+          return undef;
+        }
+
+        unless ($t_reg_result)
+        {
+          print "ATTN: register_doi with Test-DOI was not ok\n";
+          return undef;
+        }
       }
-
-      unless ($t_reg_result)
+      else
       {
-        print "ATTN: register_doi with Test-DOI was not ok\n";
-        return undef;
+          print "ERROR: can't fetch metadata for this type of repository! [", $repo_cnf->{repo_type}, "]\n";
+          return undef;
       }
     }
 
@@ -309,7 +325,7 @@ sub split_doi_string
   my $doi= shift;  # e.g. 10.25365/phaidra.1
 
   my ($pfx, $sfx)= split ('/', $doi, 2);
-  my ($ns, $nr)= split (/\./, $sfx, 2);
+  my ($ns, $nr)= split (/[\.\-]/, $sfx, 2);
 
   ($pfx, $ns, $nr);
 }
diff --git a/lib/DataCite/API.pm b/lib/DataCite/API.pm
index fdd03936b0336ed33ef427dfd68d0a3240f2531d..caba36a8631838d4ec95c0c4a8745a0883ebbfd5 100644
--- a/lib/DataCite/API.pm
+++ b/lib/DataCite/API.pm
@@ -55,13 +55,13 @@ sub register_doi
     return undef;
   }
 
-  my $doi_reg = <<"EOX";
+  my $doi_reg= <<"EOX";
 doi=$doi
 url=$repo_url
 EOX
 
   my ($code2, $res2)= $self->datacite_request ('POST', 'doi', $doi_reg, 'application/xml;charset=UTF-8');
-  print __LINE__, " code2=[$code2] res2=[$res2]\n";
+  print __LINE__, " doi_reg=[$doi_reg] code2=[$code2] res2=[$res2]\n";
 
   unless ($code2 =~ m#^20[01]#)
   {