diff --git a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html
index 16fed56ca4..1cf5a1d3f2 100644
--- a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html
+++ b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html
@@ -57,8 +57,13 @@
id="ldnUrl"
name="ldnUrl"
type="text">
-
- {{ 'ldn-new-service.form.error.ldnurl' | translate }}
+
+
+ {{ 'ldn-new-service.form.error.ldnurl' | translate }}
+
+
+ {{ 'ldn-new-service.form.error.ldnurl.ldnUrlAlreadyAssociated' | translate }}
+
diff --git a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.ts b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.ts
index 60206b5b00..a6c0e23656 100644
--- a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.ts
+++ b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.ts
@@ -9,7 +9,12 @@ import {
TemplateRef,
ViewChild
} from '@angular/core';
-import {FormArray, FormBuilder, FormGroup, Validators} from '@angular/forms';
+import {
+ FormArray,
+ FormBuilder,
+ FormGroup,
+ Validators
+} from '@angular/forms';
import {LDN_SERVICE} from '../ldn-services-model/ldn-service.resource-type';
import {ActivatedRoute, Router} from '@angular/router';
import {LdnServicesService} from '../ldn-services-data/ldn-services-data.service';
@@ -198,6 +203,9 @@ export class LdnServiceFormComponent implements OnInit, OnDestroy {
this.sendBack();
this.closeModal();
} else {
+ if (!this.formModel.errors) {
+ this.showLdnUrlError();
+ }
this.notificationService.error(this.translateService.get('ldn-service-notification.created.failure.title'),
this.translateService.get('ldn-service-notification.created.failure.body'));
this.closeModal();
@@ -486,6 +494,9 @@ export class LdnServiceFormComponent implements OnInit, OnDestroy {
this.notificationService.success(this.translateService.get('admin.registries.services-formats.modify.success.head'),
this.translateService.get('admin.registries.services-formats.modify.success.content'));
} else {
+ if (!this.formModel.errors) {
+ this.showLdnUrlError();
+ }
this.notificationService.error(this.translateService.get('admin.registries.services-formats.modify.failure.head'),
this.translateService.get('admin.registries.services-formats.modify.failure.content'));
this.closeModal();
@@ -708,4 +719,14 @@ export class LdnServiceFormComponent implements OnInit, OnDestroy {
automatic: '',
});
}
+
+
+ /**
+ * Show ldnUrl error in case of unprocessable entity and provided value
+ */
+ private showLdnUrlError(): void {
+ const control = this.formModel.controls.ldnUrl;
+ const controlErrors = control.errors || {};
+ control.setErrors({...controlErrors, ldnUrlAlreadyAssociated: true });
+ }
}
diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5
index f7a9e2c072..e746a10bd6 100644
--- a/src/assets/i18n/en.json5
+++ b/src/assets/i18n/en.json5
@@ -998,6 +998,7 @@
"ldn-new-service.form.error.name": "Name is required",
"ldn-new-service.form.error.url": "URL is required",
"ldn-new-service.form.error.ldnurl": "LDN URL is required",
+ "ldn-new-service.form.error.ldnurl.ldnUrlAlreadyAssociated": "This LDN Inbox URL is associated to another registered service. Please enter a different LDN Inbox URL",
"ldn-new-service.form.error.patterns": "At least a pattern is required",
"ldn-new-service.form.error.score": "Please enter a valid score (between 0 and 1). Use the “.” as decimal separator",