Schedules & Activities
After a contract ratifies, SMART generates a schedule for the lot from its Standard Plan. That schedule is the heartbeat of the build — every trade portal, builder dashboard, and homeowner milestone reads from it.
At a glance
- A Schedule is a per-Lot list of dated Activities (work items) — generated automatically when a contract ratifies.
- Activities live in
LotSelectionActivityand are copied from the Plan’s template (StdPlanActivity). - A few activities are flagged Critical (Permit Received, Frame Complete, Final Walk…) — these drive customer-facing milestones and payment triggers.
- Schedules only exist while a contract is at
rat,siv, orclo— cancelling a contract deletes the schedule. - Each lot gets a Slot (
Lot.Slot) used by builders to sequence crews physically across the project. Lot.SchCompleteis the single source of truth for “when will this lot finish?”
How a Lot’s schedule is built
Section titled “How a Lot’s schedule is built”Ratify is the trigger; the next estimate batch is what actually does the work. The whole thing is a 6-step pipeline driven by spProcessContractRatify → spProcessEstimateCreate → spLoadActivity → spGenerateScheduleDays.
spProcessContractRatify) → Lot gets PlansID, PendingStatus=‘sale’/‘pstart’/‘pchng’, ProcessEstimate=1.ProcessEstimate=1 lots: spProcessEstimateCreate + spProcessEstimateActivity + spProcessEstimateResource populate Estimate* tables.StdPlanActivity + StdPlanCriticalActivity into LotSelectionActivity via spLoadActivity.spGenerateScheduleDays rolling forward from the Lot’s StartDate, skipping weekends and dbo.Holiday rows.Lot.Slot for crew sequencing (via spProcessLotRTeamSchedule / spProcessLotReleaseSchedule).What’s an Activity?
Section titled “What’s an Activity?”An Activity is one work item — Frame Stage 1, Drywall, Final QA, Pre_Construction_Day_07. There are 2,455 activities defined in the database (dbo.Activity).
Activity columns and what they drive
| Column | Purpose |
|---|---|
ActivityID | Short code (e.g. #1001, FRA01). Joins StdPlanActivity, LotSelectionActivity, EstimateActivity. |
Type | Schedule item, milestone, etc. — controls how it shows up in builder portals. |
Duration | Calendar days. Drives the date math in spGenerateScheduleDays. |
Minimum / Maximum | Bounds for delay calculations — a delay can’t push outside these without a manual override. |
GroupsID | Phase grouping (Pre-Construction, Foundation, Frame, Finish, etc.). |
CriticalActivity | Flagged as a schedule milestone (see next section). |
Critical Activities
Section titled “Critical Activities”A Critical Activity is a milestone — typically 8–15 per build (Permit Received, Foundation Poured, Frame Complete, Drywall Complete, Trim Out, Final Walk, Closing). They drive customer-facing dashboards and trigger payment milestones.
The three Critical Activity tables (template, per-lot, compare)
StdPlanCriticalActivity— template (per StdPlan).EstimateCriticalActivity— copied to each Lot when ratified.CompareCriticalActivity— for comparing two lots.
The template is the editable master; per-lot rows are the snapshot you’d query for “when does this lot pass framing?”
Slots and crews
Section titled “Slots and crews”Each lot is assigned a Slot (Lot.Slot) — a small integer that determines crew sequencing inside the project. Slot is what builders use to physically schedule trades. Two lots in the same R-Team with the same slot would conflict, which is why spProcessEstimateCreate validates slot uniqueness before running the estimate (logs E14 otherwise).
How slots get moved (utilities and proc names)
- The “Move R-Team” feature in SMART invokes
spProcessLotRTeamSchedule/spProcessLotReleaseSchedule. - Direct SQL utilities for bulk reorganization:
SlotsMoveAllButClosed.sqlSlotMoveRTeamCleanup.sqlSlotScheduleInAlignment.sqlCreateSlotSchedule_RJFinal.sqlCreateSlotSchedule_DummyLots.sql
These live under SOURCECODE/SMART/Documentation/CustomerSupportDocumentation/. As with any CSR script, run a SELECT first and wrap in a transaction.
Where in the apps
Section titled “Where in the apps”| App | Where |
|---|---|
| SMART | Production → Schedule, Lot Inquiry |
| SMART 2.0 | production/ |
| Builder Portal | Schedule.aspx (the daily field schedule) |
| Trade Portal | schedule.aspx and quick-view.aspx (a trade’s view) |
| Home Owner Portal | Schedule.aspx (buyer-facing milestones only) |
Common queries
Section titled “Common queries”Critical-activity dates for an open lot
SELECT a.ShortName, a.ActivityName, eca.SchedDate, eca.ActualDateFROM dbo.EstimateCriticalActivity ecaJOIN dbo.Activity a ON a.ActivityID = eca.ActivityIDWHERE eca.ProjectID = @ProjectID AND eca.BuildingID = @BuildingID AND eca.UnitID = @UnitIDORDER BY eca.SchedDate;