An HOA violation tracker in SharePoint
An HOA violation tracker is one SharePoint list with one row per violation: lot, issue type, stage, date observed, cure-by date, board contact and closed date. Four views show what is open, past its cure date, by issue type and closed. Notice rules come from your governing documents and your attorney or management company. The list is a record. It does not decide anything. What counts as a violation, which notice goes out and how long an owner gets all come from your governing documents.
How one case moves through the list
Picture Lot 31 with bins left at the curb. The row passes through four stages, and each stage changes one or two fields:
- 1 Observed. A board member spots the issue and adds the row with today's date.
- 2 Notice sent. The notice goes out, the stage moves, and the cure-by date is typed in.
- 3 Follow-up notice. The cure-by date passed with no fix, so a second letter is logged and a new cure-by date replaces the old one.
- 4 Closed. The issue is fixed or dropped, and the closing date is filled in.
Everything else in this guide supports that path. The stage names are examples only. Replace them with the steps your governing documents describe.
If the cases now sit in a spreadsheet, "Replace a spreadsheet tracker with a SharePoint list" covers the move.
Settle these first
Changing these later means cleaning up rows, so decide before row one.
- Who can see it. The list describes neighbors. Keep the audience small and ask your admin to set permissions.
- Who can move a stage. Name the board members who may add rows and advance them.
- Where the stages come from. Read your governing documents on notices, or ask your attorney or management company, then shape the stages around that text.
This guide shows how to build a tracking list. It is not legal advice. It claims nothing about any law, rule, fine, waiting period or required notice.
Build the list and its columns
Labels may look different in your tenant. From your SharePoint site or the Lists app in Microsoft 365, pick a new list, choose blank, and name it "Violations". Then add the columns below. Microsoft's column types page explains each type.
Property | Title | rename it from Title; holds a lot or unit label such as "Lot 31", never an owner name
Issue type | Choice | 1 Landscaping, 2 Exterior appearance, 3 Parking, 4 Noise, 5 Trash bins, 6 Other
Stage | Choice | 1 Observed, 2 Notice sent, 3 Follow-up notice, 4 Closed; default 1 Observed
Date observed | Date and time, date only | defaults to the day the row is added
Cure by | Date and time, date only | the deadline typed in after a notice; your documents set the length
Date closed | Date and time, date only | stays empty until the case ends
Board contact | Person or Group | the board member who owns the row
Notice sent date | Date and time, date only | the day a notice went out; optional
Notice number | Single line of text | 1 for the first notice, 2 for the follow-up; optional
Notes | Multiple lines of text | facts only: what was seen, what was sent, on what date
Microsoft says a Date and time column can default to the day an item is added, which suits Date observed. Microsoft says the Person or Group type offers a searchable list of people and groups. Microsoft says a column can be marked required, which blocks saving an item without a value. Require Issue type, Stage and Date observed. Leave Cure by and Date closed optional, since they fill in later.
The digit in front of each Choice value is there on purpose. Our advice, not a Microsoft rule: keep the digit so the stages read in the order a case moves.
Photo tip. Microsoft says that on the New item form you select Add attachments, locate the file, and select Open. If you do not see Add attachments, Microsoft says your list does not support attachments, and it says you cannot attach a file in Edit in grid view. Our advice, not a Microsoft rule: attach a dated photo of the issue to the row, and describe it in Notes.
Lot 31, entered and updated
Add one made-up row to test the layout, and delete it before real use.
- Property: Lot 31
- Issue type: 5 Trash bins
- Stage: 1 Observed
- Date observed: today
- Cure by: leave empty for now
- Board contact: yourself
- Notes: Test row, remove later.
Now change Stage to 2 Notice sent and type a Cure by date ten days ahead. Watch the row appear in the views below. A column you hesitated over while typing is a candidate to drop.
Four views for board night
Build these four in the classic view editor, because Past cure date uses [Today]. Exact names may differ.
Our advice, not a Microsoft rule: use the classic view editor for blank and "is not equal to" filters too.
Awaiting cure
Stage is not equal to 4 Closed. Sort by Cure by, ascending, then by Date observed, ascending. The board opens this one first.
Past cure date
Stage is not equal to 4 Closed, And Cure by is less than [Today]. Sort by Cure by, ascending. Each row here needs a board decision. On screen, this view shows only the open rows whose Cure by date is earlier than today, oldest first.
By issue type
Stage is not equal to 4 Closed. Group by Issue type, which shows whether one kind of problem is piling up.
Closed cases
Stage is equal to 4 Closed. Sort by Date closed, descending. Keep these rows as the record.
Make all four public so the board looks at the same thing.
To color late rows, see "Turn overdue rows red in a SharePoint list".
A list or HOA software
Our advice, not a Microsoft rule: a list fits a board that wants a shared record, four views and one weekly email, and that can build and keep the list itself. If the board needs something this list does not do, such as writing letters or giving owners their own login, that is a job for separate software. Write down what you need before you compare products.
Proving who changed what
If an owner disputes a case, the board will want to know who moved a stage and when. Microsoft says that when versioning is on, new versions are added to an item's history after changes are saved. Microsoft's page shows how to turn it on in the list settings under Versioning settings, and how to open Version history from the menu next to an item. Exact names may differ on your screen. Switch it on before the first real row so the trail starts at the start, and ask your admin to confirm.
A weekly sweep for late cases
A scheduled flow reads the list once a week and emails the board one summary of open rows past their Cure by date. The email carries a count or the titles, nothing more.
Filter Query for Get items: Stage ne '4 Closed' and Cure_x0020_by lt 'formatDateTime(utcNow(),'yyyy-MM-dd')'. Enter the part inside the quotes as an expression. Microsoft says these queries swap each space in a column name for _x0020_, so check the internal name of your own column. The choice text must match the list exactly, digit included.
Microsoft says Get items stops at 100 items by default, and Top Count can reach the list view threshold of 5,000. Set Top Count and turn Pagination on, or rows past 100 never reach the email.
For late alerts in general, see "Late tasks nobody notices: setting up late alerts". For the message wording, see "Send a reminder before a due date in a SharePoint list".
Privacy and permissions
Put a lot number and the facts of the issue in the list, and leave owner names out. Owners get no access to the list. Ask your attorney or management company how owners should see their own case. Views only change what is shown, so the list itself must be limited to the board members who work cases. To split rows by person, see "Let each person see only their own items in a SharePoint list".
Where this goes wrong
- The list becomes the decision. It records what the board decided, and your governing documents decide.
- Stage names or deadlines are copied from another community. Take them from your own documents.
- Notes hold opinions. Record what was seen and sent, each with a date.
- Closed rows are deleted. They are the history, so filter them out of daily views instead.
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.
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
Do we need HOA violation software, or is a list enough?
Our advice, not a Microsoft rule: a list is enough for a record, views and a weekly email. If the board needs letters written or owner logins, that is a job for separate software.
Does this list write violation letters?
This list logs the Notice sent date and Notice number, but does not write letters. The wording comes from your governing documents, your attorney or your management company.
What do the four stages mean?
The four stages are example labels for where a case stands. Replace them with the steps your governing documents describe.
Why can't I filter by [Today] from the column header?
Microsoft says it is not possible to use the [Today] or [Me] filters when filtering from a column header. Use the classic view editor (Edit current view, then Filters).
Why does my weekly flow miss some overdue rows?
Get items returns 100 items by default. Set Top Count in Advanced options, and turn on Pagination for larger lists.
Sources
- Microsoft Support, List and library column types and options
- Microsoft Support, Use filtering to modify a SharePoint view
- Microsoft Support, Create, change, or delete a view of a list or library
- Microsoft Support, Enable and configure versioning for a list or library
- Microsoft Learn, In-depth analysis into Get items and Get files SharePoint actions
- Microsoft Support, Introduction to SharePoint formulas and functions
- Microsoft Support, Add list items