Skip to content
Browse model-driven app tutorials

A calendar on a main form lets users inspect scheduled tasks while working on a record. Give it its own tab, choose the task view, and map the columns that provide the dates and caption. This example uses the custom Task Tracker table, shown as Task Trackers in the calendar’s table picker.

Before you begin

Have these resources available:

  • A model-driven app backed by Dataverse, in an environment where you can customize the target table. Use a System Customizer or System Administrator role for the calendar customization. Microsoft: Calendar control
  • An active, editable Main form for that table and access to the solution containing it. Tabs are supported on main forms. Microsoft: Form tabs
  • A suitable public view, such as All Tasks, and saved sample rows with populated titles and valid date ranges. Use a sample whose end date is later than its start date for this walkthrough.
  • Columns corresponding to Start Date, Due Date, and a normal Text title. The example uses Date Only dates and Task Title (Text). Keep longer task details in their existing column.
  • App users with Power Apps premium use rights for the model-driven app, environment membership, and Dataverse read access to the task records. Adding a calendar does not grant record access. App access and licensing, model-driven app licensing, Dataverse privileges

The Calendar tab and component are created below. A Priority Choice column is optional; it is not required to display tasks.

1. Open the main form your users will use

A table can have several main forms. Editing one does not change every other form. Choose the form actually used by your app, or plan to make the edited form available in Step 6. Microsoft: Edit a form

  1. Sign in to Power Apps and select the correct environment.
  2. Open Solutions, open your solution, then select Tables > Task Tracker > Forms.
  3. Choose the intended form with Form type set to Main, then select Edit or open it by name.
  4. Note the form’s name. You will select that same form when validating the published app.

Task Tracker Forms area lists Demo and Information as Main forms

2. Add a Calendar tab

  1. In the form designer, open Components.
  2. Add a 1-column tab to the form.
  3. With the new tab selected, set its Label to Calendar in the properties pane. Keep the generated Name, which identifies the tab internally.
  4. Select the section inside that tab, then select Display > Calendar in the Components pane.

Components pane contains a 1-column tab and Calendar under Display

New tab properties have Label set to Calendar and a generated internal Name

If Calendar is not listed, search the Components pane and use Get more components to look for the Microsoft component. If it is unavailable in your environment, stop this form setup rather than substituting a date picker or a similarly named canvas-app control. Microsoft: Add components to a form

3. Select the table, view, and date columns

Use a populated normal Text column for the caption. If the long-description column you wanted is not offered, choose Task Title (Text); Step 4 explains the distinction. For timed events, use appropriate Date and Time columns instead of assuming a date-only field contains a meeting time.

In Add Calendar, choose these values using the dropdowns:

Calendar settingExample selection
TableTask Trackers
ViewAll Tasks
Start date > Table columnStart Date (Date Only)
Description > Table columnTask Title (Text)
End date > Table columnDue Date (Date Only)
Duration > Table columnLeave unselected

Use the corresponding columns from your own table; the names above are sample selections, not required schema names. Microsoft documents the calendar’s start, end, description, and duration mappings. Microsoft: Calendar configuration

Calendar mappings show All Tasks, Start Date, Task Title, Due Date, and an unselected Duration

Leave Duration blank for this date-range setup. After publishing, compare a sample event’s displayed period with its stored start and end values; do not assume a business due date means the event includes the whole final day.

4. Use a readable Text column for Description

Description here is a calendar mapping, not a requirement to use a table column named “Description.” Select Task Title (Text) so the caption contains a concise value that is already populated.

Description dropdown offers lookup columns and Text columns, including Description Text and Task Title

If the desired long-description or rich-text column is absent from this picker, use Task Title (Text) and retain the full details on the record form. Do not delete or convert an existing details column just to make it appear in the calendar picker.

Dataverse Text Area and Multiline Text are different types: Text Area is a Single Line of Text format, while Multiline Text uses the Memo type. This setup uses a normal Text column offered by the calendar picker; it does not require every text format to be interchangeable. Microsoft: Column data types

Optional: Priority colors

The component’s color field can appear as CC_AdvancedCalendar_Color. Its dropdown offers Choice columns, including Priority (Choice) in this example. If you want to try priority coloring, select that column. After completing Step 5, inspect the calendar’s component configuration to confirm that the selection was retained.

Calendar color dropdown offers Category, Priority, Progress, and Status Reason Choice columns

Priority coloring is optional; leave the color binding empty if it is unavailable or does not persist. Establish the dated calendar first. Then compare a task’s Priority with its event color before using colors as a scheduling cue. Keep meaningful titles and text labels so color is not the only way to understand a task.

Choice options can have configured colors, but an option-color setting alone does not prove how every calendar component renders it. Microsoft: Choice configuration

5. Finish the component and set its record scope

