diff --git a/archetype/generated-validator/validator-archetype-instantiator/src/main/java/net/ihe/gazelle/goc/ValidatorInstantiator.java b/archetype/generated-validator/validator-archetype-instantiator/src/main/java/net/ihe/gazelle/goc/ValidatorInstantiator.java
index 182aa7cff0233a0f8aed39883c1a0f755d8d44a5..0c10a73f68c1f765758a91b4b99dc300f869597d 100644
--- a/archetype/generated-validator/validator-archetype-instantiator/src/main/java/net/ihe/gazelle/goc/ValidatorInstantiator.java
+++ b/archetype/generated-validator/validator-archetype-instantiator/src/main/java/net/ihe/gazelle/goc/ValidatorInstantiator.java
@@ -20,7 +20,7 @@ public class ValidatorInstantiator {
         if(javaHome != null && !javaHome.isEmpty()){
             javaEnv = "env $JAVA_HOME=\""+javaHome+"\" ";
         }
-        return CD_COMMAND + workspacePath + "\"\n" + javaEnv + mvnExecPath + " archetype:generate -B " +
+        return CD_COMMAND + workspacePath + "\"\n" + javaEnv + mvnExecPath + " org.apache.maven.plugins:maven-archetype-plugin:2.3:generate -B " +
                 "-DarchetypeGroupId=net.ihe.gazelle.goc " +
                 "-DarchetypeArtifactId=validator-archetype " +
                 "-DarchetypeVersion=" + getVersion() + " " +
diff --git a/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/adapters/ArchetypeInstantiatorMaven.java b/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/adapters/ArchetypeInstantiatorMaven.java
index ab08964552ea09d4985aaa714a710afe2440b991..f9ebb028249194ca6b93dd3653291216ebffb129 100644
--- a/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/adapters/ArchetypeInstantiatorMaven.java
+++ b/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/adapters/ArchetypeInstantiatorMaven.java
@@ -22,8 +22,9 @@ public class ArchetypeInstantiatorMaven implements ArchetypeInstantiator {
 
     private static org.slf4j.Logger log = LoggerFactory.getLogger(ArchetypeInstantiatorMaven.class);
     //this is supposed to be the version of the packager artifact. It is for now used as artifact version. See what we will use
-    private static final String gocVersion = "2.0.0";
+    private static final String gocVersion = "3.0.0";
     private static final String CD_COMMAND = "cd \"";
+    private static final String REPOSITORY = "https://gazelle.ihe.net/nexus/content/groups/public/";
 
     private String workspacesRoot;
     private String mvnExecutionPath;
@@ -112,20 +113,22 @@ public class ArchetypeInstantiatorMaven implements ArchetypeInstantiator {
      */
     public void createValidatorArtifact(Workspace workspace, ValidatorConfiguration validatorConfiguration)
             throws ArchetypeInstantiationException {
-        if(!checkIfArchetypeInstalled()){
-            throw new ArchetypeInstantiationException("Archtype not installed, generation will end, please refere to: https://gitlab.inria.fr/gazelle/library/archetypes/generated-validator to install it");
-        }
+
         String workspacePath = getWorkspacesRoot() + workspace.getName();
         String configuration = System.getProperty("HL7TEMP_CDACONFFOLDERNAME", "cdabasic");
-        String createArtifactCommand = ValidatorInstantiator.generateArchetype(workspacePath, getMvnExecutionPath(), gocVersion,
+        String createArchetypeCommand = ValidatorInstantiator.generateArchetype(workspacePath, getMvnExecutionPath(), gocVersion,
                 validatorConfiguration.getProjectNaming().getProjectName(), validatorConfiguration.getProjectNaming().getProjectNameUpperCase(), configuration,
                 validatorConfiguration.getProjectNaming().getProjectNameCapitalized(), validatorConfiguration.getServiceName(), workspacePath,
                 validatorConfiguration.ignoreCdaBasicRequirements().toString(),System.getProperty("JAVA_EXEC"));
-        log.warn("Command executed to generate model artifact : \n" + createArtifactCommand);
-        try {
-            processExecutor.executeProcess(createArtifactCommand);
-        } catch (IOException e){
-            throw new ArchetypeInstantiationException("Cannot generate validator artifact !", e);
+        log.warn("Command executed to generate model artifact : \n" + createArchetypeCommand);
+
+        log.info("Trying to look for archetype in local repository...");
+        if(!generateArchetypeFromRepository(createArchetypeCommand,null)){
+            log.warn("Archetype not found locally, retrieving from remote repository {} ",REPOSITORY);
+            if(!generateArchetypeFromRepository(createArchetypeCommand,REPOSITORY)){
+                log.error("Could not find archetype in remote repository: {}", REPOSITORY);
+                throw new ArchetypeInstantiationException("Cannot generate validator artifact !");
+            }
         }
 
         gocLogger.logSeparator("Extracting Value-sets","Extract Value-sets from the ValidatorConfiguration and put them in project resources");
@@ -174,18 +177,18 @@ public class ArchetypeInstantiatorMaven implements ArchetypeInstantiator {
 
     }
 
-    //TODO: 28/09/2021 make installation of archetype automatic
-
-//    protected void installArchetypeProject(){
-//        FolderCreator folderCreator = new FolderCreatorImpl();
-//        try {
-//            folderCreator.createFolder(getWorkspacesRoot()+"archetype");
-//            String command = CD_COMMAND + getWorkspacesRoot() + "\"archetype\"" + System.lineSeparator()
-//                    + "git clone  "
-//        } catch (IOException e) {
-//            log.error("failed creating archetype folder {}",e);
-//        }
-//    }
+
+    private boolean generateArchetypeFromRepository(String createArtifactCommand, String repository){
+        try {
+            if(repository != null && !repository.isEmpty()){
+                createArtifactCommand += " -DarchetypeRepository=\""+repository+"\"";
+            }
+            processExecutor.executeProcess(createArtifactCommand);
+            return true;
+        } catch (IOException e) {
+            return false;
+        }
+    }
 
 
 
diff --git a/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/GOCLoggerImpl.java b/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/GOCLoggerImpl.java
index 914963e9ed33fbbbf86637cefdfe7cfff3e8dcdb..d2947f78d868927c99b240d68fb4550f3c9a43d2 100644
--- a/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/GOCLoggerImpl.java
+++ b/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/GOCLoggerImpl.java
@@ -151,7 +151,7 @@ public class GOCLoggerImpl implements GOCLogger {
             long milliseconds = (elapsedTime/1000000)%1000;
             long seconds = (elapsedTime/(1000000*1000))%60;
             long minutes = elapsedTime/(1000000000L *60);
-            String stringToLog = this.previousAction+" takes [ "+minutes+"m "+seconds+"s "+milliseconds+"ms ] to complete";
+            String stringToLog = this.previousAction+" took [ '"+minutes+"m "+seconds+"s "+milliseconds+"ms' ] to complete";
 
             //log to detailed log file
             log.info(stringToLog+"\n");
@@ -176,10 +176,10 @@ public class GOCLoggerImpl implements GOCLogger {
             BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file,true));
             bufferedWriter.write("==========================\n");
             if(descriptor.equals(Descriptor.STDOUT)){
-                bufferedWriter.write("STDOUT of executing: "+command);
+                bufferedWriter.write("STDOUT of executing: "+command+"\n\n");
             }
             else{
-                bufferedWriter.write("STDERR of executing: "+command);
+                bufferedWriter.write("STDERR of executing: "+command+"\n\n");
             }
             while ((line = in.readLine()) != null) {
                 line += System.lineSeparator();