# A multi step runtime form with actions ``` prototype(Vendor.Site:Content.MultiStepFormExample) < prototype(Neos.Fusion.Form:Runtime.RuntimeForm) { namespace = "multi_step_form_example" data = Neos.Fusion:DataStructure { firstName = "foo" street = "bar" } process = Neos.Fusion.Form:Runtime.MultiStepProcess { steps { first { content = afx` ` schema { firstName = ${Form.Schema.string().isRequired()} lastName = ${Form.Schema.string().isRequired().validator('StringLength', {minimum: 6, maximum: 12})} } } second { content = afx` ` schema { street = ${Form.Schema.string().isRequired()} city = ${Form.Schema.string().isRequired()} } } third { content = afx` ` schema { sports = ${Form.Schema.arrayOf( Form.Schema.string() ).validator('Count', {minimum: 1, maximum: 2})} file = ${Form.Schema.resource().isRequired().validator('Neos\Fusion\Form\Runtime\Validation\Validator\FileTypeValidator', {allowedExtensions:['txt', 'jpg']})} } } confirmation { content = afx`

Confirm to submit {data.firstName} {first.data.lastName} from {data.city}, {data.street}

` } } } action { message { type = 'Neos.Fusion.Form.Runtime:Message' options.message = afx`

Thank you {data.firstName} {data.lastName} from {data.city}, {data.street}

` } email { type = 'Neos.Fusion.Form.Runtime:Email' options { senderAddress = ${q(node).property('mailFrom')} recipientAddress = ${q(node).property('mailTo')} subject = ${q(node).property('mailSubject')} text = afx`Thank you {data.firstName} {data.lastName} from {data.city}, {data.street}` html = afx`

Thank you {data.firstName} {data.lastName}

from {data.city}, {data.street}

` attachments { upload = ${data.file} resource = "resource://Form.Test/Private/Fusion/Test.translation.csv" jsonFile { content = ${Json.stringify(data)} name = 'data.json' } } } } log { type = 'Neos.Fusion.Form.Runtime:Log' options { logger = 'systemLogger' level = 'info' message = 'Form was submitted' context = ${data} } } redirect { type = 'Neos.Fusion.Form.Runtime:Redirect' options.uri = Neos.Neos:NodeUri { node = ${q(node).property('thankyou')} } } } } ```