public Map<String, List<TestcaseStep>> readTestcases(Map<String, Map<String, String>> testSuiteInfo ) {
		EnvironmentVariables ev = EnvironmentVariables.getInstance();
		//TestcaseID	StepID	Keyword	ApplicationID	FieldName	TestData	CheckPoint
		Map<String, List<TestcaseStep>> testCaseInfo = new LinkedHashMap<String, List<TestcaseStep>>();

		for (String tcID : testSuiteInfo.keySet()) {
			logger.info("reading Testcase ::"+tcID);
		    String currAppID = testSuiteInfo.get(tcID).get("ApplicationID");
		    String testcasesFilePath= ev.getTestcasesFilePathPrefix() +currAppID+ ev.getFileExtension() ;
			String tcsheetName = ev.getTestcasesSheetName();
			Connection conn1 = null;
			Statement stmnt = null;
			try
				{
					//Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
					conn1 = DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ="+testcasesFilePath+"");
					stmnt = conn1.createStatement();
					logger.info("TestcaseID ::"+tcID);
					String tcQuery = "select * from ["+tcsheetName+"$] where TestcaseID='"+tcID+"';";
					ResultSet tStepTable = stmnt.executeQuery(tcQuery);
					while( tStepTable.next() )
						{	
							String currKeyword = tStepTable.getString("Keyword");
							if (currKeyword.equalsIgnoreCase("ExecuteTestComponent")==false ){
								TestcaseStep step = new TestcaseStep();
								step.setTestcaseID(tcID);
								step.setStepID(tStepTable.getString("StepID"));
								step.setFieldName(tStepTable.getString("FieldName"));
								step.setApplicationID(tStepTable.getString("ApplicationID"));
								step.setKeyword(currKeyword);
								step.setTestDataType(tStepTable.getString("TestdataType"));
								step.setTestDataName(tStepTable.getString("Testdata"));
								step.setCheckPoint(tStepTable.getString("Checkpoint"));
	
								if(testCaseInfo.get(tcID)== null){
									List<TestcaseStep> steps = new ArrayList<TestcaseStep>();
									steps.add(step);
									testCaseInfo.put(tcID, steps);
									logger.info("Added a new Testcase - \n" +tcID  );
									logger.info("Added a new TestcaseStep \n"+step.getStepID());
								}else{
									List<TestcaseStep> steps = testCaseInfo.get(tcID);
									steps.add(step);
									logger.info("Updating the Testcase - \n" +tcID  );
									logger.info("Added a new TestcaseStep \n"+step.getStepID());
								}
							}else{
								String tcomID= tStepTable.getString("FieldName");
								String appID =  tStepTable.getString("ApplicationID");
								String stepID =  tStepTable.getString("StepID");
								logger.info("Keyword is ExecuteTestComponent @stepID:"+stepID + "  in Testcase, ID:"+tcID);
								logger.info("TestComponentID::"+tcomID );
								testCaseInfo=this.readTestcaseStepsFromComponent(appID, tcID, stepID, tcomID, testCaseInfo);
							}
						}
					tStepTable.close();
				}catch(Exception e){
					//e.printStackTrace();
					logger.error("Exception in readTestcases \n stacktraceInfo::"+ e.getMessage());
				}finally{
					try {
						stmnt.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						//e.printStackTrace();
					}
					try {
						conn1.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						//e.printStackTrace();
					}
				}
		}
		return testCaseInfo;
	}