web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Apps / Car Maintenance form i...
Power Apps
Suggested Answer

Car Maintenance form in sharepoint/power-apps with multiple items for each visit

(1) ShareShare
ReportReport
Posted on by 2,015 Season of Giving Solutions 2025

I am building a SharePoint-based car maintenance system using Power Apps.

Each car maintenance visit will have a visit date, total price, and one or more maintenance item descriptions. For example, a single visit may include multiple items such as an oil change, timing belt replacement, brake inspection, and so on.

What is the best way to store these maintenance item descriptions in SharePoint?

I considered using a multi-select Choice column, but this type of column cannot be indexed, which may affect filtering and performance. I also considered storing the item descriptions in a separate related list, but then I am concerned about how to efficiently filter maintenance visits based on the selected item descriptions.

What would be the recommended SharePoint list structure for this scenario, especially if I need to filter maintenance visits by maintenance item description?

 
I have the same question (0)
  • Suggested answer
    11manish Profile Picture
    3,333 on at
    I would avoid a multi-select Choice column if filtering by maintenance item is an important requirement.
     
    A separate Maintenance Items child list linked to the maintenance visit is the most robust and maintainable approach.
  • Suggested answer
    Valantis Profile Picture
    6,735 on at
     
    Two lists is the correct approach. Here's the exact structure:
    List 1 Maintenance Visits
    - VisitDate (Date)
    - TotalPrice (Currency)
    - CarID or plate number (Text or Lookup)
    - Status (Choice)
     
    List 2 Maintenance Items
    - VisitID (Lookup to Maintenance Visits)
    - ItemDescription (Text or Choice)
    - ItemCost (Currency)
    To display items for a selected visit in Power Apps, use a gallery filtered by the lookup:
    Filter('Maintenance Items', VisitID.Id = SelectedVisit.ID)
    To filter visits by item description (your main concern), get the visit IDs that contain the item first, then filter the visits list:
    With(
        {_matchingVisits: Filter('Maintenance Items', ItemDescription = SearchValue)},
        Filter('Maintenance Visits', ID in _matchingVisits.VisitID.Id)
    )
     
    Note: the 'in' operator is not delegable to SharePoint so for large lists (5000+) you'll need a Flow to do server-side filtering. For most car maintenance scenarios the list stays manageable and this works fine.
     

     

    Best regards,

    Valantis

     

    ✅ If this helped solve your issue, please Accept as Solution so others can find it quickly.

    ❤️ If it didn’t fully solve it but was still useful, please click “Yes” on “Was this reply helpful?” or leave a Like :).

    🏷️ For follow-ups  @Valantis.

    📝 https://valantisond365.com/

    💼 LinkedIn

    ▶️ YouTube

  • Suggested answer
    SebS Profile Picture
    4,826 Super User 2026 Season 1 on at

    I would avoid using a multi-select Choice column for this.

    It looks nice at the start, but after the list grows, especially in Power Apps, it can become awkward to filter and maintain. Same with relying too much on Lookup columns. They are useful, but they are still complex SharePoint column types, so filtering against them can easily lead to delegation problems later.

    I would keep the model simple and split it into a few lists:

    Cars

    Column Type Purpose
    Title Text Car registration or name
    CarID Text Unique car reference
    Status Text Active, Sold, Scrapped

    Maintenance Visits

    One record per garage visit.

    Column Type Purpose
    Title Text Visit reference
    CarID Text Links the visit to the car
    VisitDate Date Date of the visit
    TotalPrice Currency Total visit cost
    GarageName Text Optional
    Notes Multiple lines Optional

    Maintenance Types

    This replaces the Choice column.

    Column Type Purpose
    Title Text Oil Change, Timing Belt, Brake Inspection
    MaintenanceTypeID Text Simple unique value
    Active Yes/No Hide old options without deleting them

    Maintenance Visit Items

    One record per item completed during the visit.

    Column Type Purpose
    Title Text Item name or short description
    VisitID Text or Number Links back to the visit
    MaintenanceTypeID Text Links to the maintenance type
    MaintenanceTypeName Text Easy display and filtering
    ItemPrice Currency Optional
    Description Multiple lines Extra detail if needed

    So instead of storing this in one visit record:

    “Oil Change, Timing Belt, Brake Inspection”

    You store one visit record, then three child item records.

    That gives you a cleaner structure and makes filtering much easier. For example, if you want to find all visits where an oil change was done, you filter the Maintenance Visit Items list for MaintenanceTypeName = "Oil Change" or MaintenanceTypeID = "OIL_CHANGE".

    I would still say Lookup columns are okay for beginners, especially for displaying related data because they are quick to set up. I just would not make them the main thing the app depends on for filtering. I’d always add simple helper columns like CarID, VisitID, and MaintenanceTypeID, because plain text or number columns are much safer to index and filter.

    The main idea is:

    • avoid multi-select Choice for this

    • use a small maintenance type list instead

    • store each maintenance item as its own row

    • keep filter columns simple

    • use Lookup columns for convenience, not as the main filtering design

    It is a little more setup at the beginning, but it saves a lot of pain later when the app has more data and people start asking for filters, reports, and Power BI views.

  • johnjohnPter Profile Picture
    2,015 Season of Giving Solutions 2025 on at
    @SebS but one issue with this structure, is that currently the maintenance team are using excel sheet, and they have a view like this:-


    Car Number |  Maintenance Type                | Visits Date | Price
     
    12345           | oil change +filter + coolant  | 1/1/2026    | 100 USD
     
     
    in other way they want to way to choose a car and see all the visits with all the maintenance items done, something as above. in you case to view the exact maintenance items, the users have to go to the car first >> then to each visit >> and check the exact maintenance for each visits. which is not very user friendly..
    so i need to store the CarID & Visit Date within the Maintenance Visits list although this mean duplicate data , but i can not find a way to have the above view in a delegable way  
  • johnjohnPter Profile Picture
    2,015 Season of Giving Solutions 2025 on at
     
    but one issue with this structure, is that currently the maintenance team are using excel sheet, and they have a view like this:-


    Car Number |  Maintenance Type                | Visits Date | Price
     
    12345           | oil change +filter + coolant  | 1/1/2026    | 100 USD
     
     
    in other way they want to way to choose a car and see all the visits with all the maintenance items done, something as above. in you case to view the exact maintenance items, the users have to go to the car first >> then to each visit >> and check the exact maintenance for each visits. which is not very user friendly..
    so i need to store the CarID & Visit Date within the Maintenance Visits list although this mean duplicate data , but i can not find a way to have the above view in a delegable way  .. any advice?
  • Suggested answer
    Valantis Profile Picture
    6,735 on at
     
    The two-list structure is still correct you don't need to change it.
    The view you want (Car, Maintenance Types etc.) can be achieved in Power Apps without duplicating data or changing the structure.
     
    Here's the approach:
    In your gallery showing Maintenance Visits, add a label that concatenates the maintenance items for each visit:
     
    ConcatText = Concat(
        Filter('Maintenance Items', VisitID.Id = ThisItem.ID),
        ItemDescription & " + ",
        ", "
    )
     
    This gives you "oil change + filter + coolant" for each visit row exactly like the Excel view.
     
    For the total price per visit, either store it on the visit record (which you already have as TotalPrice) or sum the child items:
    Sum(Filter('Maintenance Items', VisitID.Id = ThisItem.ID), ItemCost)
     
    The gallery shows one row per visit with the concatenated items label, date, and price alongside it matching their Excel format exactly.
     
    The delegation concern: the Filter('Maintenance Items', VisitID.Id = ThisItem.ID) inside a gallery runs per row, not as a single delegated query. For a car maintenance list with hundreds of visits (not millions), this works fine. If performance becomes an issue later, pre-calculate the concatenated string in a Dataverse table or use Power Automate to maintain a summary column on the visit record.
     

     

    Best regards,

    Valantis

     

    ✅ If this helped solve your issue, please Accept as Solution so others can find it quickly.

    ❤️ If it didn’t fully solve it but was still useful, please click “Yes” on “Was this reply helpful?” or leave a Like :).

    🏷️ For follow-ups  @Valantis.

    📝 https://valantisond365.com/

    💼 LinkedIn

    ▶️ YouTube

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Launch!

Jump in, show your community spirit, and win prizes!

Kudos to our 2025 Community Spotlight Honorees

Expanding mentorship, skilling, and AI innovation

Congratulations to the May Top 10 Community Leaders!

These are the community rock stars!

Leaderboard > Power Apps

#1
Valantis Profile Picture

Valantis 424

#2
WarrenBelz Profile Picture

WarrenBelz 355 Most Valuable Professional

#3
11manish Profile Picture

11manish 290

Last 30 days Overall leaderboard