End-to-end SDLC guide for building, testing, and releasing ServiceNow apps using the ServiceNow SDK, Git, ReleaseOps, and CI/CD pipelines.
← → TO NAVIGATE · Ashwin Patti, Shelby Cohen
This presentation may contain "forward-looking" statements that are based on our beliefs and assumptions and on information currently available to us only as of the date of this presentation. Forward-looking statements involve known and unknown risks, uncertainties, and other factors that may cause actual results to differ materially from those expected or implied by the forward-looking statements. Further information on these and other factors that could cause or contribute to such differences include, but are not limited to, those discussed in the section titled "Risk Factors," set forth in our most recent Annual Report on Form 10-K and Quarterly Report on Form 10-Q and in our other Securities and Exchange Commission filings. We cannot guarantee that we will achieve the plans, intentions, or expectations disclosed in our forward-looking statements, and you should not place undue reliance on our forward-looking statements.
The information on new products, features, or functionality is intended to outline our general product direction and should not be relied upon in making a purchasing decision, is for informational purposes only, and shall not be incorporated into any contract, and is not a commitment, promise, or legal obligation to deliver any material, code, or functionality. The development, release, and timing of any features or functionality described for our products remains at our sole discretion. We undertake no obligation, and do not intend, to update the forward-looking statements.
👋 Welcome — 10:00 AM – 5:00 PM. By the end of today, you'll build, test, source-control, and release a real app end-to-end.
Global apps, non-global apps, and ITSM implementations built via "move and edit" — all under one model.
Non-global customization without "move" ownership — that metadata has no persistent container; it stays under ServiceNow's ownership.
One development model regardless of whether you're building net-new or customizing what's already there.
Build engine, compiles to deployable artifacts
IDE / prod code mode
Branch, PR, merge
Isolated dev instance
AI-assisted authoring
Automated test framework
Immutable artifact store
Assess, approve, release
A TypeScript DSL — .now.ts files define metadata with compile-time type checking and diagnostics, instead of clicking through forms.
Business logic as typed @servicenow/glide imports; UI Pages built in React, Svelte, Vue, or Preact.
THE INNER LOOP
THEN INSTALL AND TEST
Branching, pull requests, line-by-line review, three-way conflict resolution, precise point-in-time rollback.
XML transport artifact only — not built for collaboration, branching, or human-readable diffs.
We'll go deeper on this contrast later in the Source Control module.
9:55 – 10:10 · Back for build-ready requirements
"As a facilities user, I want to request maintenance on equipment so it gets fixed."
Entities: Maintenance Request, Equipment
Roles: Requester (create/view own), Technician (view assigned, update status)
Given–When–Then: Given a Requester submits a request for active Equipment, When they submit, Then a Maintenance Request is created in "New" state and assigned per routing rule.
Shared, non-prod
Feature branch lives here
Separate from dev
Separate from test
Allocate a sandbox before you start, create your feature branch inside it, decommission it when you're done.
mainDescribe what you want in plain language; Build Agent proposes the entities, roles, and logic — no forms to click through.
It builds real Fluent metadata objects in your app's scope — not a disposable prototype you throw away later.
It generates the app and its ATF tests in the same session — which is what we'll build on next.
It reads your app's existing metadata, explains what a flow actually does in plain language, and proposes concrete fixes — grounded in your instance, not a generic answer.
OPTIONAL · FOR ARCHITECTS
// the Fluent code Build Agent writes under the hood export const MaintenanceRequest = Table({ label: 'Maintenance Request', fields: { equipment: Reference('equipment') } });
11:30 – 12:00
Back soon to re-anchor
Done
Done
PR, merge, publish
ReleaseOps, deploy
Your app is built and tested. Next: source control and release.
1:45 – 2:00
now-sdk build / now-sdk install work identically, on- or off-platform.Git does branching, review, and line-by-line conflict resolution. Update sets cannot.
3:00 – 3:15 · Back for ReleaseOps
The payload container. Promote an Update Set into one, then mark it "Ready to Assess" — the assessment playbook (Instance Scan → Move to Test → Run ATF) runs against it.
The record that moves a cleared Deployment Request to production — On Demand (immediately) or Scheduled (batched at a datetime). Lives on the ReleaseOps controller environment, typically production.
Two paths get you here: promote an Update Set into a Deployment Request (this lab), or trigger it from Git via the CI/CD REST APIs with an approval gate (see choose-your-own-adventure).
Static policy check, on the dev instance
Assessment begins
Functional coverage
Cleared for release
LAB: CREATE A DEPLOYMENT REQUEST, MARK "READY TO ASSESS," WATCH IT RUN
Rerun the assessment as-is.
Assessment is invalidated — the Deployment Request returns to Draft and needs a new payload.
Manual approval to proceed.
3:45 – 4:00
More metadata types, transform/sync from UI builders
Test Agent triage, Cloud Runner, regression suites
now-sdk cicd, Git-triggered pipelines, approval gates
Connect Figma/Miro via Connect Hub, build straight from the spec
Rules that change language/terminology in Build Agent output
Deployment Request, assessment playbook, Ready for Deploy
Explore whichever track interests you most — we're here for questions. Head to the exercise for ideas to get started.
QUESTIONS? PING Ashwin Patti, Shelby Cohen.
Full SDLC guide, reference, and troubleshooting:
servicenow.github.io/sdk/guides/sdlc-guide
BONUS SLIDE — PENDING/ROADMAP CONTENT PER LEGAL (SLIDE 2). PRESENTER TO FILL IN BEFORE SESSION.
BONUS SLIDE — PENDING/ROADMAP CONTENT PER LEGAL (SLIDE 2). PRESENTER TO FILL IN BEFORE SESSION.
BONUS SLIDE — PENDING/ROADMAP CONTENT PER LEGAL (SLIDE 2). PRESENTER TO FILL IN BEFORE SESSION.
now-sdk init --from).BONUS SLIDE — PENDING/ROADMAP CONTENT PER LEGAL (SLIDE 2). PRESENTER TO FILL IN BEFORE SESSION.
Admin configures the Figma/Miro app
Admin approves it
Enable MCP servers (MCP tab)
Reads specs directly from the tool
One-time admin setup (Connect Hub + AI Control Tower approval), then any developer turns it on for themselves in their own Build Agent settings.
BONUS SLIDE — PENDING/ROADMAP CONTENT PER LEGAL (SLIDE 2). PRESENTER TO FILL IN BEFORE SESSION.
Everything on this slide is directional, not a commitment — see the safe harbor statement on slide 2.
BONUS SLIDE — PENDING/ROADMAP CONTENT PER LEGAL (SLIDE 2). PRESENTER TO FILL IN BEFORE SESSION.