A loaned equipment tracking app built from scratch on a Personal Developer Instance, deliberately targeting the three areas the CSA exam covers that my day-to-day service desk work doesn't: data modelling, ACL configuration, and CMDB/CSDM ownership.
CompleteThe five phases
Built a scoped app with two custom tables: u_kit_item (standalone — serial number, status, purchase cost) and u_kit_loan (extends Task — inheriting number, state, and assignment group for free). Added a dictionary override to see field behaviour diverge across the extension hierarchy, then traced both tables in Tables & Columns to compare an extended table against a standalone one.
u_kit_loan extending Task — number, state, assignment group and every approval field inherited without being built.
Created two roles — u_kit_manager for table-level access and u_kit_finance for a single sensitive field. Built table-level ACLs (read/create/write/delete) and a separate field-level ACL restricting u_purchase_cost to a different role entirely. Added a script-based ACL on Kit Loan (answer = current.u_requested_for == gs.getUserID();) so a requester can always see their own loan regardless of role.
Field-level ACL scoping Purchase Cost to a separate finance role.
Impersonated as a manager-only user — Purchase Cost isn't offered at all.
Loaded a CSV with deliberately mismatched column headers (AssetSerial, ItemState, Cost) against a Transform Map, then ran the same file three times to see the full lifecycle: a clean first import, a second run creating silent duplicates with no coalesce field set, and a third run — after enabling coalesce on u_serial_number — correctly updating existing records instead of duplicating them.
Every serial number duplicated after a second import with no coalesce field.
Same 24 rows, third run — coalesce on serial number updates instead of duplicates.
Browsed the native cmdb_ci class hierarchy (Configuration Item → Hardware → Computer → Server) to see the same extension pattern from Phase 1 applied at platform scale. Created a Business Application CI and a Server CI for Crestline, related them via Runs on::Runs, then linked an Incident to the Server CI to tie CMDB back into the ITSM tables I already work with daily.
Crestline Kit Tracker Server related to the Business Application CI via Runs on::Runs.
Reviewed the Shared Responsibility Model conceptually — ServiceNow secures the platform (infrastructure, hosting, patching); the admin secures everything configured on top of it (ACLs, data classification, business logic, instance hardening). Then explored Security Center's live dashboard, which surfaces exactly that admin-owned half: hardening compliance score, threshold alerts, and posture recommendations.
Security Center's posture dashboard — every metric here reflects admin-owned configuration, not platform security.
Supporting documents
View Crestline Brand Guidelines