Skip to content

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 LotSelectionActivity and 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, or clo — cancelling a contract deletes the schedule.
  • Each lot gets a Slot (Lot.Slot) used by builders to sequence crews physically across the project.
  • Lot.SchComplete is the single source of truth for “when will this lot finish?”

Ratify is the trigger; the next estimate batch is what actually does the work. The whole thing is a 6-step pipeline driven by spProcessContractRatifyspProcessEstimateCreatespLoadActivityspGenerateScheduleDays.

1Ratify the contract (spProcessContractRatify) → Lot gets PlansID, PendingStatus=‘sale’/‘pstart’/‘pchng’, ProcessEstimate=1.
2Estimate batch picks up ProcessEstimate=1 lots: spProcessEstimateCreate + spProcessEstimateActivity + spProcessEstimateResource populate Estimate* tables.
3Copy schedule template from StdPlanActivity + StdPlanCriticalActivity into LotSelectionActivity via spLoadActivity.
4Adjust durations based on chosen options that affect days (e.g. extra-stage finishes).
5Compute dates with spGenerateScheduleDays rolling forward from the Lot’s StartDate, skipping weekends and dbo.Holiday rows.
6Slot the lot in Lot.Slot for crew sequencing (via spProcessLotRTeamSchedule / spProcessLotReleaseSchedule).

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
ColumnPurpose
ActivityIDShort code (e.g. #1001, FRA01). Joins StdPlanActivity, LotSelectionActivity, EstimateActivity.
TypeSchedule item, milestone, etc. — controls how it shows up in builder portals.
DurationCalendar days. Drives the date math in spGenerateScheduleDays.
Minimum / MaximumBounds for delay calculations — a delay can’t push outside these without a manual override.
GroupsIDPhase grouping (Pre-Construction, Foundation, Frame, Finish, etc.).
CriticalActivityFlagged as a schedule milestone (see next section).

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?”

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.sql
    • SlotMoveRTeamCleanup.sql
    • SlotScheduleInAlignment.sql
    • CreateSlotSchedule_RJFinal.sql
    • CreateSlotSchedule_DummyLots.sql

These live under SOURCECODE/SMART/Documentation/CustomerSupportDocumentation/. As with any CSR script, run a SELECT first and wrap in a transaction.

AppWhere
SMARTProduction → Schedule, Lot Inquiry
SMART 2.0production/
Builder PortalSchedule.aspx (the daily field schedule)
Trade Portalschedule.aspx and quick-view.aspx (a trade’s view)
Home Owner PortalSchedule.aspx (buyer-facing milestones only)
Critical-activity dates for an open lot
SELECT a.ShortName, a.ActivityName, eca.SchedDate, eca.ActualDate
FROM dbo.EstimateCriticalActivity eca
JOIN dbo.Activity a ON a.ActivityID = eca.ActivityID
WHERE eca.ProjectID = @ProjectID
AND eca.BuildingID = @BuildingID
AND eca.UnitID = @UnitID
ORDER BY eca.SchedDate;