← Al Davies, 250 High Street

A property maintenance request tracker in SharePoint

Short answer: make one Microsoft Forms request form that writes each request into one SharePoint list, with columns for unit, problem type, urgency, status, vendor, date reported and date done. Share one link or QR code so texts and emails stop being the way requests arrive. This is a tracker, not legal advice on repair deadlines.

Then save four views so you can see what is urgent, what is waiting and what is finished. A request that has a row cannot be forgotten as easily as a text message.

Why requests get lost

A repair request can arrive as a text at night, an email at noon or a remark from a resident on the stairs. Each channel keeps its own pile. Over a few weeks the piles cause trouble:

One shared list fed by one form removes the scatter, because everyone reads the same rows. If you are leaving a spreadsheet, see "Replace a spreadsheet tracker with a SharePoint list". If your requests arrive in a shared mailbox, see "Requests lost in a shared inbox: add an owner and a status".

Before you start

Three decisions are cheaper to make while the list is empty than after it holds 200 rows.

This guide covers a tracking list only. It is not legal advice, and it says nothing about your lease, local rules, your own repair policy or response deadlines.

Step 1. Create the list

Menu names can differ slightly on your screen.

  1. Go to your SharePoint site, or open Microsoft Lists in your web browser.
  2. Pick the option for a new list and choose a blank list.
  3. Call it "Maintenance requests".

Step 2. Add the columns

Microsoft's column types page covers each type named here. Our advice, not a Microsoft rule: start with ten columns.

Microsoft says a column can be marked required, which blocks any new item that leaves it empty. Our advice: require Unit or location, Request type and Urgency. Keep Assigned vendor and Date done optional because they get filled in later.

Our advice, not a Microsoft rule: number the Choice values, so 1 Urgent, 2 Normal and 3 Low stay easy to tell apart.

Step 3. Test with two requests

Enter two sample requests, one routine and one after-hours emergency, and put "TEST" at the start of each Title so you can find them. Remove both once the list works.

After Step 5, open the list in a phone's web browser, as a manager would. Does the emergency sit above the routine one in the Open requests view? Can you tell which unit and which vendor each needs without opening the row? Drop any column that slows entry.

Step 4. Collect requests with one form

You have two ways to take requests. Pick one so every request lands in the same list.

Option A: the list's own new-item form. People with access to the list open the link and add an item. This is the simplest. It only works for people who have access to your site. Tenants and visitors may not.

Option B: a Microsoft Form. You build a short form with a few questions, such as unit, problem, request type and details. A Power Automate flow then copies each response into the list as a new row. This suits people outside your team who have no access to the list. Microsoft's page for the Forms connector says the connector only works with organizational accounts, so whoever builds the flow needs a work or school account. Whether tenants must sign in is a form setting: select Collect responses and pick Anyone can respond. Check with your admin about what your account includes.

For the full steps of Option B, see "Save Microsoft Forms answers to a SharePoint list". Two points from Microsoft's connector page matter here:

Leave Status, Urgency and Assigned vendor out of the form if you want your team to decide them. A new row then starts as 1 New and 2 Normal from the defaults. One way to start is to let the person tell you if it is an emergency in the Details field, and have your team set Urgency. An emergency such as a gas smell or a fire should go to the phone and the emergency services, not to a form. Say that on the form itself.

Copy-ready form questions

Build the form with these eight questions. Numbers are for reference.

  1. Unit or location (text)
  2. Where in the unit, such as kitchen or hallway (text)
  3. The problem in a few words (text)
  4. Request type (choice: use the exact words of your list, number included)
  5. Details (long text)
  6. Is this an emergency? (choice: Yes or No). Add a line under it: "Gas smell, fire or flooding: call the emergency number, do not wait for this form."
  7. Reported by, as a unit number or role (text)
  8. Date the problem started (date)

A filled-in request, as it lands in the list: Row 12, Unit 4B, Problem "Slow drip under the kitchen sink", Request type 1 Plumbing, Urgency 2 Normal, Status 1 New, Reported by "Resident, Unit 4B", Date reported 10/12.

Question 6 does not set Urgency by itself. Your team reads it and sets Urgency in the list.

For people with no email, keep a paper form with the same eight questions. Whoever receives it types it into the same form, so every request still lands in the list.

What this tracker does not decide

