diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js
index 4e7a1403600b19f0440585659c2df78ce1c0fd58..54d20eaec0abcd4750e6418c820433cdc13fe979 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js
@@ -266,6 +266,14 @@ function Jeditor(props) {
                         message: 'Not a valid input.Must be number between 0 - 90'
                     });
                 }
+            } else if (schema.max_length) {
+                if (value && value.length>schema.max_length) {
+                    errors.push({
+                        path: path,
+                        property: 'validationType',
+                        message: 'Exceed maximum allowed characters, enter the max length '+schema.max_length+' in '+schema.label
+                    });
+                }
             }
             return errors;
         });
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/ViewSchedulingUnit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/ViewSchedulingUnit.js
index af3e71af3dc7f66f45dc8e566f4a223c96f33aad..aef599d46c036a3a76348f237f8ad8ae5a111a0e 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/ViewSchedulingUnit.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/ViewSchedulingUnit.js
@@ -459,7 +459,7 @@ class ViewSchedulingUnit extends Component {
                         let taskTemplateSchema = await UtilService.resolveSchema(_.cloneDeep(taskTemplate.schema));
                         schema.definitions = {...schema.definitions, ...taskTemplateSchema.definitions};
                         taskPaths.reverse();
-                        const paramProp = await ParserUtility.getParamProperty($strategyRefs, taskPaths, taskTemplateSchema, param);
+                        const paramProp = await ParserUtility.getParamProperty($strategyRefs, taskPaths, taskTemplateSchema, null);
                         schema.properties[param.name] = _.cloneDeep(paramProp);
                         if (schema.properties[param.name]) {
                             schema.properties[param.name].title = param.name;
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.js
index 398aa02ac733b4392b9130aae2bc55da7512e944..e7a59d49af2107b36e12eb2172f02c961f3b90a2 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.js
@@ -67,6 +67,7 @@ export class SchedulingUnitCreate extends Component {
             newSet: null,
             observationIdSet: [],
         };
+        this.taskFilters = [];                      // To get Short_Description details
         this.priorityQueueTypes = [];
         this.projects = [];                         // All projects to load project dropdown
         this.schedulingSets = [];                   // All scheduling sets to be filtered for project
@@ -112,7 +113,8 @@ export class SchedulingUnitCreate extends Component {
                             TaskService.getTaskTemplates(),
                             ScheduleService.getSchedulingConstraintTemplates(),
                             ScheduleService.getStationGroup(),
-                            UtilService.getPriorityQueueType()];
+                            UtilService.getPriorityQueueType(),
+                            TaskService.getTaskFilterDefinition('draft')];
         Promise.all(promises).then(responses => {
             this.projects = responses[0];
             this.schedulingSets = responses[1];
@@ -121,6 +123,7 @@ export class SchedulingUnitCreate extends Component {
             this.constraintTemplates = responses[4];
             this.stations = responses[5];
             this.priorityQueueTypes = responses[6];
+            this.taskFilters = responses[7];
             //  Setting first value as constraint template
              this.constraintStrategy(this.constraintTemplates[0]);
             if (this.state.schedulingUnit.project) {
@@ -178,7 +181,7 @@ export class SchedulingUnitCreate extends Component {
 
             let taskPaths = param.refs[0].split("/");
             const taskName = taskPaths[2];
-            taskPaths = taskPaths.slice(4, taskPaths.length);
+            taskPaths = taskPaths.slice((taskPaths.length===4?3:4), taskPaths.length);
             const task = tasks[taskName];
             if (task) {
                 const taskTemplate = _.find(this.taskTemplates, {'name': task['specifications_template']['name']});
@@ -200,15 +203,15 @@ export class SchedulingUnitCreate extends Component {
                 }
                 let taskTemplateSchema = this.taskTemplateSchemas[task['specifications_template']['name']];
                 if (!taskTemplateSchema) {
-                    taskTemplateSchema = _.find(this.taskTemplates, {'name': task['specifications_template']['name']}).schema;
-                    taskTemplateSchema = await UtilService.resolveSchema(_.cloneDeep(taskTemplateSchema));
+                     /*taskTemplateSchema = _.find(this.taskTemplates, {'name': task['specifications_template']['name']}).schema*/;
+                    taskTemplateSchema = await UtilService.resolveSchema(_.cloneDeep(taskTemplate.schema));
                     //TODO: change the code to make custom fields work for server side resolved schema.
                     // taskTemplateSchema = await UtilService.getResolvedSchema(taskTemplate.url);
                     this.taskTemplateSchemas[task['specifications_template']['name']] = taskTemplateSchema;
                 }
                 schema.definitions = {...schema.definitions, ...taskTemplateSchema.definitions};
                 taskPaths.reverse();
-                const paramProp = await ParserUtility.getParamProperty($strategyRefs, taskPaths, taskTemplateSchema, param);
+                const paramProp = await ParserUtility.getParamProperty($strategyRefs, taskPaths, taskTemplateSchema, this.taskFilters);
                 schema.properties[param.name] = _.cloneDeep(paramProp);
                 if (schema.properties[param.name]) {
                     schema.properties[param.name].title = param.name;
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/edit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/edit.js
index 88e1c9b34602c42e2b64b4750758167733c8d5b2..13eebc821bb0eb19f478f93ab1c69c0b0f742e0d 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/edit.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/edit.js
@@ -39,10 +39,10 @@ export class EditSchedulingUnit extends Component {
         this.state = {
             showDialog: false,
             isDirty: false,
-            isLoading: true,                        //Flag for loading spinner                     
-            dialog: { header: '', detail: ''},      //Dialog properties
-            redirect: null,                         //URL to redirect
-            errors: [],                             //Form Validation errors
+            isLoading: true,                        // Flag for loading spinner                     
+            dialog: { header: '', detail: ''},      // Dialog properties
+            redirect: null,                         // URL to redirect
+            errors: [],                             // Form Validation errors
             schedulingSets: [],                     // Scheduling set of the selected project
             schedulingUnit: {},
             projectDisabled: (props.match?(props.match.params.project? true:false):false),      
@@ -53,11 +53,12 @@ export class EditSchedulingUnit extends Component {
             validEditor: false,                     // For JSON editor validation
             validFields: {},                        // For Form Validation 
             observStrategyVisible: false,
-            missingStationFieldsErrors: [],                // Validation for max no.of missing station
+            missingStationFieldsErrors: [],         // Validation for max no.of missing station
             stationGroup: [],
             customSelectedStations: [],
-            permissionById: {}              // Custom Stations    
+            permissionById: {}                      // Custom Stations    
         }
+        this.taskFilters = [];                      // To get Short_Description details
         this.priorityQueueTypes = [];
         this.projects = [];                         // All projects to load project dropdown
         this.schedulingSets = [];                   // All scheduling sets to be filtered for project
@@ -111,14 +112,18 @@ export class EditSchedulingUnit extends Component {
             for (const param of parameters) {
                 // TODO: make parameter handling more generic, instead of task specific.
                 if (!param.refs[0].startsWith("#/tasks/")) { continue; }
-
                 let taskPaths = param.refs[0].split("/");
                 const taskName = taskPaths[2];
-                taskPaths = taskPaths.slice(4, taskPaths.length);
+                taskPaths = taskPaths.slice((taskPaths.length===4?3:4), taskPaths.length);
                 const task = tasks[taskName];
                 const taskDraft = this.state.taskDrafts.find(taskD => taskD.name === taskName);
                 if (taskDraft) {
-                    task.specifications_doc = taskDraft.specifications_doc;
+                    const taskKeys = Object.keys(task);
+                    for (const taskKey of taskKeys) {
+                        if (taskKey !== 'specifications_template') {
+                            task[taskKey] = taskDraft[taskKey];
+                        }
+                    }
                 }
                 if (task) {
                     tasksToUpdate[taskName] = taskName;
@@ -138,13 +143,13 @@ export class EditSchedulingUnit extends Component {
                     }
                     let taskTemplateSchema = this.taskTemplateSchemas[task['specifications_template']['name']];
                     if (!taskTemplateSchema) {
-                        taskTemplateSchema = _.find(this.taskTemplates, {'name': task['specifications_template']['name']}).schema;
-                        taskTemplateSchema = await UtilService.resolveSchema(_.cloneDeep(taskTemplateSchema));
+                        //taskTemplateSchema = _.find(this.taskTemplates, {'name': task['specifications_template']['name']}).schema;
+                        taskTemplateSchema = await UtilService.resolveSchema(_.cloneDeep(taskTemplate.schema));
                         this.taskTemplateSchemas[task['specifications_template']['name']] = taskTemplateSchema;
                     }
                     schema.definitions = {...schema.definitions, ...taskTemplateSchema.definitions};
                     taskPaths.reverse();
-                    const paramProp = await ParserUtility.getParamProperty($strategyRefs, taskPaths, taskTemplateSchema, param);
+                    const paramProp = await ParserUtility.getParamProperty($strategyRefs, taskPaths, taskTemplateSchema, this.taskFilters);
                     schema.properties[param.name] = _.cloneDeep(paramProp);
                     if (schema.properties[param.name]) {
                         schema.properties[param.name].title = param.name;
@@ -176,7 +181,8 @@ export class EditSchedulingUnit extends Component {
                             ScheduleService.getTasksDraftBySchedulingUnitId(this.props.match.params.id, true),
                             ScheduleService.getSchedulingConstraintTemplates(),
                             ScheduleService.getStationGroup(),
-                            UtilService.getPriorityQueueType()
+                            UtilService.getPriorityQueueType(),
+                            TaskService.getTaskFilterDefinition('draft')
                         ];
         const permissionById = await AuthUtil.getUserPermissionByModuleId('scheduling_unit_draft', this.props.match.params.id)
         this.setState({permissionById: permissionById})
@@ -188,6 +194,7 @@ export class EditSchedulingUnit extends Component {
             this.constraintTemplates = responses[6];
             this.stations = responses[7];
             this.priorityQueueTypes = responses[8];
+            this.taskFilters =  responses[9];
             responses[4].project = this.schedulingSets.find(i => i.id === responses[4].scheduling_set_id).project_id;
             this.setState({ schedulingUnit: responses[4], taskDrafts: responses[5].data.results,
                             observStrategyVisible: responses[4].observation_strategy_template_id?true:false });
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js
index ebe0ea4a181abe02a43d0cc9def5e9a39f13f280..13968e660e39f302f53489350deeb6d9d7b444ff 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js
@@ -133,7 +133,7 @@ export class SchedulingSetCreate extends Component {
             newSet: null,
             priorityQueuelist: null,
         };
-        
+        this.taskFilters = [];
         this.isMacOS = false;
         this.gridApi = '';
         this.gridColumnApi = '';
@@ -475,7 +475,8 @@ export class SchedulingSetCreate extends Component {
             ScheduleService.getObservationStrategies(),
             TaskService.getTaskTemplates(),
             ScheduleService.getSchedulingConstraintTemplates(),
-            UtilService.getPriorityQueueType()
+            UtilService.getPriorityQueueType(),
+            TaskService.getTaskFilterDefinition('draft')
         ];
         const permission = await AuthUtil.getUserPermissionByModule('scheduleunit_draft');
         this.setState({userrole: permission});
@@ -486,6 +487,7 @@ export class SchedulingSetCreate extends Component {
             this.taskTemplates = responses[3];
             this.constraintTemplates = responses[4];
             this.priorityQueuelist = responses[5];
+            this.taskFilters = responses[6];
             let queueList = [" "];
             if (this.priorityQueuelist) {
                 this.priorityQueuelist.forEach(queue => {
@@ -561,13 +563,13 @@ export class SchedulingSetCreate extends Component {
                     }
                     let taskTemplateSchema = this.taskTemplateSchemas[task['specifications_template']['name']];
                     if (!taskTemplateSchema) {
-                        taskTemplateSchema = _.find(this.taskTemplates, {'name': task['specifications_template']['name']}).schema;
-                        taskTemplateSchema = await UtilService.resolveSchema(_.cloneDeep(taskTemplateSchema));
+                       // taskTemplateSchema = _.find(this.taskTemplates, {'name': task['specifications_template']['name']}).schema;
+                        taskTemplateSchema = await UtilService.resolveSchema(_.cloneDeep(taskTemplate.schema));
                         this.taskTemplateSchemas[task['specifications_template']['name']] = taskTemplateSchema;
                     }
                     schema.definitions = {...schema.definitions, ...taskTemplateSchema.definitions};
                     taskPaths.reverse();
-                    const paramProp = await ParserUtility.getParamProperty($strategyRefs, taskPaths, taskTemplateSchema, param);
+                    const paramProp = await ParserUtility.getParamProperty($strategyRefs, taskPaths, taskTemplateSchema, this.taskFilters);
                     schema.properties[param.name] = _.cloneDeep(paramProp);
                     if (schema.properties[param.name]) {
                         schema.properties[param.name].title = param.name;
@@ -947,7 +949,13 @@ export class SchedulingSetCreate extends Component {
             const task = tasks[taskName];
             const taskDraft = taskDrafts.find(taskD => taskD.name === taskName);
             if (taskDraft) {
-                task.specifications_doc = taskDraft.specifications_doc;
+                //task.specifications_doc = taskDraft.specifications_doc;
+                const taskKeys = Object.keys(task);
+                for (const taskKey of taskKeys) {
+                    if (taskKey !== 'specifications_template') {
+                        task[taskKey] = taskDraft[taskKey];
+                    }
+                }
             }
             //Resolve task from the strategy template
             const $taskRefs = await $RefParser.resolve(task);
@@ -969,8 +977,8 @@ export class SchedulingSetCreate extends Component {
                         const parameterRef = param.refs[0];//.replace(`#/tasks/${taskName}/specifications_doc`, '#/schema/properties');
                         tempProperty = $templateRefs.get(parameterRef);
                     }   catch(error) {
-                        tempProperty = _.cloneDeep(taskTemplate.schema.properties[taskPaths[4]]);
-                        if (tempProperty.type === 'array') {
+                        tempProperty = _.cloneDeep(taskTemplate.schema.properties[taskPaths.length === 4 ?taskPaths[3]:taskPaths[4]]);
+                        if (tempProperty && tempProperty.type === 'array') {
                             tempProperty = tempProperty.items.properties[taskPaths[6]];
                         }
                         property = tempProperty;
@@ -1707,6 +1715,12 @@ export class SchedulingSetCreate extends Component {
                                             errorMsg += column.colDef.headerName+", ";
                                         }
                                     });
+                                } else if(_.endsWith(column.colId, " description")){ // condition added for Short Description
+                                    let sgCellValue = rowData[column.colId];
+                                    if (sgCellValue != '' && sgCellValue.length>32) {
+                                        isValidRow = false;
+                                        errorMsg += column.colDef.headerName+", ";
+                                    }
                                 }
                             }
                         }
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/services/schedule.service.js b/SAS/TMSS/frontend/tmss_webapp/src/services/schedule.service.js
index b1791ecf4789d35fc9d4479b6a8faa89fea719b3..2c31160970b314c78d9b4b6f2767d62cba576bd7 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/services/schedule.service.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/services/schedule.service.js
@@ -729,7 +729,13 @@ const ScheduleService = {
                     let task = tasks.find(task => { return task.name === taskToUpdate });
                     taskName = taskToUpdate;
                     if (task) {
-                        task.specifications_doc = observStrategy.template.tasks[taskToUpdate].specifications_doc;
+                        const taskUpdateParam = observStrategy.template.tasks[taskToUpdate];
+                        const taskKeys = Object.keys(taskUpdateParam)
+                        for (const taskKey of taskKeys) {
+                            if (taskKey !== 'specifications_template') { // to retain the 'specifications_template' value
+                                task[taskKey] = taskUpdateParam[taskKey];
+                            }
+                        }
                         if (task.specifications_doc.station_groups) {
                             task.specifications_doc.station_groups = station_groups;
                         }   else if (task.specifications_doc.target?.station_groups) {
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/utils/parser.utility.js b/SAS/TMSS/frontend/tmss_webapp/src/utils/parser.utility.js
index 53b07f5cfb7f35eb83dd672f4e557ea09480aa10..c9503ad2442e26bc3ae13edf3f877358783abfc7 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/utils/parser.utility.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/utils/parser.utility.js
@@ -11,12 +11,15 @@ const ParserUtility = {
      * @param {Object} taskTemplateSchema - JSON schema for the respective task template
      * @returns 
      */
-     getParamProperty: async($strategyRefs, paramPaths, taskTemplateSchema) => {
+     getParamProperty: async($strategyRefs, paramPaths, taskTemplateSchema, taskFilters) => {
         const $templateRefs = await $RefParser.resolve(taskTemplateSchema);
         let pathIndex = 0;
         let paramProp = {};
         for (const paramPath of paramPaths) {
             let property = taskTemplateSchema.properties[paramPath];
+            if (!property && taskFilters && taskFilters.data.actions.POST) {
+                property = taskFilters.data.actions.POST[paramPath];
+            }
             if (property) {
                 let rootPath = paramPaths.slice(0, pathIndex)
                 rootPath.reverse();