diff --git a/.github/workflows/functionsTests.yml b/.github/workflows/functionsTests.yml
index d3930b1..48cb62b 100644
--- a/.github/workflows/functionsTests.yml
+++ b/.github/workflows/functionsTests.yml
@@ -57,6 +57,7 @@
           dnn,
           federated.algorithms,
           federated.primitives,
+          federated.transform,
           frame,
           indexing,
           io,
diff --git a/src/main/java/org/apache/sysds/hops/recompile/Recompiler.java b/src/main/java/org/apache/sysds/hops/recompile/Recompiler.java
index 4334384..d048863 100644
--- a/src/main/java/org/apache/sysds/hops/recompile/Recompiler.java
+++ b/src/main/java/org/apache/sysds/hops/recompile/Recompiler.java
@@ -1604,17 +1604,16 @@
 			//get meta data filename
 			String mtdname = DataExpression.getMTDFileName(dop.getFileName());
 			Path path = new Path(mtdname);
-			try( FileSystem fs = IOUtilFunctions.getFileSystem(mtdname) ) {
-				if( fs.exists(path) ){
-					try(BufferedReader br = new BufferedReader(new InputStreamReader(fs.open(path)))) {
-						JSONObject mtd = JSONHelper.parse(br);
-						DataType dt = DataType.valueOf(String.valueOf(mtd.get(DataExpression.DATATYPEPARAM)).toUpperCase());
-						dop.setDataType(dt);
-						if(dt != DataType.FRAME)
-							dop.setValueType(ValueType.valueOf(String.valueOf(mtd.get(DataExpression.VALUETYPEPARAM)).toUpperCase()));
-						dop.setDim1((dt==DataType.MATRIX||dt==DataType.FRAME)?Long.parseLong(mtd.get(DataExpression.READROWPARAM).toString()):0);
-						dop.setDim2((dt==DataType.MATRIX||dt==DataType.FRAME)?Long.parseLong(mtd.get(DataExpression.READCOLPARAM).toString()):0);
-					}
+			FileSystem fs = IOUtilFunctions.getFileSystem(mtdname); //no auto-close
+			if( fs.exists(path) ){
+				try(BufferedReader br = new BufferedReader(new InputStreamReader(fs.open(path)))) {
+					JSONObject mtd = JSONHelper.parse(br);
+					DataType dt = DataType.valueOf(String.valueOf(mtd.get(DataExpression.DATATYPEPARAM)).toUpperCase());
+					dop.setDataType(dt);
+					if(dt != DataType.FRAME)
+						dop.setValueType(ValueType.valueOf(String.valueOf(mtd.get(DataExpression.VALUETYPEPARAM)).toUpperCase()));
+					dop.setDim1((dt==DataType.MATRIX||dt==DataType.FRAME)?Long.parseLong(mtd.get(DataExpression.READROWPARAM).toString()):0);
+					dop.setDim2((dt==DataType.MATRIX||dt==DataType.FRAME)?Long.parseLong(mtd.get(DataExpression.READCOLPARAM).toString()):0);
 				}
 			}
 		}
diff --git a/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedData.java b/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedData.java
index 9f5f942..8a3fbd2 100644
--- a/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedData.java
+++ b/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedData.java
@@ -33,6 +33,7 @@
 import io.netty.handler.codec.serialization.ObjectEncoder;
 import io.netty.util.concurrent.Promise;
 
+import org.apache.log4j.Logger;
 import org.apache.sysds.common.Types;
 import org.apache.sysds.conf.DMLConfig;
 import org.apache.sysds.runtime.DMLRuntimeException;
@@ -47,7 +48,8 @@
 
 
 public class FederatedData {
-	private static Set<InetSocketAddress> _allFedSites = new HashSet<>();
+	protected final static Logger log = Logger.getLogger(FederatedWorkerHandler.class);
+	private final static Set<InetSocketAddress> _allFedSites = new HashSet<>();
 	
 	private final Types.DataType _dataType;
 	private final InetSocketAddress _address;
@@ -158,14 +160,25 @@
 		if( _allFedSites.isEmpty() )
 			return;
 		
-		//create and execute clear request on all workers
-		FederatedRequest fr = new FederatedRequest(RequestType.CLEAR);
-		List<Future<FederatedResponse>> ret = new ArrayList<>();
-		for( InetSocketAddress address : _allFedSites )
-			ret.add(executeFederatedOperation(address, fr));
-		
-		//wait for successful completion
-		FederationUtils.waitFor(ret);
+		try {
+			//create and execute clear request on all workers
+			FederatedRequest fr = new FederatedRequest(RequestType.CLEAR);
+			List<Future<FederatedResponse>> ret = new ArrayList<>();
+			for( InetSocketAddress address : _allFedSites )
+				ret.add(executeFederatedOperation(address, fr));
+			
+			//wait for successful completion
+			FederationUtils.waitFor(ret);
+		}
+		catch(Exception ex) {
+			log.warn("Failed to execute CLEAR request on existing federated sites.", ex);
+		}
+		finally {
+			resetFederatedSites();
+		}
+	}
+	
+	public static void resetFederatedSites() {
 		_allFedSites.clear();
 	}
 	
diff --git a/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedWorkerHandler.java b/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedWorkerHandler.java
index 0a0a05b..a2e62fe 100644
--- a/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedWorkerHandler.java
+++ b/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedWorkerHandler.java
@@ -187,29 +187,20 @@
 		try {
 			String mtdname = DataExpression.getMTDFileName(filename);
 			Path path = new Path(mtdname);
-			try (FileSystem fs = IOUtilFunctions.getFileSystem(mtdname)) {
-				try (BufferedReader br = new BufferedReader(new InputStreamReader(fs.open(path)))) {
-					JSONObject mtd = JSONHelper.parse(br);
-					if (mtd == null)
-						return new FederatedResponse(ResponseType.ERROR,
-							new FederatedWorkerHandlerException("Could not parse metadata file"));
-					mc.setRows(mtd.getLong(DataExpression.READROWPARAM));
-					mc.setCols(mtd.getLong(DataExpression.READCOLPARAM));
-					if(mtd.containsKey(DataExpression.READNNZPARAM)){
-						mc.setNonZeros(mtd.getLong(DataExpression.READNNZPARAM));
-					}
-					else if (mc.getCols() * mc.getRows() < 8000000){
-						// force dense allocation.
-						mc.setNonZeros(mc.getCols() *mc.getRows());
-					}
-					else{
-						// force sparse allocation 
-						mc.setNonZeros((long)(mc.getCols() * mc.getRows() * 0.35));
-					}
-					
-					cd = (CacheableData<?>) PrivacyPropagator.parseAndSetPrivacyConstraint(cd, mtd);
-					fmt = FileFormat.safeValueOf(mtd.getString(DataExpression.FORMAT_TYPE));
-				}
+			
+			FileSystem fs = IOUtilFunctions.getFileSystem(mtdname); //no auto-close
+			try (BufferedReader br = new BufferedReader(new InputStreamReader(fs.open(path)))) {
+				JSONObject mtd = JSONHelper.parse(br);
+				if (mtd == null)
+					return new FederatedResponse(ResponseType.ERROR,
+						new FederatedWorkerHandlerException("Could not parse metadata file"));
+				mc.setRows(mtd.getLong(DataExpression.READROWPARAM));
+				mc.setCols(mtd.getLong(DataExpression.READCOLPARAM));
+				if(mtd.containsKey(DataExpression.READNNZPARAM))
+					mc.setNonZeros(mtd.getLong(DataExpression.READNNZPARAM));
+				
+				cd = (CacheableData<?>) PrivacyPropagator.parseAndSetPrivacyConstraint(cd, mtd);
+				fmt = FileFormat.safeValueOf(mtd.getString(DataExpression.FORMAT_TYPE));
 			}
 		}
 		catch (Exception ex) {
diff --git a/src/test/java/org/apache/sysds/test/functions/federated/primitives/FederatedNegativeTest.java b/src/test/java/org/apache/sysds/test/functions/federated/primitives/FederatedNegativeTest.java
index 5cac52c..2ebe0c8 100644
--- a/src/test/java/org/apache/sysds/test/functions/federated/primitives/FederatedNegativeTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/federated/primitives/FederatedNegativeTest.java
@@ -57,6 +57,10 @@
 		catch (Exception e) {
 			e.printStackTrace();
 		}
+		finally {
+			//robustness in single JVM tests
+			FederatedData.resetFederatedSites();
+		}
 		TestUtils.shutdownThread(t);
 	}
 }
diff --git a/src/test/java/org/apache/sysds/test/functions/transform/TransformFederatedEncodeDecodeTest.java b/src/test/java/org/apache/sysds/test/functions/federated/transform/TransformFederatedEncodeDecodeTest.java
similarity index 98%
rename from src/test/java/org/apache/sysds/test/functions/transform/TransformFederatedEncodeDecodeTest.java
rename to src/test/java/org/apache/sysds/test/functions/federated/transform/TransformFederatedEncodeDecodeTest.java
index 48a17f5..ceee7da 100644
--- a/src/test/java/org/apache/sysds/test/functions/transform/TransformFederatedEncodeDecodeTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/federated/transform/TransformFederatedEncodeDecodeTest.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.sysds.test.functions.transform;
+package org.apache.sysds.test.functions.federated.transform;
 
 import java.util.Arrays;
 import java.util.HashMap;
