diff --git a/smp-angular/src/app/app.module.ts b/smp-angular/src/app/app.module.ts
index 46121bdf552e128820c4faa378743fc7d2b6648f..0b8fa350ec60fdb11992cfd4f09598db4aed504c 100644
--- a/smp-angular/src/app/app.module.ts
+++ b/smp-angular/src/app/app.module.ts
@@ -159,10 +159,14 @@ import {
   ResourceDocumentPanelComponent
 } from "./edit/edit-resources/resource-document-panel/resource-document-panel.component";
 import { CodemirrorModule } from '@ctrl/ngx-codemirror';
+import {
+  DocumentWizardDialogComponent
+} from "./edit/edit-resources/document-wizard-dialog/document-wizard-dialog.component";
 
 
 @NgModule({
   declarations: [
+    DocumentWizardDialogComponent,
     AccessTokenGenerationDialogComponent,
     AccessTokenPanelComponent,
     AdminDomainComponent,
diff --git a/smp-angular/src/app/edit/edit-resources/document-wizard-dialog/document-wizard-dialog.component.css b/smp-angular/src/app/edit/edit-resources/document-wizard-dialog/document-wizard-dialog.component.css
new file mode 100644
index 0000000000000000000000000000000000000000..b734d415f91b5d605412708ad09654221ffbd456
--- /dev/null
+++ b/smp-angular/src/app/edit/edit-resources/document-wizard-dialog/document-wizard-dialog.component.css
@@ -0,0 +1,5 @@
+.flex-dialog-content{
+  display: flex; justify-content: space-around;
+  flex-flow: row;
+  align-items: stretch;height:510px;min-width:950px
+}
diff --git a/smp-angular/src/app/edit/edit-resources/document-wizard-dialog/document-wizard-dialog.component.html b/smp-angular/src/app/edit/edit-resources/document-wizard-dialog/document-wizard-dialog.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..4b6e3041900c8bd9a65822e13f48000d6a7a850a
--- /dev/null
+++ b/smp-angular/src/app/edit/edit-resources/document-wizard-dialog/document-wizard-dialog.component.html
@@ -0,0 +1,34 @@
+<h2 mat-dialog-title>ServiceGroup Extension Wizard</h2>
+
+<mat-dialog-content [class]="'flex-dialog-content'">
+  <form [formGroup]="dialogForm">
+    <mat-card>
+      <mat-card-content>
+        <fieldset style="border: none;">
+          <mat-form-field  *ngFor="let elmnt of elements;"  style="width:100%">
+            <input matInput
+                   type="{{elmnt.type}}"
+                   placeholder="{{elmnt.name}} - {{elmnt.description}}"
+                   [name]="elmnt.name"
+                   id="{{elmnt.name}}_id"
+                   [formControl]="dialogForm.controls[elmnt.name]" maxlength="255">
+          </mat-form-field >
+        </fieldset>
+      </mat-card-content>
+    </mat-card>
+  </form>
+</mat-dialog-content>
+
+<mat-dialog-actions>
+    <button mat-raised-button color="primary" [mat-dialog-close]="true"
+            [disabled]="!dialogForm.valid">
+      <mat-icon>check_circle</mat-icon>
+      <span>OK</span>
+    </button>
+
+    <button mat-raised-button color="primary" mat-dialog-close>
+      <mat-icon>cancel</mat-icon>
+      <span>Cancel</span>
+    </button>
+
+</mat-dialog-actions>
diff --git a/smp-angular/src/app/edit/edit-resources/document-wizard-dialog/document-wizard-dialog.component.ts b/smp-angular/src/app/edit/edit-resources/document-wizard-dialog/document-wizard-dialog.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ddda1667cec0ab8a8e2ee680eea7cf4c812deba9
--- /dev/null
+++ b/smp-angular/src/app/edit/edit-resources/document-wizard-dialog/document-wizard-dialog.component.ts
@@ -0,0 +1,69 @@
+import {Component, Inject} from '@angular/core';
+import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';
+import {UntypedFormBuilder, UntypedFormControl, UntypedFormGroup} from "@angular/forms";
+import {ResourceRo} from "../../../common/model/resource-ro.model";
+
+@Component({
+  selector: 'service-group-extension-wizard',
+  templateUrl: './document-wizard-dialog.component.html',
+  styleUrls:  ['./document-wizard-dialog.component.css']
+})
+export class DocumentWizardDialogComponent {
+  dialogForm: UntypedFormGroup;
+  resource: ResourceRo;
+
+  dummyXML: string ="<!-- Custom element is mandatory by OASIS SMP schema.\n    Replace following element with your XML structure. -->\n<ext:example xmlns:ext=\"http://my.namespace.eu\">my mandatory content</ext:example>"
+
+  elements: any[] = [
+    {name:'ExtensionID', description:'An identifier for the Extension assigned by the creator of the extension.', type:'text'},
+    {name:'ExtensionName', description:'A name for the Extension assigned by the creator of the extension.', type:'text'},
+    {name:'ExtensionAgencyID', description:'An agency that maintains one or more Extensions.', type:'text'},
+    {name:'ExtensionAgencyName', description:'The name of the agency that maintains the Extension.', type:'text'},
+    {name:'ExtensionAgencyURI', description:'A URI for the Agency that maintains the Extension.', type:'url'},
+    {name:'ExtensionVersionID', description:'The version of the Extension.', type:'text'},
+    {name:'ExtensionURI', description:'A URI for the Extension.', type:'url'},
+    {name:'ExtensionReasonCode', description:'A code for reason the Extension is being included.', type:'text'},
+    {name:'ExtensionReason', description:'A description of the reason for the Extension.', type:'text'},
+    ];
+
+  constructor(public dialogRef: MatDialogRef<DocumentWizardDialogComponent>,
+              @Inject(MAT_DIALOG_DATA) public data: any,
+              private dialogFormBuilder: UntypedFormBuilder) {
+
+    this.dialogForm = this.dialogFormBuilder.group({ });
+    this.resource = data.resource;
+
+    let arrayLength = this.elements.length;
+    for (var i = 0; i < arrayLength; i++) {
+      this.dialogForm.addControl(this.elements[i].name, new UntypedFormControl(''));
+    }
+  }
+
+  getExtensionXML(){
+    let xmlString ='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n' +
+      '<ServiceGroup xmlns="http://docs.oasis-open.org/bdxr/ns/SMP/2016/05" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#">\n' +
+      '   <ParticipantIdentifier scheme="'+this.resource.identifierScheme+'">'+this.resource.identifierValue+'</ParticipantIdentifier>\n' +
+      '   <ServiceMetadataReferenceCollection/>\n' +
+      '    <Extension xmlns="http://docs.oasis-open.org/bdxr/ns/SMP/2016/05">';
+    let arrayLength = this.elements.length;
+    for (var i = 0; i < arrayLength; i++) {
+      let str = this.dialogForm.get(this.elements[i].name).value;
+      if (str && 0 !== str.length) {
+        xmlString = xmlString + '\n    <'+this.elements[i].name+'>' + this.xmlSpecialChars(str) + '</'+this.elements[i].name+'>';
+      }
+    }
+    xmlString = xmlString+ '\n' +this.dummyXML+ '\n    </Extension>\n</ServiceGroup>'
+    return xmlString;
+  }
+
+  xmlSpecialChars(unsafe) {
+    return unsafe
+      .replace(/&/g, "&amp;")
+      .replace(/</g, "&lt;")
+      .replace(/>/g, "&gt;")
+      .replace(/"/g, "&quot;");
+  }
+
+
+
+}
diff --git a/smp-angular/src/app/edit/edit-resources/edit-resource.component.ts b/smp-angular/src/app/edit/edit-resources/edit-resource.component.ts
index 9d7f5fc6adadb440b44b68d3fddeb0b09a2e2925..a781d74fe81886cc84635bae3e595c5e1387e093 100644
--- a/smp-angular/src/app/edit/edit-resources/edit-resource.component.ts
+++ b/smp-angular/src/app/edit/edit-resources/edit-resource.component.ts
@@ -52,7 +52,6 @@ export class EditResourceComponent implements AfterViewInit, BeforeLeaveGuard {
       this.groupList = [];
       this._selectedDomainResourceDef = [];
     }
-
   };
 
   get selectedGroup(): GroupRo {
diff --git a/smp-angular/src/app/edit/edit-resources/resource-document-panel/resource-document-panel.component.html b/smp-angular/src/app/edit/edit-resources/resource-document-panel/resource-document-panel.component.html
index 2355820507d3ac88291e03b9b4b05988fd932a9f..289743b03b120ee4697577994962425bcac1ffd5 100644
--- a/smp-angular/src/app/edit/edit-resources/resource-document-panel/resource-document-panel.component.html
+++ b/smp-angular/src/app/edit/edit-resources/resource-document-panel/resource-document-panel.component.html
@@ -7,16 +7,25 @@
               matTooltip="Validate resource"
               (click)="onDocumentValidateButtonClicked()"
       >
-        <mat-icon>data_check</mat-icon>
+        <mat-icon>check_circle</mat-icon>
         <span>Validate</span>
       </button>
-      <button id="GenerateResource_id" mat-raised-button *ngIf="false"
+      <button id="GenerateResource_id" mat-raised-button
               color="primary"
               matTooltip="Generate resource"
+              (click)="onGenerateButtonClicked()"
       >
         <mat-icon>add_circle</mat-icon>
         <span>Generate</span>
       </button>
+      <button id="documentWizard_id" mat-raised-button
+              color="primary"
+              matTooltip="Show document wizard dialog"
+              (click)="onShowDocumentWizardDialog()"
+      >
+        <mat-icon>code_block</mat-icon>
+        <span>Document wizard</span>
+      </button>
     </mat-toolbar-row>
   </mat-toolbar>
   <div [formGroup]="resourceForm" style="width: 100%; display: flex; flex-direction: row; ">
diff --git a/smp-angular/src/app/edit/edit-resources/resource-document-panel/resource-document-panel.component.ts b/smp-angular/src/app/edit/edit-resources/resource-document-panel/resource-document-panel.component.ts
index 2b2f3ab720949b3261be177e131664bcaffbc87a..ad5440e7a9c8c7f06102a8aabff1c9b19f6de43d 100644
--- a/smp-angular/src/app/edit/edit-resources/resource-document-panel/resource-document-panel.component.ts
+++ b/smp-angular/src/app/edit/edit-resources/resource-document-panel/resource-document-panel.component.ts
@@ -1,5 +1,5 @@
 import {AfterViewInit, Component, Input, ViewChild, ViewEncapsulation,} from '@angular/core';
-import {MatDialog} from "@angular/material/dialog";
+import {MatDialog, MatDialogRef} from "@angular/material/dialog";
 import {BeforeLeaveGuard} from "../../../window/sidenav/navigation-on-leave-guard";
 import {GroupRo} from "../../../common/model/group-ro.model";
 import {ResourceRo} from "../../../common/model/resource-ro.model";
@@ -12,6 +12,10 @@ import {VisibilityEnum} from "../../../common/enums/visibility.enum";
 import {CodemirrorComponent} from "@ctrl/ngx-codemirror";
 import {DocumentRo} from "../../../common/model/document-ro.model";
 import {NavigationService} from "../../../window/sidenav/navigation-model.service";
+import {
+  ServiceGroupExtensionWizardDialogComponent
+} from "../../../service-group-edit/service-group-extension-wizard-dialog/service-group-extension-wizard-dialog.component";
+import {DocumentWizardDialogComponent} from "../document-wizard-dialog/document-wizard-dialog.component";
 
 @Component({
   moduleId: module.id,
@@ -147,10 +151,11 @@ export class ResourceDocumentPanelComponent implements AfterViewInit, BeforeLeav
   }
 
   onGenerateButtonClicked(): void {
-    this.editResourceService.validateDocumentObservable(this._resource, this.document).subscribe((value: DocumentRo) => {
+    this.editResourceService.generateDocumentObservable(this._resource).subscribe((value: DocumentRo) => {
       if (value) {
         this.alertService.success("Document is generated.")
-        this.document = value;
+        this.documentForm.controls['payload'].setValue(value.payload);
+        this.documentForm.controls['payload'].markAsDirty();
       } else {
         this.document = null;
       }
@@ -159,6 +164,24 @@ export class ResourceDocumentPanelComponent implements AfterViewInit, BeforeLeav
     })
   }
 
+  onShowDocumentWizardDialog() {
+
+    const formRef: MatDialogRef<any> = this.dialog.open(DocumentWizardDialogComponent,{
+      data: {
+        title: "Service group wizard",
+        resource: this._resource,
+
+      }
+    });
+    formRef.afterClosed().subscribe(result => {
+      if (result) {
+        let val = formRef.componentInstance.getExtensionXML();
+        this.documentForm.controls['payload'].setValue(val);
+        this.documentForm.controls['payload'].markAsDirty();
+      }
+    });
+  }
+
   loadDocumentForVersion(version: number = null): void {
     this.editResourceService.getDocumentObservable(this._resource, version).subscribe((value: DocumentRo) => {
       if (value) {
diff --git a/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceGroup10Handler.java b/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceGroup10Handler.java
index 220ffaf17319f73fd2b7b88bd1eb2f794ababf51..5e0e96e97656c19750610a06ae2c320869c2e9cf 100644
--- a/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceGroup10Handler.java
+++ b/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceGroup10Handler.java
@@ -20,6 +20,7 @@ import org.apache.hc.core5.net.URIBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
+import org.springframework.util.StreamUtils;
 
 import javax.xml.bind.JAXBException;
 import java.io.BufferedInputStream;
@@ -55,15 +56,12 @@ public class OasisSMPServiceGroup10Handler extends AbstractOasisSMPHandler {
 
     public void generateResource(RequestData resourceData, ResponseData responseData, List<String> fields) throws ResourceException {
         ResourceIdentifier identifier = getResourceIdentifier(resourceData);
-        if (resourceData.getResourceInputStream() == null) {
-            LOG.warn("Empty document input stream for service-group [{}]!", identifier);
-            return;
-        }
 
         ServiceGroup serviceGroup = new ServiceGroup();
         serviceGroup.setParticipantIdentifier(new ParticipantIdentifierType());
         serviceGroup.getParticipantIdentifier().setValue(identifier.getValue());
         serviceGroup.getParticipantIdentifier().setScheme(identifier.getScheme());
+        serviceGroup.setServiceMetadataReferenceCollection(new ServiceMetadataReferenceCollectionType());
 
         try {
             reader.serializeNative(serviceGroup, responseData.getOutputStream(), true);
@@ -155,8 +153,9 @@ public class OasisSMPServiceGroup10Handler extends AbstractOasisSMPHandler {
         serviceGroup.getParticipantIdentifier().setScheme(resourceData.getResourceIdentifier().getScheme());
 
         try {
-            reader.serializeNative(serviceGroup, responseData.getOutputStream(), false);
-        } catch (TechnicalException e) {
+            StreamUtils.copy(inputStream, responseData.getOutputStream());
+            //reader.serializeNative(serviceGroup, responseData.getOutputStream(), false);
+        } catch (IOException e) {
             throw new ResourceException(PARSE_ERROR, "Error occurred while copying the ServiceGroup", e);
         }
 
diff --git a/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceGroup20Handler.java b/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceGroup20Handler.java
index 29fa4013fc6a21bb840c5d43dd1400e01bd9aad2..a72f118b84e4018458b29d73ca2fe4bad60be4c0 100644
--- a/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceGroup20Handler.java
+++ b/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceGroup20Handler.java
@@ -53,10 +53,7 @@ public class OasisSMPServiceGroup20Handler extends AbstractOasisSMPHandler {
 
     public void generateResource(RequestData resourceData, ResponseData responseData, List<String> fields) throws ResourceException {
         ResourceIdentifier identifier = getResourceIdentifier(resourceData);
-        if (resourceData.getResourceInputStream() == null) {
-            LOG.warn("Empty document input stream for service-group [{}]!", identifier);
-            return;
-        }
+
 
         ServiceGroup serviceGroup = new ServiceGroup();
         serviceGroup.setParticipantID(new ParticipantID());
diff --git a/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceMetadata10Handler.java b/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceMetadata10Handler.java
index 33171daa239b31ec418294fc80cebe43bf806175..58dbdeca4cb3dbb949d57a155e839844c329b111 100644
--- a/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceMetadata10Handler.java
+++ b/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceMetadata10Handler.java
@@ -71,10 +71,6 @@ public class OasisSMPServiceMetadata10Handler extends AbstractOasisSMPHandler {
 
         ResourceIdentifier identifier = getResourceIdentifier(resourceData);
         ResourceIdentifier subresourceIdentifier = getSubresourceIdentifier(resourceData);
-        if (resourceData.getResourceInputStream() == null) {
-            LOG.warn("Empty document input stream for service-group [{}]!", identifier);
-            return;
-        }
 
         ServiceMetadata serviceMetadata = new ServiceMetadata();
         ServiceInformationType serviceInformationType =   new ServiceInformationType();
diff --git a/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceMetadata20Handler.java b/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceMetadata20Handler.java
index b81e2efe8d667a084a816e15cda18cc9f21ee251..d74138b964e8b23087977d2583a4f889051da322 100644
--- a/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceMetadata20Handler.java
+++ b/smp-resource-extensions/oasis-smp-spi/src/main/java/eu/europa/ec/smp/spi/handler/OasisSMPServiceMetadata20Handler.java
@@ -62,10 +62,6 @@ public class OasisSMPServiceMetadata20Handler extends AbstractOasisSMPHandler {
 
         ResourceIdentifier identifier = getResourceIdentifier(resourceData);
         ResourceIdentifier subresourceIdentifier = getSubresourceIdentifier(resourceData);
-        if (resourceData.getResourceInputStream() == null) {
-            LOG.warn("Empty document input stream for service-group [{}]!", identifier);
-            return;
-        }
 
         ServiceMetadata serviceMetadata = new ServiceMetadata();
         serviceMetadata.setParticipantID(new ParticipantID());
@@ -74,8 +70,6 @@ public class OasisSMPServiceMetadata20Handler extends AbstractOasisSMPHandler {
         serviceMetadata.setServiceID(new ServiceID());
         serviceMetadata.getParticipantID().setValue(subresourceIdentifier.getValue());
         serviceMetadata.getParticipantID().setSchemeID(subresourceIdentifier.getScheme());
-
-
         try {
             reader.serializeNative(serviceMetadata, responseData.getOutputStream(), true);
         } catch (TechnicalException e) {
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDocumentService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDocumentService.java
index f0172c02be8129fb6a9fc53bab0083f293185768..3590ea9840e2ebea0584d20c897c9ef91a54740a 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDocumentService.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDocumentService.java
@@ -9,6 +9,8 @@ import eu.europa.ec.edelivery.smp.data.model.doc.DBResource;
 import eu.europa.ec.edelivery.smp.data.ui.DocumentRo;
 import eu.europa.ec.edelivery.smp.exceptions.ErrorCode;
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
+import eu.europa.ec.edelivery.smp.logging.SMPLogger;
+import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory;
 import eu.europa.ec.edelivery.smp.services.resource.ResourceHandlerService;
 import eu.europa.ec.edelivery.smp.services.spi.data.SpiResponseData;
 import eu.europa.ec.smp.spi.api.model.RequestData;
@@ -16,15 +18,18 @@ import eu.europa.ec.smp.spi.api.model.ResponseData;
 import eu.europa.ec.smp.spi.exceptions.ResourceException;
 import eu.europa.ec.smp.spi.resource.ResourceHandlerSpi;
 import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.util.Collections;
 
 @Service
 public class UIDocumentService {
-
+    private static final SMPLogger LOG = SMPLoggerFactory.getLogger(UIDocumentService.class);
     ResourceDao resourceDao;
     DocumentDao documentDao;
     ResourceHandlerService resourceHandlerService;
@@ -50,31 +55,25 @@ public class UIDocumentService {
 
     @Transactional
     public DocumentRo generateDocumentForResource(Long resourceId, DocumentRo documentRo) {
+        LOG.info("Generate document");
         DBResource resource = resourceDao.find(resourceId);
         DBDomainResourceDef domainResourceDef = resource.getDomainResourceDef();
         ResourceHandlerSpi resourceHandler = resourceHandlerService.getResourceHandler(domainResourceDef.getResourceDef());
-        RequestData data = resourceHandlerService.buildRequestDataForResource(domainResourceDef.getDomain(), resource, new ByteArrayInputStream(documentRo.getPayload().getBytes()));
+        RequestData data = resourceHandlerService.buildRequestDataForResource(domainResourceDef.getDomain(),
+                resource, null);
 
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
         ResponseData responseData = new SpiResponseData(bos);
         try {
-            resourceHandler.storeResource(data, responseData);
+            resourceHandler.generateResource(data, responseData, Collections.emptyList());
         } catch (ResourceException e) {
             throw new SMPRuntimeException(ErrorCode.INVALID_REQUEST, "StoreResourceValidation", ExceptionUtils.getRootCauseMessage(e));
         }
-
-
-        DBDocument document = resource.getDocument();
-        int version = document.getDocumentVersions().stream().mapToInt(dv -> dv.getVersion())
-                .max().orElse(0);
-
-        DBDocumentVersion documentVersion = new DBDocumentVersion();
-        documentVersion.setVersion(version + 1);
-        documentVersion.setDocument(document);
-        documentVersion.setContent(bos.toByteArray());
-        document.getDocumentVersions().add(documentVersion);
-        document.setCurrentVersion(documentVersion.getVersion());
-        return convert(document, documentVersion);
+        String genDoc =  new String(bos.toByteArray());
+        LOG.info("Generate document [{}]", genDoc);
+        DocumentRo result = new DocumentRo();
+        result.setPayload(genDoc);
+        return result;
     }
 
     @Transactional
@@ -142,6 +141,7 @@ public class UIDocumentService {
         //documentRo.setDocumentId(SessionSecurityUtils.encryptedEntityId(document.getId()));
         document.getDocumentVersions().forEach(dv ->
                 documentRo.getAllVersions().add(dv.getVersion()));
+
         documentRo.setMimeType(document.getMimeType());
         documentRo.setName(document.getName());
         documentRo.setCurrentResourceVersion(document.getCurrentVersion());
diff --git a/smp-soapui-tests/pom.xml b/smp-soapui-tests/pom.xml
index 43c6f7b8ad8a282a0a6586321dcc91cb5583545b..24c577385c08a88bdb4bb41628a014850463c9cd 100644
--- a/smp-soapui-tests/pom.xml
+++ b/smp-soapui-tests/pom.xml
@@ -63,7 +63,7 @@
                             <!--If you want to execute single test case -->
                             <!-- testCase>SMP001-Create ServiceGroup-Basic Flow-Admin Service Group specified</testCase -->
                             <!-- testCase>SMP063-EDELIVERY-364 slash encoding-Tomcat</testCase -->
-                            <!-- testCase>SMP022-Create ServiceMetadata-Basic Flow</testCase -->
+                            <testCase>SMP022-Create ServiceMetadata-Basic Flow</testCase>
                             <projectProperties>
                                 <value>url=${url}</value>
                                 <value>SMPAdminUser=${SMPAdminUser}</value>
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/DocumentEditController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/DocumentEditController.java
index 0bf0ec2424c7062771f2d91e62aa0a644a4f9d2f..68305e4ce7d4e4a0db1fec8959f01a03ccf92992 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/DocumentEditController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/DocumentEditController.java
@@ -59,12 +59,12 @@ public class DocumentEditController {
     @PostMapping(path = SUB_CONTEXT_PATH_EDIT_DOCUMENT_GENERATE, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) " +
             "and @smpAuthorizationService.isResourceAdministrator(#resourceEncId)")
-    public void generateDocument(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
+    public DocumentRo generateDocument(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
                                  @PathVariable(PATH_PARAM_ENC_RESOURCE_ID) String resourceEncId,
                                  @RequestBody(required = false) DocumentRo document) {
         logAdminAccess("generateDocument");
         Long resourceId = SessionSecurityUtils.decryptEntityId(resourceEncId);
-        uiDocumentService.validateDocumentForResource(resourceId, document);
+        return uiDocumentService.generateDocumentForResource(resourceId, document);
     }
 
     @PutMapping(path = SUB_CONTEXT_PATH_EDIT_DOCUMENT_GET,