What are CMS forms?
The forms we’re talking about here are the legacy version of the CMS forms referring to a system that allows webdevs to set up an html form that will submit data to the CMS application for storage and later retrieval in the FORMS section in the CMS editor (/a/cms/<institution short id>/forms/all). This is different from the newer Form Builder system that grants users the ability to create their own forms and embed them in content.
Front End
Built and maintained by the webdevs into a page in a CMS site.
Back End
Scala project banno-cms-forms. Contains the data models for the form entries and also an html template used to render the form entry for the form manager and pdf exports. Actual exposed endpoints reside in the banno-cms FormApi.
Storage
Entries are stored in the site’s Mongo database in the formEntriesSecure collection. Form field data is encrypted in the database but form entry meta data is not. If the form accepts uploaded files they are stored in formEntriesSecure.files and formEntriesSecure.chunks with the former containing file metadata and the latter containing the file data. Form models can be found in the formList collection.
Workflow
We use JIRA to manage work requests. The board can be found here. The flow works pretty much from left to right through the columns as the issue progresses up to production. This lets anyone get an idea where the issue is at any given time. Incoming -> Blocked -> In Progress -> Needs Merge -> Merged -> On UAT -> On Production
Cards can be moved backwards through the flow if alterations are needed.
Form Builder
Detailed information about how to build or edit forms can be found here.
Build Process
To prep for a new forms release do the following:
- Make sure all desired pull requests are merged in.
- Wait for Jenkins to build a new release. It will do so automatically after the pull requests are merged by building a snapshot and then a release. (Wait for this job to complete)
- Once you have a new forms release you can update the forms version in banno-cms make a pull request with the changes.
- Once the pull request is approved follow the CMS deployment steps here.
Who can help?
If you have questions or run into problems with something drop a message in #team-curry or #org-curry if you’re not in the team.