let tempIndexValue = "0";
                             let tempIndexProperty = tempSelectedProperty;
                             let subPropertyDropdownList : Array<PropertyDropdownValue> = [];
-                            if (index%2 == 0) {
+                            if (!isNaN(Number(indexValue)) || indexValue.toLowerCase() === 'index') {
                                 tempIndexFlag = true;
                                 tempIndexValue = indexValue;
                                 tempSelectedProperty = null;
                                         const dataTypeFound: DataTypeModel = this.dataTypeService.getDataTypeByModelAndTypeName(this.componentMetadata.model, tempIndexProperty.schemaType);
                                         this.addPropertiesToDropdown(dataTypeFound.properties, subPropertyDropdownList);
                                         tempSelectedProperty = subPropertyDropdownList.find(property => property.propertyName === this.toscaGetFunction.toscaIndexList[index+1])
+                                        if (tempSelectedProperty == null && this.toscaGetFunction.toscaIndexList[index+2]) {
+                                            tempSelectedProperty = subPropertyDropdownList.find(property => property.propertyName === this.toscaGetFunction.toscaIndexList[index+2])
+                                        }
                                     }
                                 }
                                 let tempIndexValueMap : ToscaIndexObject = {indexFlag : tempIndexFlag, nestedFlag : tempNestedFlag, indexValue: tempIndexValue, indexProperty: tempSelectedProperty, subPropertyArray: subPropertyDropdownList};
             this.indexListValues.forEach((indexObject : ToscaIndexObject) => {
                 indexAndProperty.push(indexObject.indexValue);
                 if(indexObject.nestedFlag && indexObject.indexProperty != null) {
-                    indexAndProperty.push(indexObject.indexProperty.propertyName);
+                    indexAndProperty.push(...indexObject.indexProperty.propertyPath);
                 }
             });
             toscaGetFunction.toscaIndexList = indexAndProperty;
                     if (this.hasSameType(dataTypeProperty)) {
                         returnFlag =  true;
                     }
+                    if (!returnFlag && this.isComplexType(dataTypeProperty.type)) {
+                        const nestedDataTypeFound: DataTypeModel = this.dataTypeService.getDataTypeByModelAndTypeName(this.componentMetadata.model, dataTypeProperty.type);
+                        if (nestedDataTypeFound && nestedDataTypeFound.properties) {
+                            nestedDataTypeFound.properties.forEach( nestedDateTypeProperty => {
+                                if (this.hasSameType(nestedDateTypeProperty)) {
+                                    returnFlag =  true;
+                                }
+                            });
+                        }
+                    }
                 });
             }
             return returnFlag;
 
             if (!jsonNode.isArray()) {
                 throw context.instantiationException(ToscaGetFunctionDataDefinition.class, "Expecting an array for toscaIndexList attribute");
             }
-            for (int index = 0; index < jsonNode.size(); index++) {
-                String textValue = jsonNode.get(index).asText();
-                if (index % 2 == 0) {
-                    if (textValue.equalsIgnoreCase("INDEX")) {
-                        toscaIndexList.add(textValue);
-                    } else {
-                        try {
-                            toscaIndexList.add(Integer.parseInt(textValue));
-                        } catch (Exception e) {
-                            throw context.instantiationException(ToscaGetFunctionDataDefinition.class,
-                                "Expecting a valid value for toscaIndex attribute");
-                        }
-                    }
+
+            jsonNode.forEach(nodeValue -> {
+                String indexValue = nodeValue.asText();
+                if (StringUtils.isNumeric(indexValue)) {
+                    toscaIndexList.add(Integer.parseInt(indexValue));
                 } else {
-                    toscaIndexList.add(textValue);
+                    toscaIndexList.add(indexValue);
                 }
-            }
+            });
         }
         return toscaIndexList;
     }