Case search, results, and details
Configure how people find, compare, and open cases in the Nova builder.
The case workspace controls how people find a case, compare the results, and understand the case they open. It is split into three focused tabs so you can work on one part of that experience at a time.
Design the journey directly
| Tab | What you configure |
|---|---|
| Search | The action people use to continue, plus any questions they can answer to narrow the cases themselves. |
| Results | Which cases are available, the information people scan, and which cases appear first. |
| Details | The information people see after opening a case. |
Each tab is a picture of that part of the app, not a list of technical settings. Add information in the canvas, drag it into place, and select a row when you want to change its properties.
The tab strip stays in place while you work. Only the active tab's body scrolls, and each tab remembers where you were when you switch away and back.
Arrange information in the canvas
Choose Add search field, then select the case information people should be able to search. Nova puts Case name first as a useful suggestion, but does not choose a property for you. The new field gets a suitable field type and match behavior after you make that choice. Search fields can then be dragged into the order people should answer them. Results and Details use the same direct arrangement: the row you move is the row the person using the app will see in that position. You can also focus a drag handle and use the arrow, Home, or End keys.
Results and Details have separate arrangements. Moving an item in Results does not move it in Details, so each screen can follow the reading order that makes sense there.
The normal canvas stays focused on what people will see. Add information always asks what you want to show; it never picks a case property for you. If the same information was already set up for another screen, choosing it keeps that label and formatting. Previously configured information stays mixed into the same familiar groups instead of becoming a prominent “hidden fields” concept. Less-common choices sit quietly at the bottom: Calculated value for information derived from other values, and Show information another way when the same property needs a second label or format.
Select a Results or Details row, then use Hide from Results or Hide from Details at the bottom of its properties when you only want it off that screen. Hiding is reversible. Delete information removes that display setup from both screens and Default order, if used, but never deletes the case property or saved case data. Results must keep at least one item so people can recognize and choose a case. Search fields can be removed from the bottom of their own properties. Removing the final field removes the questions people can answer, but an intentionally configured Search action can remain.
If another rule uses that field's answer, Nova does not silently rewrite or discard the rule. The removal dialog groups every place the answer is used and opens the exact spot, a condition in Results, another search field's condition or starting value, a calculated column's formula, Assigned cases, or the Search button's display condition. After each update, return to the field to see the remaining uses. Once none remain, the dialog closes and Remove search field is ready for you again.
Show a link to a file
Link turns a property that holds an address into something a person can open, labelled with wording you choose rather than the address itself. Its usual companion is an attachment question saving to a case, which stores a link to the file it captured (see Attachment questions).
Two things about it are worth knowing before you add one.
The wording is the same in every language. CommCare renders a link cell through its markdown renderer, and that kind of cell has nowhere to carry a translated label, so one phrase serves every app language. Pick something that reads plainly wherever the app is used.
It is a link in CommCare Web Apps only. The CommCare Android app shows the cell as plain text, so a worker there sees the address written out instead of a tappable word. If your workers use the Android app, that is the trade: they still see that something is there, and they can still read the address, but they cannot tap it.
Lay results out as a tile
A result is normally one row: each piece of information gets a column, and the columns run left to right. A tile is the other way to lay Results out. The result becomes a card, and each piece of information takes a rectangle on a 12 × 12 grid, a name across the top, a status in the corner, a date underneath.
Reach for a tile when the row runs out of room or stops reading well: when a name deserves to be larger than everything beside it, when two short values belong together on one line, or when people are scanning for a shape rather than reading across. Keep the row of columns when every piece of information is short and people compare the same value down the list, a row is easier to scan that way, and it needs no arranging.
Turning the tile on and placing the information happen together. Every piece of information shown in Results needs a place on the grid, so give each item a place or hide it from Results first.
Hiding still works the way it does for a row of columns. An item hidden from Results needs no place on the tile, and Default order can still sort by a hidden item: the list carries the value without showing it.
Give an item a place by choosing where it starts and how far it reaches, the column and row it begins at, and how many columns and rows it spans. Two items may never cover the same square. Because of that, a swap is a single rearrangement, not two moves: the halfway state where both items sit on one square is not a layout Nova will keep.
Each placed item can also carry how it looks: where its text sits inside its own rectangle, its text size, and whether it gets a border or shading. Two of those behave in ways worth knowing up front:
- Border and shading are tile-wide. Turning either on for a single item puts the whole tile into a boxed layout, which changes the spacing of every other item on the tile, not just the one you set. Decide them for the tile, not for one piece of information.
- Text size is inherited when you leave it alone. An item with no size set reads at the same size as the rest of the list. There is no default size Nova fills in, so set a size only where an item should stand out or recede.
The tile is the layout for Results everywhere Results appear, so the list people search into looks the same as the list they browse. You can also ask for the tile to stay on screen above every form in the module, so the person filling in a form can always see which case they are working on. Details keeps its own arrangement either way.
Going back to a row of columns keeps every placement. Nothing you arranged is lost, so you can try a tile, switch back, and switch to it again without redrawing the layout.
Group cases under a connected case
A tile can also group its cases. Cases that are connected to the same case appear together, under one heading: the visits of a household under that household, the deliveries on a route under that route.
You choose two things. The connection to group by, which is the saved name
of the link between the two case types, almost always parent. And how many of
the tile's top rows form the heading. Those top rows are drawn once for the
whole group, from the first case in it; the rows below them are drawn for every
case. Nova offers only the depths that cut the tile cleanly, with something
above the line, something below it, and no piece of information crossing it.
Three things to know before you turn it on:
- Choosing a group uses its first case. With Several cases, each group has one checkbox and adds its first case. The other rows are there to read, not to choose. If people need to choose every case separately, keep the ungrouped tile.
- Cases with no such connection all appear in one group. That is what a device does with them, so Nova shows the same thing. The grouping settings tell you how many of your cases that is right now.
- Pages count groups, not cases. A page holds whole groups, so a page can be long when the groups are large.
Grouping is a Web Apps capability. CommCare on Android reads the setting and ignores it, so a grouped list there is an ordinary tile list, one tile per case.
Grouping is part of the tile, so turning the tile off turns grouping off with it.
Let people work with several cases at once
Open Case selection in Results and choose Several cases when one form should apply the same work to more than one case. Set Most cases a worker can choose to the largest safe batch for that workflow, from 1 to 100. Keeping One case gives the usual Results → Details → form journey.
Nova shows the complete effect before changing the setting. If a form opens a linked workflow directly, that workflow's Case selection may need to change in the same save so the complete selection can continue. Nova names every linked module and its new limit first. It also names any Results tile that will stop staying above forms, plus any starting value or calculation that can save an answer without someone entering it. If a form condition, case action, shared case read, or after-submit link needs an author's decision instead, nothing changes and the review opens the exact form item to repair.
When Several cases is on, Results uses a checkbox for each row or tile and keeps Details as a separate action. The selection bar shows the total and lets the worker review the complete set before choosing Continue. The choices stay in their original order while the worker searches, changes pages, opens Details, or goes Back. A changed maximum never removes a choice silently. Continue waits and states how many cases need to be removed.
Use several-case selection only when a follow-up or close form can run over the complete set. That form can belong to the module itself. A case-list-only parent can also carry the set into a child that uses the same case type, also chooses Several cases, allows at least the parent's maximum, and has the form. The form submits once. A question that saves to the selected case starts blank instead of borrowing a value from one case. Each answer someone enters is saved to every selected case, while leaving it blank preserves each case's existing value. A configured starting value or calculation is also saved to every selected case when it produces an answer. An attachment answer is saved when the submitted form provides a file. A destination configured to keep the file stores that attachment on every selected case; a destination configured to keep a link stores the published file link instead. Preview does not create either, so trying the form there leaves every selected case's attachment destination unchanged. Explicit case changes run for every selected case too, and any failure leaves every case unchanged.
When a child uses a related case type, Results combines the direct children of every selected parent before the worker makes the child's own selection.
A tile can still group cases, but it cannot stay pinned above a several-case form: that banner has room for one current case, not a batch. When several-case selection is enabled, Nova turns off Keep tile visible in forms and explains the change before saving it.
Choose which cases people can find
Search owns the action people use to continue and any Search fields they can fill in themselves. Select a field to change it, or choose Edit Search screen for the screen copy. The action can exist without any fields: when Cases available already narrows the list, Results can open automatically; without that rule, the input-free Search action remains a real button on the case list. Removing the final field does not discard an authored action label or availability condition. Those less-common action settings remain under More settings.
A search field's starting value and the Search action's availability condition are decided before anyone has picked a case, so they work with fixed values and current-user information. Case information belongs in the field's own match behavior or in Cases available, which run against each case.
Results owns Cases available, the rules that always decide which cases can appear before anyone searches. The conditions are listed and edited together in the canvas, above Default order. Choose Add condition for another rule, then decide whether all conditions must match or any condition can match. You can group conditions, exclude matches, use a search answer only when it has been filled in, follow connections to related cases, and combine those ideas at any depth. Opening a group gives it the full canvas; Back and the location trail return you to the surrounding rule. Nova keeps the exact structure you authored instead of flattening it into a simpler filter.
To intentionally make one condition include everything or nothing, open that condition's matching menu and look under Special conditions for Always match or Never match. These whole-condition choices stay out of Add condition, so the common path still begins with a useful comparison.
You can remove or rearrange conditions independently. Removing the complete rule confirms that cases it excluded can appear in Results. This keeps simple rules quick to scan without preventing the complex rules an established CommCare app may need. If a condition needs attention, Results and that condition show the finding where it can be fixed.
The always-on rule and a search field may use the same property. Nova combines them: leaving the field empty keeps the always-on rule, a compatible value narrows the cases further, and a value that disagrees can legitimately return no matches.
When a calculated Results or Details item shows one parent property by itself, Search brings that property along automatically. The same applies when the property controls Default order. The parent stays out of the choices and does not open with the selected case's form. Preview reads the current shared case data directly, so there is nothing else to configure.
When Search reaches cases that are not already available in the app, the destination project space needs Case search support. Nova checks for that support before a direct publish and sends nothing if it is missing or cannot be confirmed. Downloads stay available so you can choose and check the destination later. See Project-space compatibility.
Nova also includes faster handling for large Search results automatically when the project space supports it. That performance check never blocks publishing. It does not add a second copy of the case data or a refresh step. Preview keeps reading the current shared cases, and Nova adds no data-refresh setting to manage.
For dates, Exact value means the complete selected calendar day, including datetime values later that day. Choose Between dates when people should enter both a start and an end; Nova changes the field to one paired Date range control automatically. Date ranges do not offer a one-date starting value, because that would leave the other end undefined.
Under Cases available, open More availability settings to decide what happens to Cases assigned to the person using the app. Choose Show in Results for the usual experience, or Hide from Results when people should not see work already assigned to themselves. If an imported app has a different assignment rule, Nova keeps it unchanged and explains that some cases may be hidden. A saved rule that tries to read a case before one has been selected is marked for replacement. Replacing a saved rule with either simple choice requires confirmation, because the imported rule cannot be recovered from the builder afterward. This is a Results-availability setting, not a Search action: it applies whether people browse Results directly or arrive through Search, and it never adds a Search action by itself.
Choose which cases appear first
Results keeps Default order directly below Cases available and beside the information it affects. Choose Set order the first time, or Change order once it is configured, to expand the editor in the canvas. Then add the information to sort by, choose a friendly direction such as A to Z or newest first, and drag the rules into priority order. The first rule decides first; when two cases match, the next rule breaks the tie.
This is separate from arranging information inside a result. One controls the order of cases; the other controls how each case is presented.
Use the sidebar for properties
Select a search field, result item, or detail item to edit its data source, label, matching behavior, or formatting in the right sidebar. Screen options that do not have a visible row also live there. Less-common settings stay behind More settings. Arrangement does not: screen membership, row order, and the Cases available and Default order sections each have one home in the center canvas. When a search field needs a custom matching condition, or the Search button needs a display condition, the sidebar shows its summary and opens the same full condition editor in the center. The condition is never duplicated in both places.
For a case-list-only module, use the settings button beside the module name for appearance. App home tile controls how the module looks on the app's main menu; Case list link controls the distinct link that opens the list. Those two values stay separate, and Results does not offer a second copy of either setting.
Property menus use the labels people recognize and offer each built-in value
once. For example, Case name and External ID appear as single choices even
though older CommCare wire formats have alternate spellings for them.
Case status is the built-in open-or-closed lifecycle value. A separate
current_status property appears only when the app has intentionally created
one; Nova does not treat it as a second spelling of Case status.
Changing a search field's internal name keeps rules that use its answer connected to that field. You do not need to find and rename those references yourself.
Manage the data used for testing
Use Case data in the builder's breadcrumb bar to see the complete, unfiltered number of cases for the module's case type. That population is shared across the app, so every module that uses the same case type sees the same cases in Preview. When there are none, you can choose Add sample cases to create a realistic set. When cases already exist, choose Replace case data and review the case-type-qualified confirmation before deleting anything. That confirmation is important: replacement includes cases entered by hand or through Preview, not only generated examples. If another case type contains cases linked to the replaced cases, Nova preserves those cases and clears the links whose old targets no longer exist. It never silently deletes the linked case or assigns it to an unrelated new sample case.
Sample cases include readable names and unique external IDs, so the complete Search → Results → Details journey is useful as soon as you enter Preview.
Case-data controls stay outside Preview. Preview contains only the app a frontline user will run, so every button there behaves like a real app button.
Review data after a property change
When a case property changes type, for example, a free-text date of birth becomes a real date field, Nova converts every saved case value it can. A value that doesn't fit the new type is kept instead of deleted, and its case is held out of the app: it leaves case lists, search, and forms until you've decided its waiting values on the Data to review screen. Holding the whole case keeps the app honest: no form opens onto a silently blank required field, and no calculation runs over a hole.
Conversions that could set values aside ask first. Before a risky conversion, one where some saved values may not fit the new type, Nova checks the saved data and shows what would happen: how many values can't convert, what they look like, and how many cases would be held. Nothing changes until you confirm, and a conversion with nothing at stake proceeds without the question. The same check applies when the assistant converts a property in chat, it relays the impact and waits for your go-ahead. A type change that happens without a convert action, say, pointing a number field at a property that used to hold dates, skips the question, but the same safety net catches it: the values that don't fit are kept, their cases are held, and the notice points you at Data to review.
You'll see a notice the moment it happens, and the Case data button carries a dot while any cases are held. Open Case data and choose Review data to see them, one card per case. Each value states in a few words why it's waiting, "Isn't a date", "The property was removed", checked against the property as it is right now. View case on any card opens everything the case currently holds, so you can decide with the whole record in front of you. Everyone in the Project sees the same list, so a teammate's conversion is just as visible as your own.
For each value you can:
- Put it back: saves the value on its case again. Offered when the value fits the property's current type.
- Overwrite it, enter a new value in the property's current type, saved straight to the case. The original moves to the Dismissed list.
- Dismiss it, move it to the Dismissed list, where it stays readable and can be moved back at any time.
Once a case has nothing left waiting, it returns to the app on its own. You don't have to resolve values one by one either: if the property's type changes back, waiting values that fit again return automatically.
Preview without starting over
Edit mode stays focused on the screen's structure, labels, and reading order; it does not place one arbitrary case value beside every field. To inspect real data and try the complete experience, use Preview in the builder header. Preview runs the configured journey against the same case data. When Search is configured, it appears before Results and Details. Entering a search leaves the current results in place until you choose the screen's Search button, matching the app people will ultimately use. A one-case row opens that case. In a several-case workflow, its checkbox adds or removes the case and Details opens it without changing the selection. Other actions inside the row, such as calling a phone number or checking why a value is shown, work independently. The Results filter matches the same text people see, including formatted dates, calculated answers, and choice labels. If an older case contains a choice value that is no longer in the app, Nova leaves that saved value visible instead of hiding the data. Large result sets appear 50 cases at a time with Previous and Next. When paging is active, the quick filter is labeled Filter this page and explains its scope, so an empty page filter never claims that no matching case exists elsewhere.
Nova keeps the running preview in its flipbook. Switch back to edit a setting, with Back to edit, then return to Preview and continue where you left off instead of restarting the app and retracing every step.
Working with the sidebars
The workspace is designed to remain readable with both sidebars open. Use the left sidebar to keep your place in the app and the right sidebar for chat or the settings of the selected item. On narrower desktop windows, both open sidebars compact to preserve useful canvas space. On short windows, selecting an item gives its properties priority and condenses chat to a return bar. You can collapse either sidebar when you want more room; the canvas reflows without moving a setting to a different place. Scrolling stays inside the active tab's body, so the Search / Results / Details strip remains available even on a short window.