Documentation / Administration

Platform operations

Background tasks, schedules, monitors and logs.

Behind the screens, background tasks extract text from attachments, keep the search index up to date, send queued emails and synchronize with Unifier. This page covers those tasks, the logs administrators use to follow what happened, and the grid features shared by every list in CLIF.

Working with grids#

Every list in CLIF (submissions, departments, funds, logs …) offers the same tools:

ToolWhat it does
Search box and filter rowSearch all columns, or filter a column with the row under the headers or its filter menu.
Change Logs (clock)Who changed which records in this list, and how.
Export to ExcelDownloads the rows you see as an .xlsx file.
Clear filter settingsResets filters, sorting, search and the saved column layout.
RefreshReloads the data.
+ (Add), Edit, Clone, DeleteRow commands. Clone creates a copy straight away, with the name prefixed by Clone.
  • Column widths, sorting and filters are remembered in your browser for each grid.
  • Delete deactivates most records instead of removing them: they disappear from the lists because the Is Active filter is set to Yes. Clear that filter to see inactive records, and tick Is Active again to restore one.
  • Opening, changing and deleting records is recorded in the Activity Logs.

System tasks#

Platform → System Tasks lists the background tasks:

TaskWhat it does
Convert attached PDF to textReads the text of new PDF attachments (OCR) so they can be searched.
Collect advanced search informationAdds submissions changed since the last run to the advanced search index.
Send emailsSends queued emails.
Unifier SynchronizationImports funds, projects, cost centers and spending categories from Unifier.

Click Schedule on a task to choose when it runs, and tick Is Active to switch it on. A task has one schedule; choosing another replaces it. Deactivating a task stops it from running.

Schedules#

Platform → Schedules holds the schedules tasks can use. Add one and choose its type:

TypeSettings
Daily recurringEvery 1–59 minutes or every 1–24 hours.
DailyOnce a day at a set time.
WeeklySelected days of the week at a set time.
MonthlySelected days of selected months at a set time.
CustomA five-part cron expression.

Changing a schedule reschedules every task that uses it. Many common schedules (every few minutes, nightly, monthly) are already defined.

Hangfire dashboard#

Platform → Hangfire Dashboard shows the background job server: jobs waiting, running, succeeded and failed, and the recurring jobs with their next run time. Failed runs are also written to the Error Logs.

Logs#

Under Logs. Each log has a Period picker (today by default, up to 180 days back, year to date or a custom range).

LogContents
Activity LogsEvery record that was created, modified, deleted, read or listed: date, user, action, record type and id. Click Details for old and new values.
Email LogsEvery email CLIF created: date, subject, sender, recipients, content and why it was sent.
Error LogsErrors with user, message and full technical details, including errors on the public dashboard and in background tasks.

Submission Monitor#

Submission Mng → Submission Monitor lists who has which submission open right now, with when they opened it and their last change. Use it to check whether someone is still working on a submission before making large changes.

Cached entries#

CLIF keeps frequently used lists in memory. If a change made directly in the database does not show up, open Administration → Cached Entries, choose the organization and remove the entry (or Remove all entries) to reload it.

Services#

For the technical team, CLIF consists of these applications:

ApplicationRole
ClifThe main web application.
Clif.HangfireRuns the system tasks; hosts the Hangfire dashboard.
Clif.OCRExtracts text from PDF attachments.
Clif.ApiThe public read-only API behind the public dashboard.
Clif.PublicThe public Board of Estimates dashboard.
Clif.ESTA one-off tool that loads all existing submissions into the advanced search index (for example after setting up a new index).
Clif.DocsThis documentation site.
An unhandled error has occurred. Reload 🗙