Response deadlines come from your lease and local law. This tracker records when a request came in and when the job was done. It does not tell you how fast you must respond or who is responsible for a repair. Check your lease, and ask a local housing office or a lawyer.

Step 5. Build four views

Microsoft says views let you sort, filter and group list data. Microsoft says a filter built on [Today] or [Me] has to be made in the classic view editor (Edit current view, then Filters). Our advice, not a Microsoft rule: use that same editor for blank and "is not equal to" filters too. Microsoft says a column-header filter cannot take [Today] or [Me]. Exact names may differ on your screen.

  1. Open requests. In the classic view editor, set Status is not equal to 3 Done. Sort by Urgency, ascending, then by Date reported, ascending. Microsoft says the classic editor lets you sort by up to two columns. This is the view you open each morning. The urgent, oldest items are at the top.
  2. Waiting for a vendor. In the classic view editor, set Status is equal to 1 New, And Assigned vendor is empty. Group by Request type. These are requests nobody has picked up. If your Assigned vendor column is text, use the same blank-value filter.
  3. Scheduled. Set Status is equal to 2 Scheduled. Sort by Unit or location. Use this to plan visits by building.
  4. Done recently. In the classic view editor, set Status is equal to 3 Done, And Date done is greater than or equal to [Today] minus 30. Microsoft's page shows a filter with [Today] minus a number of days. Sort by Date done, descending.

Microsoft says a personal view is seen only by you, while a public view is seen by everyone who uses the list, and you may need extra permission to create a public one. Make the four views public so every manager sees the same thing. Microsoft also says a view cannot be switched between personal and public after it is made, and only a public view can be the default.

For turning old open rows red, see "Turn overdue rows red in a SharePoint list". For the size of a list as it grows, see "Move closed items to an archive list so the main list stays fast".

Step 6. Optional: a daily nudge for urgent items

Power Automate can run on a timer, look for urgent jobs nobody has booked and email you. Build it small.

  1. Create a scheduled cloud flow. Pick the Recurrence trigger, Interval 1, Frequency Day.
  2. Add the SharePoint action Get items and point it at the Maintenance requests list.
  3. Under Advanced options, put this in Filter Query: Status eq '1 New' and Urgency eq '1 Urgent'
  4. Fill in Top Count. Microsoft says Get items returns 100 by default and that Top Count can go up to the 5,000 list view threshold. Enter the largest urgent backlog you could face.
  5. Switch Pagination on in the action settings if the list could get big. Microsoft says to turn Pagination on for lists above 5,000 items.
  6. Finish with one email or Teams message that lists the count or the problem titles.

Leave Top Count empty and the flow can quietly skip every row after the 100th. For the message step, see "Send a reminder before a due date in a SharePoint list".

The text in the filter has to equal your Choice values character for character, number included. Rename 1 Urgent in the list and the flow needs the same edit.

Step 7. Limit what you store about residents

A repair log needs the unit and the fault. It does not need the resident's name or phone. Store "Unit 4B, no heat" and leave out family details, work hours and anything else about the household. If a contact is required, give it its own column and narrow who can open the list.

A saved view is a display choice, not a lock. Anyone who can open the list can switch to another view and read every column of every row. Permissions are what restrict access, and your admin sets those. To hide one column, read "Keep one column private (like pay or notes) in a shared list". To show each person just their own rows, read "Let each person see only their own items in a SharePoint list".

Our advice, not a Microsoft rule, for access levels:

What to avoid

When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.

Tell me what's still manual

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: Tools I built

FAQ

Can tenants add a request without a Microsoft 365 account?

Not through the list's own form, which needs access to your site. A Microsoft Form set to Anyone can respond can take answers from people outside your organization, and a flow copies them into the list. Microsoft says the Forms connector works only with organizational accounts, so whoever builds the flow needs a work or school account.

How does a tenant request maintenance from a landlord?

Through whatever channel the landlord sets up. If the landlord uses this tracker, that is the one form link or QR code they share.

How long does a landlord have to respond to a maintenance request?

This tracker does not decide that. Response times come from your lease and local law, so check those or ask a local housing office.

Is there a maintenance request form template?

This guide lists eight copy-ready form questions and the list columns that go with them, so you can build the form in Microsoft Forms.

Why can't I filter by [Today] from the column header?

Microsoft says the [Today] and [Me] filters cannot be used when you filter from a column header. Use the classic view editor (Edit current view, then Filters).

Sources