diff --git a/AnyCompositeFields/AnyCompositeFIelds/ControlManifest.Input.xml b/AnyCompositeFields/AnyCompositeFIelds/ControlManifest.Input.xml
index f9b4aa0..8a32397 100644
--- a/AnyCompositeFields/AnyCompositeFIelds/ControlManifest.Input.xml
+++ b/AnyCompositeFields/AnyCompositeFIelds/ControlManifest.Input.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest>
-  <control namespace="Carfup" constructor="AnyCompositeFIelds" version="0.0.72" display-name-key="Carfup.AnyCompositeFIelds" description-key="AnyCompositeFIelds will allow  you to display any stack of fields as composite rendering." control-type="standard" preview-image="img/preview.png">
+  <control namespace="Carfup" constructor="AnyCompositeFIelds" version="0.0.75" display-name-key="Carfup.AnyCompositeFIelds" description-key="AnyCompositeFIelds will allow  you to display any stack of fields as composite rendering." control-type="standard" preview-image="img/preview.png">
     <!-- property node identifies a specific, configurable piece of data that the control expects from CDS -->
     <property name="FieldToAttachControl" display-name-key="FieldToAttachControl" description-key="Field to attach the control to" of-type-group="strings" usage="bound" required="true" />
     <property name="separator" display-name-key="Values separator" description-key="Separator to split the mapped values (for a space, put %20)" of-type="SingleLine.Text" usage="input" required="true" default-value="%20" />
@@ -20,6 +20,9 @@
       <type>SingleLine.Email</type>
       <type>SingleLine.Text</type>
       <type>SingleLine.Phone</type>
+      <type>SingleLine.TextArea</type>
+      <type>SingleLine.URL</type>
+      <type>Multiple</type>
     </type-group>
     <!-- 
       Property node's of-type attribute can be of-type-group attribute. 
diff --git a/AnyCompositeFields/AnyCompositeFIelds/components/CompositeControl.tsx b/AnyCompositeFields/AnyCompositeFIelds/components/CompositeControl.tsx
index aea7d69..540e70c 100644
--- a/AnyCompositeFields/AnyCompositeFIelds/components/CompositeControl.tsx
+++ b/AnyCompositeFields/AnyCompositeFIelds/components/CompositeControl.tsx
@@ -4,6 +4,8 @@ import { TextField, ITextFieldStyles } from '@fluentui/react/lib/TextField';
 import { Stack, IStackStyles } from '@fluentui/react/lib/Stack';
 import { Callout, ICalloutContentStyles, DirectionalHint } from '@fluentui/react/lib/Callout';
 import { CompositeValue } from '../EntitiesDefinition';
