← Al Davies, 250 High Street

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:

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.

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.

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

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

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