package org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.converters.etsicatalog.sol003;
 
+import org.onap.so.adapters.etsi.sol003.adapter.common.VnfmAdapterUrlProvider;
 import org.onap.so.adapters.etsi.sol003.adapter.etsicatalog.notification.model.PkgmLinks;
 import org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.extclients.vnfm.notification.model.URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinks;
 import org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.extclients.vnfm.notification.model.URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage;
  */
 abstract public class AbstractPkgNotificationConverter {
 
+    private final VnfmAdapterUrlProvider vnfmAdapterUrlProvider;
+
+    public AbstractPkgNotificationConverter(final VnfmAdapterUrlProvider vnfmAdapterUrlProvider) {
+        this.vnfmAdapterUrlProvider = vnfmAdapterUrlProvider;
+    }
+
     protected URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinks convert(
-            final PkgmLinks pkgmLinks) {
+            final PkgmLinks pkgmLinks, final String vnfPkgId, final String subscriptionId) {
         final URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage linksVnfPackage =
                 new URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage();
         if (pkgmLinks.getVnfPackage() != null) {
-            linksVnfPackage.setHref(pkgmLinks.getVnfPackage().getHref());
+            linksVnfPackage.setHref(vnfmAdapterUrlProvider.getVnfPackageUrl(vnfPkgId));
         }
 
         final URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage linksSubscription =
                 new URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage();
         if (pkgmLinks.getSubscription() != null) {
-            linksSubscription.setHref(pkgmLinks.getSubscription().getHref());
+            linksSubscription.setHref(vnfmAdapterUrlProvider.getSubscriptionUriString(subscriptionId));
         }
 
         final URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinks links =
 
 
 package org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.rest;
 
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.ETSI_SUBSCRIPTION_NOTIFICATION_CONTROLLER_BASE_URL;
+import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE;
+import static org.springframework.test.annotation.DirtiesContext.ClassMode.BEFORE_CLASS;
+import static org.springframework.test.web.client.match.MockRestRequestMatchers.header;
+import static org.springframework.test.web.client.match.MockRestRequestMatchers.jsonPath;
+import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
+import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
+import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
+import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
+import java.net.URI;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.web.client.MockRestServiceServer;
 import org.springframework.web.client.RestTemplate;
-import java.net.URI;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.ETSI_SUBSCRIPTION_NOTIFICATION_CONTROLLER_BASE_URL;
-import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE;
-import static org.springframework.test.annotation.DirtiesContext.ClassMode.BEFORE_CLASS;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.header;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.jsonPath;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
+import com.google.gson.Gson;
 
 /**
  * @author Andrew Lamb (andrew.a.lamb@est.tech)
     private static final java.time.LocalDateTime TIMESTAMP = java.time.LocalDateTime.of(2020, 1, 1, 1, 1, 1, 1);
     private static final String VNFPKG_ID = UUID.randomUUID().toString();
     private static final String VNFD_ID = UUID.randomUUID().toString();
+    private static final String EXPECTED_VNF_PACKAGE_HREF =
+            "https://so-vnfm-adapter.onap:30406/so/vnfm-adapter/v1/vnfpkgm/v1/vnf_packages/" + VNFPKG_ID;
+    private static final String EXPECTED_SUBSCRIPTION_HREF =
+            "https://so-vnfm-adapter.onap:30406/so/vnfm-adapter/v1/vnfpkgm/v1/subscriptions/" + SUBSCRIPTION_ID;
+
 
     private BasicHttpHeadersProvider basicHttpHeadersProvider;
-    private final Gson gson = new GsonBuilder().registerTypeAdapter(LocalDateTime.class,
-            new EtsiSubscriptionNotificationController.LocalDateTimeTypeAdapter()).create();
 
     @Autowired
     @Qualifier(CONFIGURABLE_REST_TEMPLATE)
                 .andExpect(jsonPath("$.subscriptionId").value(SUBSCRIPTION_ID))
                 .andExpect(jsonPath("$.timeStamp").value(TIME_STAMP_STRING_EXPECTED_FROM_ETSI_CATALOG))
                 .andExpect(jsonPath("$.vnfPkgId").value(VNFPKG_ID)).andExpect(jsonPath("$.vnfdId").value(VNFD_ID))
-                .andExpect(jsonPath("$._links").value(buildPkgmLinks()))
+                .andExpect(jsonPath("$._links")
+                        .value(buildPkgmLinks(EXPECTED_VNF_PACKAGE_HREF, EXPECTED_SUBSCRIPTION_HREF)))
                 .andExpect(header("Authorization", EXPECTED_BASIC_AUTHORIZATION)).andRespond(withSuccess());
 
         final ResponseEntity<?> response = sendHttpPost(notification);
                         jsonPath("$.changeType").value(PkgChangeNotification.ChangeTypeEnum.OP_STATE_CHANGE.toString()))
                 .andExpect(jsonPath("$.operationalState")
                         .value(PkgChangeNotification.OperationalStateEnum.ENABLED.toString()))
-                .andExpect(jsonPath("$._links").value(buildPkgmLinks()))
+                .andExpect(jsonPath("$._links")
+                        .value(buildPkgmLinks(EXPECTED_VNF_PACKAGE_HREF, EXPECTED_SUBSCRIPTION_HREF)))
                 .andExpect(header("Authorization", EXPECTED_BASIC_AUTHORIZATION)).andRespond(withSuccess());
 
         final ResponseEntity<?> response = sendHttpPost(notification);
                 .andExpect(jsonPath("$.subscriptionId").value(SUBSCRIPTION_ID))
                 .andExpect(jsonPath("$.timeStamp").value(TIME_STAMP_STRING_EXPECTED_FROM_ETSI_CATALOG))
                 .andExpect(jsonPath("$.vnfPkgId").value(VNFPKG_ID)).andExpect(jsonPath("$.vnfdId").value(VNFD_ID))
-                .andExpect(jsonPath("$._links").value(buildPkgmLinks()))
+                .andExpect(jsonPath("$._links")
+                        .value(buildPkgmLinks(EXPECTED_VNF_PACKAGE_HREF, EXPECTED_SUBSCRIPTION_HREF)))
                 .andExpect(header("Authorization", EXPECTED_BASIC_AUTHORIZATION)).andRespond(withSuccess());
 
         final ResponseEntity<?> response = sendHttpPost(notification);
                         jsonPath("$.changeType").value(PkgChangeNotification.ChangeTypeEnum.OP_STATE_CHANGE.toString()))
                 .andExpect(jsonPath("$.operationalState")
                         .value(PkgChangeNotification.OperationalStateEnum.ENABLED.toString()))
-                .andExpect(jsonPath("$._links").value(buildPkgmLinks())).andRespond(withSuccess());
+                .andExpect(jsonPath("$._links")
+                        .value(buildPkgmLinks(EXPECTED_VNF_PACKAGE_HREF, EXPECTED_SUBSCRIPTION_HREF)))
+                .andRespond(withSuccess());
 
         final ResponseEntity<?> response = sendHttpPost(notification);
 
     }
 
     private PkgmLinks buildPkgmLinks() {
-        final PkgmLinks pkgmLinks = new PkgmLinks();
-
-        final NOTIFICATIONLINKSERIALIZER subscriptionLinkSerializer = new NOTIFICATIONLINKSERIALIZER();
-        subscriptionLinkSerializer.setHref("subscription_href");
-        pkgmLinks.setSubscription(subscriptionLinkSerializer);
-
-        final NOTIFICATIONLINKSERIALIZER vnfPackageLinkSerializer = new NOTIFICATIONLINKSERIALIZER();
-        vnfPackageLinkSerializer.setHref("vnf_package_href");
-        pkgmLinks.setVnfPackage(vnfPackageLinkSerializer);
+        return buildPkgmLinks("vnf_package_href", "subscription_href");
+    }
 
-        return pkgmLinks;
+    private PkgmLinks buildPkgmLinks(final String vnfPkgHref, final String subscriptionHref) {
+        return new PkgmLinks().vnfPackage(new NOTIFICATIONLINKSERIALIZER().href(vnfPkgHref))
+                .subscription(new NOTIFICATIONLINKSERIALIZER().href(subscriptionHref));
     }
 
     private PkgmSubscriptionRequest buildPkgmSubscriptionRequest(