+import { IInputs } from '../generated/ManifestTypes';
+import { cpuUsage } from 'process';
 
 export interface ICompositeControlProps {
     disabled : boolean;
@@ -12,6 +14,7 @@ export interface ICompositeControlProps {
     doneLabel : string;
     randNumber: number;
     onClickedDone : (compositeValue? : CompositeValue) => void;
+    context?: ComponentFramework.Context<IInputs>;
 }
 
 export interface IBCompositeControlState {
@@ -53,7 +56,7 @@ export default class CompositeControl extends React.Component<ICompositeControlP
                 {this.state.showCallout && (
                     <Callout
                         target={"#acf_compositeFullValue"+this.props.randNumber}
-                        onDismiss={() => this.setState({ showCallout : false }) }
+                        onDismiss={this.onDismissCallout}
                         styles={calloutStyles}
                         directionalHint={DirectionalHint.topCenter}
                     >
@@ -61,16 +64,21 @@ export default class CompositeControl extends React.Component<ICompositeControlP
                             {elements.map((value, index) => {
                                 // @ts-ignore
                                 let element = this.state.compositeValue[value];
+                                const isMultiline = element.type === "SingleLine.TextArea" || element.type === "Multiple";
                                 
                                 return element.attributes.LogicalName != undefined && <TextField 
                                     value={element.raw!} 
                                     label={element.attributes.DisplayName}
                                     id={"acf_"+value}
                                     onChange={this.onChangeField}
+                                    onDoubleClick={this.onDoubleClick}
                                     disabled={this.state.disabled || element.disabled!}
                                     styles={textFieldStyles}
+                                    multiline={isMultiline}
+                                    autoAdjustHeight={isMultiline}
                                     required={element.attributes.RequiredLevel == 1 || element.attributes.RequiredLevel == 2}
                                     maxLength={element.attributes.MaxLength}
+                                    iconProps={{ iconName: this.getIcon(element.type) }} 
                                 />
                             })}
 
@@ -83,6 +91,12 @@ export default class CompositeControl extends React.Component<ICompositeControlP
         );
     }
 
+    private onDismissCallout = (ev?: any) : void => {
+        if(this.props.context?.client.getClient() !== "Mobile"){
+            this.setState({ showCallout : false });
+        }
+    }
+
     private onChangeField = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string | undefined) : void => {
         // @ts-ignore
         let target = event.target.id.replace('acf_', '');
@@ -99,6 +113,47 @@ export default class CompositeControl extends React.Component<ICompositeControlP
         this.props.onClickedDone(this.state.compositeValue);
     }
 
+    private onDoubleClick = (event: React.MouseEvent<HTMLInputElement | HTMLTextAreaElement, MouseEvent>) : void => {
+        // @ts-ignore
+        let target = event.target.id.replace('acf_', '');
+        const compositeValue = {...this.state}.compositeValue;
+        // @ts-ignore
+		var contextInfo = this.props.context?.mode.contextInfo;
+        // @ts-ignore
+        switch(compositeValue[target].type){
+            case "SingleLine.Phone":
+                // @ts-ignore
+                const currentValue : any = compositeValue[target].raw!;
+                this.props.context?.navigation.openUrl(`tel:${currentValue}`);
+                this.props.context?.navigation.openForm({
+                    entityName : "phonecall",
+                    createFromEntity : {
+                        // @ts-ignore
+                        id : contextInfo.entityId,
+                        // @ts-ignore
+                        entityType : contextInfo.entityTypeName,
+                        // @ts-ignore
+                        name : contextInfo.entityRecordName
+                    }
+                });
+                this.setState({showCallout : false});
+            break;
+            case "SingleLine.URL":
+                // @ts-ignore
+                const currentValue : any = compositeValue[target].raw!;
+                this.props.context?.navigation.openUrl(`${currentValue}`);
+            break;
+            case "SingleLine.Email":
+                // @ts-ignore
+                const currentValue : any = compositeValue[target].raw!;
+                this.props.context?.navigation.openUrl(`mailto:${currentValue}`);
+            break;
+            default : 
+            return;
+        }
+       
+    }
+
     private buildFullValue = (compositeValue : CompositeValue) : void => {
         let arrayValues = [];
 		
@@ -115,5 +170,23 @@ export default class CompositeControl extends React.Component<ICompositeControlP
                   
         this.setState({compositeValue : compositeValue});
     }
+
+    private getIcon = (type: string) : string => {
+        let icon = "";
+
+        switch(type){
+            case "SingleLine.Phone" :
+                icon = "Phone";
+                break;
+            case "SingleLine.URL": 
+                icon = "Globe";
+                break;
+            case "SingleLine.Email":
+                icon = "EditMail";
+                break;
+        }
+
+        return icon;
+    }
 };
 
