diff --git a/SAS/TMSS/frontend/tmss_webapp/cleanTemplateSchemas.js b/SAS/TMSS/frontend/tmss_webapp/cleanTemplateSchemas.js
new file mode 100644
index 0000000000000000000000000000000000000000..bbced2c2f26efdf11eff6e18efb5ac4a861200a8
--- /dev/null
+++ b/SAS/TMSS/frontend/tmss_webapp/cleanTemplateSchemas.js
@@ -0,0 +1,21 @@
+//const fs = require('fs').promises;
+const fs = require('fs');
+const path = require('path');
+
+if (fs.existsSync("build/schemas")) {
+	fs.rm("build/schemas", { recursive: true, force: true }, (err) => {
+		if (err) {
+			throw err;
+		}
+		console.log("Deleted build/schemas");
+	});
+}
+
+if (fs.existsSync("public/schemas")) {
+	fs.rm("public/schemas", { recursive: true, force: true }, (err) => {
+		if (err) {
+			throw err;
+		}
+		console.log("Deleted public/schemas");
+	});
+}
\ No newline at end of file
diff --git a/SAS/TMSS/frontend/tmss_webapp/package.json b/SAS/TMSS/frontend/tmss_webapp/package.json
index d724113fc88895250f22dbe637c758d2fe1aa5bf..08fb8cb6e4a8213adb17196c09e57e74925f426f 100644
--- a/SAS/TMSS/frontend/tmss_webapp/package.json
+++ b/SAS/TMSS/frontend/tmss_webapp/package.json
@@ -75,8 +75,8 @@
     "build": "react-scripts build",
     "test": "react-scripts test",
     "eject": "react-scripts eject",
-    "prepareTemplateSchemas": "node scripts/prepareTemplateSchemas.js",
-    "cleanTemplateSchemas": "node scripts/cleanTemplateSchemas.js"
+    "prepareTemplateSchemas": "node prepareTemplateSchemas.js",
+    "cleanTemplateSchemas": "node cleanTemplateSchemas.js"
   },
   "proxy": "http://127.0.0.1:8008/",
   "eslintConfig": {
diff --git a/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas.js b/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas.js
new file mode 100644
index 0000000000000000000000000000000000000000..dcee2ae5ef4192a7313cdab0ec92d37dd80cc4ff
--- /dev/null
+++ b/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas.js
@@ -0,0 +1,100 @@
+//const fs = require('fs').promises;
+const fs = require('fs');
+const path = require('path');
+const replace = require('replace-in-file');
+
+async function getTemplateFiles(dir) {
+    let files = await fs.promises.readdir(dir);
+    files = await Promise.all(files.map(async file => {
+        const filePath = path.join(dir, file);
+        const stats = await fs.promises.stat(filePath);
+        if (stats.isDirectory()) return getTemplateFiles(filePath);
+        else if(stats.isFile()) return filePath;
+    }));
+
+    return files.reduce((all, folderContents) => all.concat(folderContents), []);
+}
+
+// Get and Copy all template files from backend source to frontend app folders and format as required
+getTemplateFiles('../../backend/src/tmss/tmssapp/schemas').then(async(backEndFiles) =>  {
+	console.log(backEndFiles);
+	// Copy backend template json files to public/schemas folder in frontend app
+	for (let file of backEndFiles) {
+		if (file.indexOf(".json") <=0) { continue; }
+		let folderName = file.substring(file.indexOf("schemas\\")+8, file.lastIndexOf("\\"));
+		let fileName = file.substring(file.lastIndexOf("\\")+1);
+		const data = fs.readFileSync(file, 'utf8')
+		console.log(data)
+		if (!fs.existsSync("public/schemas/" + folderName)) {
+			fs.mkdirSync("public/schemas/" + folderName, { recursive: true });
+		}
+		fs.writeFileSync("public/schemas/" + folderName + "/" + fileName, data);
+	}
+	
+	// Get all template files from public/schema folder and format as required
+	getTemplateFiles('public/schemas').then(async(files) =>  {
+		//console.log(files);
+
+		// Replace the host and port address of template apis to localhost
+		const hostReplaceOptions = {
+		  //files: 'schemas/scheduling_constraints_template/constraints-1.json',
+		  files: files,
+		  from: /http:\/\/127.0.0.1:8000\/api/g,
+		  to: 'http://localhost:3000',
+		};
+		console.log(await replace(hostReplaceOptions));
+		
+		// Replace db_id with file extension
+		const fileReplaceOptions = {
+		  files: files,
+		  from: /\/1\/#/g,
+		  to: '-1.json#',
+		};
+		console.log(await replace(fileReplaceOptions));
+		
+		/*const fileReplaceOptions1 = {
+		  files: files,
+		  from: /\/1#/g,
+		  to: '-1.json#',
+		};
+		console.log(await replace(fileReplaceOptions1));
+		
+		const fileReplaceOptions2 = {
+		  files: files,
+		  from: /.json#\/definitions/g,
+		  to: '.json#/schema/definitions',
+		};
+		console.log(await replace(fileReplaceOptions2));*/
+		
+		for (let file of files) {
+			if (file.indexOf(".json") <=0) { continue; }
+			console.log(file);
+			
+			let folderName = file.substring(file.indexOf("schemas\\")+8, file.lastIndexOf("\\"));
+			// Replae folder name		
+			let folderRef = folderName.replace(/_/g,"");
+			let folderRefRegex = new RegExp(folderRef, "g");
+			const folderReplaceOptions = {
+			  files: files,
+			  from: folderRefRegex,
+			  to: folderName,
+			};
+			console.log(await replace(folderReplaceOptions));
+			
+			// Copy templates to build folder so that it can be referred by the test suites
+			const data = fs.readFileSync(file, 'utf8')
+			console.log(data)
+			if (!fs.existsSync("build/schemas/" + folderName)) {
+				fs.mkdirSync("build/schemas/" + folderName, { recursive: true });
+			}
+			fs.writeFileSync(file.replace("public","build"), data);
+			
+			// Update the json files in public/schemas folder to contain only the schema object
+			const jsonData = JSON.parse(data);
+			if (jsonData["schema"]) {
+				fs.writeFileSync(file, JSON.stringify(jsonData["schema"]));
+			}
+		}
+	});
+});
+