The desktop layout is the focus here. Test enabled mobile clients separately; the Calendar control is not supported in mobile offline. Microsoft: Calendar experience

  1. Under Show component on, keep Web selected. Select or clear Mobile and Tablet for the clients you intend to support.
  2. Select Done to insert the calendar.
  3. Select the inserted calendar on the form. In its properties, set Label to Calendar.
  4. To show rows from the selected All Tasks view independently of the open record, leave Show related records cleared. Confirm Table is Task Trackers and Default view is All Tasks.

Web, Mobile, and Tablet checkboxes above the Done button

Calendar subgrid properties show Show related records cleared and All Tasks as Default view

If you instead need tasks related to the open record, select Show related records and choose the appropriate relationship-backed table/view. That changes the scope from the view-based configuration above. All Tasks is a view name, not permission to see every task in the environment. View filters and users’ record privileges still apply. Microsoft: Subgrid properties

6. Tidy the labels and publish the correct form

Keep the Calendar tab visible. Hide only redundant section or component labels, not the tab or calendar itself. When resolving form access, retain other required roles and do not grant broader data privileges just to display this form.

  1. Select the section containing the calendar and select Hide label in the section properties. Leave Hide cleared.
  2. If the component’s own Calendar label is redundant, select the calendar component and select its Hide label option too.
  3. Select Save and publish on the form command bar. If your designer has separate commands, save, then publish.
  4. In the app designer, select the table’s form page. Confirm the edited main form appears under In this app. If it is under Not in this app, select its … > Add command. Save and publish the app if you changed its form selection.
  5. If a user cannot access the form, have the maker responsible for form access open Forms > Form settings > Security role. If Specific security roles is selected, select the intended users’ existing role, retain other required selections, and select Save and Publish. If Everyone is already selected, leave it selected and resolve app inclusion, form activation, or record access instead; do not change data privileges as a shortcut.

Section properties have Hide label selected while Hide remains cleared

Form command bar offers Save and publish

Form inclusion and form-role access are separate requirements. Form order influences the default, while users with multiple available main forms can select another one. Add forms to an app, Form access settings

7. Open the calendar and verify a task

  1. Run the app and open a task record.
  2. If multiple main forms are available, use the form selector near the record heading to select the exact form you edited. If it is missing, return to Step 6 and resolve form inclusion or role access.
  3. Select the Calendar tab. Navigate to the sample tasks’ date range.
  4. Change the calendar’s Day dropdown to Month to inspect tasks across a longer period.
  5. Select a task bar. Compare its title, displayed period, and duration with that task’s stored values. If Task Title is also the mapped Description, the summary can repeat the title.
  6. Use More Details to open the task’s full record when needed. The popup also exposes Delete; deleting from it is a data operation, not a way to hide a calendar entry.
  7. Repeat with an ordinary app user to confirm the expected form and authorized tasks appear.

Month calendar detail shows task bars spanning several dates

Task popup shows its title, date period, six-day duration, repeated title description, More Details, and Delete

The popup is a summary of the selected row. Use the record for longer task details. Microsoft: Working with calendar rows, Select the intended main form

Need a calendar without opening a record?

A form tab is one placement option. You can also configure the Calendar control on a table view, so users reach it from the app’s table navigation. Before choosing that alternative, note that Microsoft’s table-view configuration replaces the standard control for all views of that table. Follow the separate table-calendar setup for that scope.

Illustrative diagram contrasts a calendar inside a main form with a calendar on a table view

Illustrative diagram: form placement and table-view placement have different entry points and configuration scope.

Troubleshooting

SymptomAction
Calendar tab is missingConfirm the selected runtime form is the one you published. Resolve app form inclusion and role access in Step 6; ensure the tab is not hidden.
Calendar appears emptyNavigate to a known task’s date range. Compare the selected view’s rows with the calendar, confirm the mapped date values, and check Show related records. If the row is unavailable in the view for that user, resolve its filter or access first.
Description column is not offeredSelect the populated Task Title Text column. Keep long/rich details on the record; inspect the column’s actual type instead of relying on its display name.
Captions are blankOpen a task and confirm the mapped Text column contains a value, then refresh the calendar.
Last day or duration looks unexpectedOpen the task and compare its exact start/end values with the popup’s period. Correct the source dates or choose date/time columns appropriate to the scheduling requirement.
Priority colors are missingReopen the calendar configuration and inspect the optional color binding. If it is absent or not retained, leave it empty and use the dated calendar with text labels.
Mobile layout differsConfirm the component is enabled for that client and the containing tab/section is not hidden on phone. Use an online session; do not expect the desktop Day/Week/Month layout on every mobile client.

Companion video

Video: How to Add a Calendar View to a Dataverse Table Form (Model-Driven App) | Limits?

If the player is blocked on your network, open the video on YouTube.

Need help applying this to your own setup? Read about consulting.