diff --git a/AnyCompositeFields/AnyCompositeFIelds/index.ts b/AnyCompositeFields/AnyCompositeFIelds/index.ts
index 4f6c049..f733b88 100644
--- a/AnyCompositeFields/AnyCompositeFIelds/index.ts
+++ b/AnyCompositeFields/AnyCompositeFIelds/index.ts
@@ -112,6 +112,7 @@ export class AnyCompositeFIelds implements ComponentFramework.StandardControl<II
 			);
 
 			let optionsText = {
+				context : this._context,
 				compositeValue : this._compositeValue,
 				doneLabel : this._context.resources.getString("Done"),
 				disabled : this._context.mode.isControlDisabled,
diff --git a/QuickEditForm/QuickEditForm/ControlManifest.Input.xml b/QuickEditForm/QuickEditForm/ControlManifest.Input.xml
index 3e80fab..0965929 100644
--- a/QuickEditForm/QuickEditForm/ControlManifest.Input.xml
+++ b/QuickEditForm/QuickEditForm/ControlManifest.Input.xml
@@ -9,6 +9,7 @@
       <value name="true" display-name-key="True" description-key="true">true</value>
       <value name="false" display-name-key="False" description-key="false">false</value>
     </property>
+    <property name="NumberOfColumn" display-name-key="Number of columns" description-key="Ability to split the fields in several columns" of-type="Whole.None" usage="input" required="false" default-value="1"/>
     <!-- 
       Property node's of-type attribute can be of-type-group attribute. 
       Example:
diff --git a/QuickEditForm/QuickEditForm/EntitiesDefinition.ts b/QuickEditForm/QuickEditForm/EntitiesDefinition.ts
index ccb0cf1..18b6d16 100644
--- a/QuickEditForm/QuickEditForm/EntitiesDefinition.ts
+++ b/QuickEditForm/QuickEditForm/EntitiesDefinition.ts
@@ -3,6 +3,8 @@ export class EntityReferenceInfo{
 	public Id:string;
 	public Name:string;
 	public Attributes?: any;
+	public SchemaName?: string;
+	public QuickCreateEnabled?: boolean;
 }
 
 export class EntityReferenceIdName{
diff --git a/QuickEditForm/QuickEditForm/components/MessageBarControl.tsx b/QuickEditForm/QuickEditForm/components/MessageBarControl.tsx
index 251a6f3..593846a 100644
--- a/QuickEditForm/QuickEditForm/components/MessageBarControl.tsx
+++ b/QuickEditForm/QuickEditForm/components/MessageBarControl.tsx
@@ -1,11 +1,13 @@
 import * as React from 'react';
 import {MessageBar, MessageBarType } from '@fluentui/react/lib/MessageBar';
-
+import { MessageBarButton } from '@fluentui/react/lib/Button';
 
 export interface IMessageProps {
     messageType? : MessageBarType;
     messageText? : string;
     showMessageBar : boolean;
+    onClickQuickCreate: () => void;
+    showQuickCreateButton?: boolean;
   }
 
 export interface IMessageState {
@@ -34,6 +36,11 @@ export default class MessageBarControl extends React.Component<IMessageProps, IM
             <div style={{marginTop: "5px"}}>
                 {this.state.showMessageBar && 
                 <MessageBar 
+                    actions={this.state.messageType == MessageBarType.info && this.props.showQuickCreateButton ? <div>
+                        <MessageBarButton
+                        onClick={this.props.onClickQuickCreate}                >Open Quick Create Form
+                        </MessageBarButton>
+                  </div> : undefined}
                     messageBarType={this.state.messageType} 
                     isMultiline={false} 
                     dismissButtonAriaLabel="Close" 
diff --git a/QuickEditForm/QuickEditForm/components/TextFieldControl.tsx b/QuickEditForm/QuickEditForm/components/TextFieldControl.tsx
index 66b733a..51fdbb9 100644
--- a/QuickEditForm/QuickEditForm/components/TextFieldControl.tsx
+++ b/QuickEditForm/QuickEditForm/components/TextFieldControl.tsx
@@ -33,7 +33,7 @@ export default class TextFieldControl extends React.Component<ITextFieldControlP
         super(props);
         this.state = {
             fieldDefinition: this.props.fieldDefinition,
-            type: props.icon === "Money" ? "number": "text",
+            type: props.icon === "NumberField" || props.icon === "Money" ? "number": "text",
         };
     }
 
@@ -69,10 +69,15 @@ export default class TextFieldControl extends React.Component<ITextFieldControlP
     }
 
     private grabValueFromFieldDefinition = (fieldDef : DataFieldDefinition | undefined) : string => {
-        if(this.state.fieldDefinition?.fieldValue?.Name !== undefined)
-            return this.state.fieldDefinition?.fieldValue?.Name;
+        let result = "";
+        if(this.state.fieldDefinition?.fieldValue?.Name != undefined) {
+            result = this.state.fieldDefinition?.fieldValue?.Name;
+        }
+        else {
+            result =  this.state.fieldDefinition?.fieldValue;
+        }
 
-        return this.state.fieldDefinition?.fieldValue;
+        return result;
     }
 
     private onDoubleClick = (event: React.MouseEvent<HTMLInputElement | HTMLTextAreaElement, MouseEvent>) : void => {
diff --git a/QuickEditForm/QuickEditForm/index.ts b/QuickEditForm/QuickEditForm/index.ts
index fe4c134..afe8160 100644
--- a/QuickEditForm/QuickEditForm/index.ts
+++ b/QuickEditForm/QuickEditForm/index.ts
@@ -13,6 +13,7 @@ import { IDropdownOption } from "@fluentui/react/lib/Dropdown";
 import { MessageBarType } from "@fluentui/react/lib/MessageBar";
 
 import { EntityReferenceInfo, DataFieldDefinition} from "./EntitiesDefinition";
+import { unwatchFile } from "fs";
 
 
 export class QuickEditForm implements ComponentFramework.StandardControl<IInputs, IOutputs> {
@@ -37,6 +38,7 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 	private _useTextFieldAsLookup : boolean;
 	private _forceRecordId : string;
 	private _relationShips : any;
+	private _columnNumber : number;
 
 	private notifyOutputChanged: () => void;
 
@@ -87,10 +89,11 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 	public async updateView(context: ComponentFramework.Context<IInputs>)
 	{
 		// Add code to update control view
-		ReactDOM.unmountComponentAtNode(this._container); 
+		if(this._context.updatedProperties.length === 1 && this._context.updatedProperties[0] === "layout"){
+			return;
+		}
+
 		if(this._context.updatedProperties.includes("FieldToAttachControl")){
-			//if(this._forceRecordId == context.parameters.FieldToAttachControl.raw! || !this._useTextFieldAsLookup)
-			//	return;
 			if(this._useTextFieldAsLookup)
 				this._forceRecordId = context.parameters.FieldToAttachControl.raw!;
 		}
@@ -330,11 +333,48 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 	 */
 	private displayMessage(type : MessageBarType, message : string){
 	//	this._messageDiv.innerHTML = "";
-
+		let _this = this;
 		let options = {
 			messageText : message,
 			messageType : type,
-			showMessageBar: true
+			showMessageBar: true,
+			showQuickCreateButton : _this._recordToUpdate.QuickCreateEnabled,
+			onClickQuickCreate : () => {
+				this._context.navigation.openForm({
+					entityName : _this._recordToUpdate.EntityName,
+					useQuickCreateForm: true,
+					createFromEntity : {
+						// @ts-ignore
+						id : this._parentRecordDetails.Id,
+						name : this._parentRecordDetails.Name,
+						entityType : this._parentRecordDetails.EntityName
+					}
+				}).then(function success(data: any){
+					if(data.savedEntityReference.length === 0 || data.savedEntityReference.length > 1){
+						return;
+					}
+
+					let savedRecord = data.savedEntityReference[0];
+					let dataToUpdate : any = {};
+					dataToUpdate[_this._recordToUpdate.SchemaName!+"@odata.bind"] =  `/${_this.getEntityPluralName(savedRecord.entityType)}(${savedRecord.id.slice(1,-1)})`;
+					_this._context.webAPI.updateRecord(_this._parentRecordDetails.EntityName, _this._parentRecordDetails.Id, dataToUpdate).then(
+						function success(result){
+							console.log(result);
+							_this.displayMessage(MessageBarType.success, "Record successfully created, please refresh in order to see the newly created record.");
+						},
+						function (error){
+							// Error.code for privilege
+							if(error.code != undefined && error.code == 2147746336){
+								_this.displayMessage(MessageBarType.blocked, `${_this._context.resources.getString("UpdateErrorMessage")}\n\r${_this._context.resources.getString("MissingPrivilegeOnRecordMessage")}.\n\r${error.message}`);
+							} else{
+								_this.displayMessage(MessageBarType.blocked, `${_this._context.resources.getString("UpdateErrorMessage")}\n\r${error.message}`);
+							}
+							
+							_this._updateError = true;
+						}
+					);
+				});
+			}
 		};
 
 		if(this._messageComponent != undefined || this._messageComponent != null){
@@ -346,7 +386,6 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 		}
 		else {
 			this._messageComponent = ReactDOM.render(React.createElement(MessageBarControl, options), this._messageDiv);
-			//console.log("displayMessage : Rendering message ");
 		}
 	}
 
@@ -368,11 +407,13 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 
 		this._lookupFieldDetails = lookupDetails;
 
+		// Creating the new instance here
+		_this._recordToUpdate = new EntityReferenceInfo();
+
 		if(lookup != undefined ){
 			let id = this._lookupFieldDetails[_this._lookupMapped] ?? "";
 			let entity = this._lookupFieldDetails[_this._lookupMapped+"@Microsoft.Dynamics.CRM.lookuplogicalname"] ?? "";
 
-			_this._recordToUpdate = new EntityReferenceInfo();
 			_this._recordToUpdate.EntityName = entity;
 			_this._recordToUpdate.Id = (_this._useTextFieldAsLookup &&  _this._forceRecordId != undefined && _this._forceRecordId != null) ?  _this._forceRecordId : id;
 			_this._recordToUpdate.Name = "lookup name here";
@@ -381,12 +422,28 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 			let attr = await _this._context.webAPI.retrieveRecord(_this._recordToUpdate.EntityName, _this._recordToUpdate.Id);
 			_this.isRecordReadOnly(attr["statecode"]);
 			_this._parentRecordDetails.Attributes = attr;
-			//console.log("[getLookupDetails] _this._parentRecordDetails.Attributes : record values retrieved ");
 		}
+		// We display a message and get property for potential quick create button
 		else {
-			this.displayMessage(MessageBarType.info, _this._context.resources.getString("LookupFieldHasNoValue").replace("{0}", this._context.parameters.LookupFieldMapped.raw!));
-			this._renderingInProgress = false;
-			this.showLoading(false);
+			// Grabbing necessary info for quick create possibility
+			let lookupCleaned = this._lookupMapped.replace("_value","").replace("_","");
+			let lookupField : string[] = [];
+			lookupField.push(lookupCleaned);
+			this._context.utils.getEntityMetadata(this._parentRecordDetails.EntityName, lookupField ).then(em => {
+				let relationships = em.ManyToOneRelationships.getAll();
+				let relationshipDetails = relationships.filter(function(relation : any){
+					return relation._referencingAttribute === lookupCleaned;
+				})[0];
+
+				this._recordToUpdate.SchemaName = relationshipDetails?.ReferencingEntityNavigationPropertyName;
+				this._recordToUpdate.EntityName = relationshipDetails?.ReferencedEntity;
+				this._recordToUpdate.QuickCreateEnabled = em.IsQuickCreateEnabled as boolean;	
+				
+				// displaying message to warn user that lookup is empty
+				this.displayMessage(MessageBarType.info, _this._context.resources.getString("LookupFieldHasNoValue").replace("{0}", this._context.parameters.LookupFieldMapped.raw!));
+				this._renderingInProgress = false;
+				this.showLoading(false);
+			});
 		}
 	}
 
@@ -407,6 +464,9 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 
 		this._lookupMapped = this._context.parameters.LookupFieldMapped.raw!;
 
+		// Since it's a new parameter, it can be undefined.
+		this._columnNumber = this._context.parameters.NumberOfColumn === undefined ? 1 : this._context.parameters.NumberOfColumn?.raw!;
+
 		this._useTextFieldAsLookup = (this._context.parameters.UseTextFieldAsLookup && this._context.parameters.UseTextFieldAsLookup.raw && this._context.parameters.UseTextFieldAsLookup.raw.toLowerCase() === "true") ? true : false;
 
 		this._clientUrl = (<any>this._context).page.getClientUrl();
@@ -489,7 +549,7 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 		catch (e){
 			this._renderingInProgress = false;
 			this.showLoading(false);
-			this.displayMessage(MessageBarType.error, `An error occured ${e.mesage}`);
+			this.displayMessage(MessageBarType.error, `An error occured : ${e}`);
 		}
 		
 	}
@@ -531,7 +591,7 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 		//console.log("[processFormXmlData] : processing fields from formxml ");
 		// Building the result details
 		var sections = $.parseXML(formxml).getElementsByTagName("section");
-		var i, j;
+		var i, j, k;
 		for(i = 0; i < sections.length; i++){
 			var section = sections[i].outerHTML;
 			
@@ -541,6 +601,7 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 				continue;
 			}
 
+			// We prepare the section block
 			// @ts-ignore
 			if($.parseXML(section).getElementsByTagName("section")[0].attributes.showlabel.value == "true"){
 				// @ts-ignore
@@ -555,32 +616,53 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 				
 				this._formDiv.appendChild(sectionh1);
 			}
+			
+			const divWidth = Math.ceil(100 / this._columnNumber); 
 
-			// a row = a field
-			var rows = $.parseXML(section).getElementsByTagName("row");
-			for(j = 0; j < rows.length; j++)
-			{
-				let row = rows[j].outerHTML;
-				// @ts-ignore
-				if($.parseXML(row).getElementsByTagName("control").length == 0 || $.parseXML(row).getElementsByTagName("label").length == 0 || $.parseXML(row).getElementsByTagName("control")[0].attributes.datafieldname == undefined || $.parseXML(row).getElementsByTagName("label")[0].attributes.description == undefined){
-					continue;
-				}
-
-				// @ts-ignore
-				var rowTechName =  $.parseXML(row).getElementsByTagName("control")[0].attributes.datafieldname.value;
+			// Creating the parent div handling column management
+			var divflex = document.createElement("div");
+			divflex.style.display = "flex";
+			this._formDiv.appendChild(divflex);
 
-				// Checking if in the attributes metadata we find the current field
-				let fieldDetail = attributesDetail.filter(function(a: any){
-					return a._logicalName == rowTechName}
-				);
+			for(k = 0; k < this._columnNumber; k++){
 				
-				if(fieldDetail.length == 1)
+				var subColumnDiv = document.createElement("div");
+				subColumnDiv.style.width = divWidth+"%";
+				subColumnDiv.style.marginRight = "5px";
+				divflex.appendChild(subColumnDiv);
+
+				// a row = a field
+				var rows = $.parseXML(section).getElementsByTagName("row");
+				let numberOfRowPerColumn = Math.ceil(rows.length / this._columnNumber);
+				let nextColumnCount = numberOfRowPerColumn * (k+1) > rows.length ? rows.length : numberOfRowPerColumn * (k+1);
+
+				for(j = numberOfRowPerColumn * k; j < nextColumnCount; j++)
 				{
-					fieldDetail = fieldDetail[0];
-				}
+					console.log("K : "+k+" - J:"+j);
+					let row = rows[j].outerHTML;
+					// @ts-ignore
+					if($.parseXML(row).getElementsByTagName("control").length == 0 || $.parseXML(row).getElementsByTagName("label").length == 0 || $.parseXML(row).getElementsByTagName("control")[0].attributes.datafieldname == undefined || $.parseXML(row).getElementsByTagName("label")[0].attributes.description == undefined){
+						continue;
+					}
 
-				// Generating the fields rendering
-				this.retrieveFieldOptions(fieldDetail);	
+					// @ts-ignore
+					var rowTechName =  $.parseXML(row).getElementsByTagName("control")[0].attributes.datafieldname.value;
+					// @ts-ignore
+					let isReadOnly =  $.parseXML(row).getElementsByTagName("control")[0].attributes.disabled.value === "true";
+
+					// Checking if in the attributes metadata we find the current field
+					let fieldDetail = attributesDetail.filter(function(a: any){
+						return a._logicalName == rowTechName}
+					);
+					
+					if(fieldDetail.length == 1)
+					{
+						fieldDetail = fieldDetail[0];
+					}
+
+					// Generating the fields rendering
+					this.retrieveFieldOptions(fieldDetail, isReadOnly, subColumnDiv);	
+				}
 			}
 		}
 	}
@@ -589,7 +671,7 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 	 * Render the fields based on the metatada
 	 * @param fieldDetail field metadata
 	 */
-	private retrieveFieldOptions(fieldDetail: any){
+	private retrieveFieldOptions(fieldDetail: any, fieldReadOnly : boolean, divflex : HTMLDivElement){
 		let _this = this;
 		let item = document.createElement("div");
 		var techFieldName = fieldDetail.attributeDescriptor.LogicalName;
@@ -597,7 +679,7 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 		var type = fieldDetail.attributeDescriptor.Type;
 		var label = fieldDetail.DisplayName;
 
-		let isReadOnly = !fieldDetail.attributeDescriptor.IsValidForUpdate || this._isRecordReadOnly;
+		let isReadOnly = !fieldDetail.attributeDescriptor.IsValidForUpdate || this._isRecordReadOnly || fieldReadOnly;
 		let isRequired = fieldDetail.attributeDescriptor.RequiredLevel == 1 || fieldDetail.attributeDescriptor.RequiredLevel == 2;
 
 		// Grabing the proper datafieldDefinition
@@ -619,7 +701,7 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 						width : this._context.mode.allocatedWidth,
 						label : label,
 						fieldDefinition : {
-							fieldSchemaName: schemaName.length == 1 ? schemaName[0]._referencingEntityNavigationPropertyName : null,
+							fieldSchemaName: schemaName.length == 1 ? schemaName[0].ReferencingEntityNavigationPropertyName : null,
 							isRequired : isRequired,
 							isDirty : false,
 							fieldName : techFieldName,
@@ -709,6 +791,9 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 				ReactDOM.render(React.createElement(FilteredOptionsetControl, ddOptions), item);
 				break;
 			case 'money':
+			case 'decimal':
+			case 'double':
+			case 'integer':
 					let moneyOptions = {
 						width : this._context.mode.allocatedWidth,
 						label : label,
@@ -721,7 +806,7 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 							fieldValue : this._parentRecordDetails.Attributes[techFieldName] ?? ""
 						},
 						disabled : isReadOnly,
-						icon : "Money",
+						icon : type === "money" ? "Money" : "NumberField",
 						onClickResult : (fieldDefinition?: DataFieldDefinition) => {
 							if(dataFieldDefinitionsDetails != undefined && fieldDefinition != undefined){
 								dataFieldDefinitionsDetails.isDirty = true;
@@ -733,7 +818,6 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 							}							
 						}
 					};
-
 					dataFieldDefinitionsDetails = this.completeDataDefinition(dataFieldDefinitionsDetails, moneyOptions.fieldDefinition);
 
 					ReactDOM.render(React.createElement(TextFieldControl, moneyOptions), item);
@@ -794,7 +878,7 @@ export class QuickEditForm implements ComponentFramework.StandardControl<IInputs
 				break;
 		}
 
-		this._formDiv.appendChild(item);
+		divflex.appendChild(item);
 	}
 
 	/**