diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClient.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClient.java
index ca815cf..214be06 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClient.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClient.java
@@ -32,13 +32,9 @@
 
 public interface AAIRestClient {
 	
-	Pservers getPhysicalServers(String hostName, String uuid);
-	
-	List<Pserver> getPhysicalServerByVnfId(String vnfId, String transactionLoggingUuid) throws UnsupportedEncodingException, JsonParseException, JsonMappingException, IOException;
-	
-	void updateMaintenceFlag(String vnfId,boolean inMaint, String transactionLoggingUuid) throws Exception;
-
-	void updateMaintenceFlagVnfId(String vnfId, boolean inMaint, String transactionLoggingUuid) throws Exception;
-	
-	GenericVnf getVnfByName(String vnfId,  String transactionLoggingUuid) throws Exception;
+Pservers getPhysicalServers(String hostName, String uuid);	
+List<Pserver> getPhysicalServerByVnfId(String vnfId, String transactionLoggingUuid) throws UnsupportedEncodingException, JsonParseException, JsonMappingException, IOException;	
+void updateMaintenceFlag(String vnfId,boolean inMaint, String transactionLoggingUuid) throws JsonParseException, JsonMappingException, IOException;
+void updateMaintenceFlagVnfId(String vnfId, boolean inMaint, String transactionLoggingUuid) throws JsonParseException, JsonMappingException , IOException;
+GenericVnf getVnfByName(String vnfId,  String transactionLoggingUuid) throws JsonParseException, JsonMappingException , IOException;
 }
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClientImpl.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClientImpl.java
index ae8638f..af1eddf 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClientImpl.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/aai/AAIRestClientImpl.java
@@ -139,14 +139,14 @@
 	}
 	
 	@Override
-	public void updateMaintenceFlag(String vnfName, boolean inMaint, String transactionLoggingUuid) throws Exception {
+	public void updateMaintenceFlag(String vnfName, boolean inMaint, String transactionLoggingUuid) throws JsonParseException, JsonMappingException, IOException {
 		GenericVnfs genericVnfs = webTarget.register(AAIResourcesObjectMapperProvider.class).path(ENDPOINT_GET_ALL_VNFS)
 				.queryParam("vnf-name", vnfName).request().header("X-FromAppId", "MSO")
 				.header("X-TransactionId", transactionLoggingUuid).header("Content-Type", "application/json")
 				.accept(MediaType.APPLICATION_JSON_TYPE).get().readEntity(GenericVnfs.class);
 
 		if (genericVnfs.getGenericVnf().size() > 1)
-			throw new Exception("Multiple Generic Vnfs Returned");
+			throw new IndexOutOfBoundsException ("Multiple Generic Vnfs Returned");
 
 		GenericVnf genericVnf = genericVnfs.getGenericVnf().get(0);
 		updateMaintenceFlagVnfId(genericVnf.getVnfId(), inMaint, transactionLoggingUuid);
@@ -154,7 +154,7 @@
 
 	@Override
 	public void updateMaintenceFlagVnfId(String vnfId, boolean inMaint, String transactionLoggingUuid)
-			throws Exception {
+			throws JsonParseException, JsonMappingException, IOException {
 		GenericVnf genericVnf = new GenericVnf();
 		genericVnf.setInMaint(inMaint);
 		webTarget.register(AAIResourcesObjectMapperProvider.class).path(GENERIC_VNF_PATH + "/" + vnfId).request()
@@ -165,7 +165,7 @@
 	}
 
 	@Override
-	public GenericVnf getVnfByName(String vnfId, String transactionLoggingUuid) throws Exception {
+	public GenericVnf getVnfByName(String vnfId, String transactionLoggingUuid) throws JsonParseException, JsonMappingException, IOException {
 		return webTarget.register(AAIResourcesObjectMapperProvider.class).path(GENERIC_VNF_PATH + "/" + vnfId).request()
 				.header("X-FromAppId", "MSO").header("X-TransactionId", transactionLoggingUuid)
 				.header("Content-Type", "application/json").accept(MediaType.APPLICATION_JSON_TYPE).get()
