Yes it is possible please refer to the below screenshots and code.

a!localVariables(
local!xyz:'type!{urn:com:appian:types}AA_Vehicle'(),
a!formLayout(
contents: {
a!forEach(
items: local!xyz,
expression: {
a!cardLayout(
contents: a!columnsLayout(
columns: {
a!columnLayout(
contents: {
a!sectionLayout(
label: "Vehicle Information",
labelSize: "SMALL",
contents: {},
divider: "NONE"
),
a!sideBySideLayout(
items: {
a!sideBySideItem(
item: a!textField(
label: "Make",
labelPosition: "ABOVE",
value: fv!item.vehicleMake,
saveInto: fv!item.vehicleMake,
required: true,
validations: if(
len(fv!item.vehicleMake) > 255,
"Value may not be longer than 255 characters. You have entered " & len(fv!item.vehicleMake) & " characters.",
null
)
)
),
a!sideBySideItem(
item: a!textField(
label: "Model",
labelPosition: "ABOVE",
value: fv!item.vehicleModel,
saveInto: fv!item.vehicleModel,
required: true,
validations: if(
len(fv!item.vehicleModel) > 255,
"Value may not be longer than 255 characters. You have entered " & len(fv!item.vehicleModel) & " characters.",
null
)
)
),
a!sideBySideItem(
item: a!integerField(
label: "Year",
labelPosition: "ABOVE",
value: fv!item.vehicleYear,
saveInto: fv!item.vehicleYear,
required: true
)
)
}
),
a!sideBySideLayout(
items: {
a!sideBySideItem(
item: a!textField(
label: "VIN",
labelPosition: "ABOVE",
value: fv!item.vehicleVIN,
saveInto: fv!item.vehicleVIN,
required: true,
validations: if(
len(fv!item.vehicleVIN) > 17,
"Value may not be longer than 17 characters. You have entered " & len(fv!item.vehicleVIN) & " characters.",
null
)
),
width: "2X"
),
a!sideBySideItem(
item: a!integerField(
label: "Mileage",
labelPosition: "ABOVE",
value: fv!item.vehicleMileage,
saveInto: fv!item.vehicleMileage,
required: true
)
),
a!sideBySideItem(
item: a!textField(
label: "Color",
labelPosition: "ABOVE",
value: fv!item.vehicleColor,
saveInto: fv!item.vehicleColor,
required: true,
validations: if(
len(fv!item.vehicleColor) > 255,
"Value may not be longer than 255 characters. You have entered " & len(fv!item.vehicleColor) & " characters.",
null
)
)
)
}
),
a!dropdownField(
label: "Category",
labelPosition: "ABOVE",
placeholder: "--- Select category ---",
choiceLabels: {"abc"},
choiceValues: {"abc"},
value: fv!item.vehicleCategory,
saveInto: fv!item.vehicleCategory,
required: true,
validations: {}
),
}
),
a!columnLayout(
contents: {
a!sectionLayout(
label: "Maintenance History",
labelSize: "SMALL",
contents: {},
divider: "NONE"
),
a!sideBySideLayout(
items: {
a!sideBySideItem(
item: a!dateField(
label: "Last Maintenance",
labelPosition: "ABOVE",
value: fv!item.vehicleLastMaintenanceDate,
saveInto: fv!item.vehicleLastMaintenanceDate,
required: true,
validations: if(
fv!item.vehicleLastMaintenanceDate > today(),
"Enter a date before today",
""
)
)
),
a!sideBySideItem(
item: a!dateField(
label: "Next Maintenance",
labelPosition: "ABOVE",
value: if(
or(
isnull(fv!item.vehicleLastMaintenanceDate),
isnull(fv!item.vehicleCategory)
),
"",
caladddays(
fv!item.vehicleLastMaintenanceDate,
rule!AA_DetermineMaintenanceDate(
vehicleCategory: fv!item.vehicleCategory
)
)
),
saveInto: fv!item.vehicleNextMaintenanceDate,
showWhen: not(isnull(fv!item.vehicleID)),
required: false,
readonly: true
)
)
}
),
a!sideBySideLayout(
items: {
a!sideBySideItem(
item: a!dateField(
label: "Added On",
labelPosition: "ABOVE",
value: fv!item.vehicleDateAdded,
showwhen: not(isnull(fv!item.vehicleDateAdded)),
required: false,
readonly: true,
align: "LEFT"
)
),
a!sideBySideItem(
item: a!textField(
label: "Added By",
labelPosition: "ABOVE",
value: rule!AA_displayUser(fv!item.vehicleAddedBy),
showwhen: not(isnull(fv!item.vehicleAddedBy)),
required: false,
readonly: true
)
)
}
),
a!fileUploadField(
label: "Image",
labelPosition: "ABOVE",
helptooltip: "Upload images in PNG or JPG formats",
target: cons!AA_DOCUMENTS_FOLDER_POINTER,
maxselections: 1,
value: fv!item.vehicleImage,
saveInto: fv!item.vehicleImage,
validations: a!localVariables(
local!invalidExtensions: difference(
upper(fv!files.extension),
{ "PNG", "JPG" }
),
if(
length(local!invalidExtensions) > 0,
"Attachments must be images. Remove: " & index(
fv!files,
"name",
wherecontains(
local!invalidExtensions,
upper(fv!files.extension)
),
{}
),
""
)
)
),
a!imageField(
label: "",
labelPosition: "COLLAPSED",
images: if(
isnull(fv!item.vehicleImage),
null,
{
a!documentImage(document: fv!item.vehicleImage)
}
),
showwhen: not(isnull(fv!item.vehicleImage)),
size: "MEDIUM",
isThumbnail: false,
style: "STANDARD",
accessibilitytext: "Photo of vehicle"
)
}
)
}
)
),
a!sectionLayout(),
}
),
a!richTextDisplayField(
value: a!richTextItem(
text: "add New",
link: a!dynamicLink(
saveInto: a!save(
local!xyz,
append(
local!xyz,
'type!{urn:com:appian:types}AA_Vehicle'()
)
)
)
)
)
}
)
)