NYS ITS · Enterprise Agreements · Interactive Reference
ITS EA Learning Hub
Process Flow
Invoice Approval · How the Money Gets Released
OK TO PAY
This is the 6-step journey from a signed LOI all the way to funds being paid to ThunderCat. Click each step to understand exactly what's happening and why.
👆 Click any step to expand the explanation
This is where everything starts. The client agency — say, OCFS or DOL — decides they need software. Their fiscal office writes up a Letter of Intent (LOI) and has someone with real budget authority sign it.

That signed LOI is what gives ITS legal permission to start spending money on their behalf. Without it, nothing can move forward — not the PRF, not the PO, nothing.
The rule: No signed LOI = no order. Full stop. If the LOI is unsigned, missing a SPID, or has vague SKU descriptions — send it back before you do anything else. It's much easier to fix before procurement starts than after.
The SPID (Statewide Project ID) is the agency's dedicated budget account for this project. Think of it like a jar of money earmarked specifically for this software. Before ITS can submit anything, the agency's fiscal office needs to confirm three things:

1. The SPID exists in the Statewide Financial System (SFS) — typos happen.
2. It's still active for the current fiscal year — SPIDs can expire.
3. It has enough balance to cover what the LOI is authorizing.
Important: You don't create the SPID — the agency does. Your job is only to verify it before anything moves. Always get written confirmation from the agency's fiscal contact, not just a verbal "yeah it's fine."
The Purchase Requisition Form (PRF) is the official internal request that kicks off procurement. Program staff — whoever manages the agency's Salesforce deployment day-to-day — submits it. It references the SPID and the LOI.

Once submitted, it goes into a queue and the VSMO EA Team (Vendor and Supply Management Office — the team that handles Enterprise Agreements) picks it up. Once the PRF is in, it's out of the program staff's hands.
Once a PRF is submitted by program staff, it's out of their hands. The VSMO EA Team takes it from there. You don't need to track it until an OK to Pay request lands in your inbox.
VSMO takes the PRF and creates a formal Purchase Requisition (PR) in SFS. From there, a Purchase Order (PO) gets issued to the reseller — for Salesforce that's ThunderCat.

ThunderCat receives the PO, provisions the licenses, and sends an invoice back to ITS. By the time an invoice arrives, two things have already been verified automatically:

SKUs are on the OGS contract — ThunderCat won't quote anything that isn't
SPID was confirmed funded — the PRF couldn't have been submitted otherwise
By the time you see an OK to Pay request, the procurement validation work is already done. You're approving payment for something that's already been ordered and received.
When an invoice comes in, Accounts Payable (AP) looks at the PO in SFS and finds the divisional contact for the SPID's budget allocation. For Salesforce, that division is DTO — the Digital Transformation Office — and that means you.

This is why you get the OK to Pay emails. It's not because you submitted the PRF (that was Tim Carroll's team). It's because you're the divisional contact responsible for the Salesforce SPID's funding. The approval authority lives with the division that holds the budget.
In plain English: AP is asking "did we actually get what we ordered and is it okay to pay the bill?" You're the person ITS has designated to answer that for Salesforce purchases.
You confirm the invoice is legitimate by emailing the designated approver (your division's fiscal contact) requesting they approve OK to Pay to Accounts Payable.

Your email needs two things:
1. A link to the PRF — so there's a paper trail connecting this invoice to the original request.
2. A brief narrative — one or two sentences explaining who submitted the original request and what it was for (e.g., "HCR Salesforce Service Cloud licenses for their case management system").
Always CC the relevant stakeholders — your manager, the contract lead, and finance. This keeps the right people in the loop and creates a clear email trail for audit purposes.
Core Concept
Statewide Project ID — How Government Money Is Tracked
WHAT IS A SPID?
A SPID is the budget bucket you confirm every single time before anything moves. Understanding it clearly means you'll never miss the key questions to ask.
The One-Sentence Definition
A SPID (Statewide Project ID) is a unique budget account assigned to a specific project at a specific agency. It's how New York State government tracks and authorizes spending. Think of it like a dedicated spending jar — before ITS can buy anything for an agency, that agency must point to a funded SPID and say "charge it here."
👆 Click each component to understand it
Every project that New York State tracks financially gets its own unique SPID number. For the Salesforce EA, each agency has their own separate number:

OCFS → SPID 7458  |  DOL → SPID 7459  |  HCR → SPID 7463
OCM → SPID 7460  |  PARKS → SPID 7461  |  AGM → SPID 7462  |  OASAS → SPID 7457
ITS COE → SPID 7578 (completely separate — this is Joy's budget for COE overhead)
When you see a SPID on an LOI, you can look it up in SFS (the Statewide Financial System) to verify it exists and check its balance. The number itself is just the lookup key.
Each SPID belongs to exactly one agency and covers one project. You can't mix agencies on a single SPID.

OCFS's SPID 7458 covers OCFS's Salesforce licenses — nothing else can be charged to it. This is what makes the audit trail clean: every dollar spent traces back to a specific agency's authorized project.
This is also why ITS has its own SPID (7578) for the Center of Excellence costs — it's completely separate from all the agency SPIDs. ITS's overhead doesn't get mixed into any agency's bucket.
When the agency funded the SPID, they put a dollar ceiling on it — the total budget for this project. The LOI amount the agency sends you must fit within whatever balance remains.

The tricky part: by the time you see an LOI, the agency may have already spent part of their SPID balance on something else. The remaining balance might be less than the LOI amount.
Over-authorization = red flag. If the LOI dollar amount exceeds the SPID's available balance or B1184 ceiling, stop and escalate before submitting the PRF. Processing an over-authorized LOI creates an audit problem that's very hard to undo.
A SPID can become inactive at the end of a fiscal year if the agency doesn't renew or re-fund it. A SPID that worked last year might be completely dead this year — same number, no money.

This is a common mistake: assuming a SPID is fine because it was fine before. Always confirm with the agency's fiscal contact in writing that the SPID is active for the current fiscal year — don't rely on memory or assumption.
"Active" means: the project is still open, the fiscal year hasn't ended, and there's still budget in it. You need all three, not just one.
Every SPID was created for a specific project scope — the purpose that was approved when the agency requested the budget. An agency can't use a SPID created for "grants management modernization" to pay for unrelated CRM licenses.

The scope needs to match what the LOI is purchasing. If it doesn't match, that's an audit risk.
In practice: This usually isn't a problem if the LOI is clearly for Salesforce licenses on the right project. But if something feels off — like an agency using an old SPID from a completely different initiative — flag it before proceeding.
Stop and escalate if you see any of these:
LOI has no SPID number at all
SPID is from a prior fiscal year
LOI dollar exceeds SPID balance or B1184 ceiling
Agency can't confirm the SPID is currently active
SPID belongs to a different agency than the one sending the LOI
SPID scope doesn't match what the LOI is purchasing
No B1184 authorization reference on the LOI
Agency fiscal won't confirm anything in writing
The key rule: A confirmed, active, in-scope SPID is what gives ITS legal authority to spend money on an agency's behalf. No valid SPID = no authority = no PRF, no PO, no licenses.
Intake Checklist
Letter of Intent — The Gate Before Anything Can Move
THE LOI CHECKLIST
Every field that must be on a Letter of Intent before ITS can act on it. If any box is unchecked, send it back. Click each item to understand why it matters.
The full, official agency name as it appears on procurement documents — not just "OCFS" but "Office of Children and Family Services." This matters for record keeping and ensures the right entity is being billed. Abbreviations alone aren't sufficient for formal procurement records.
This is the day-to-day contact at the agency who is responsible for the software — not the fiscal person, but the person who knows what the software is for and can confirm deployment details. ITS needs this person for the life of the engagement, especially at renewal time when you need to verify actual user counts.
Get their email too, even if the LOI only asks for name and title. You'll need it later.
The person who signs the LOI must have actual fiscal authority to authorize spending at the dollar amount on the LOI. Different dollar thresholds require different levels of authority — a $50K order might need a different signatory than a $2M order. The agency's fiscal office should know their own signing authority thresholds.
If a program manager signs an LOI for $2M but only has authority up to $500K, that LOI is invalid — even with a signature on it.
The LOI must be dated within the current fiscal period. A LOI from last year — even a perfectly filled out one — cannot be used because the fiscal authorization it references may no longer be valid. The SPID it references might be expired, the dollar amounts might be wrong for the new contract year, and the agency's budget picture may have changed entirely.
If an agency tries to reuse an old LOI, ask them to issue a new one. Takes a few days and saves a lot of headache later.
This is the budget bucket the spending gets charged to. The SPID must be:

Active — not expired from a prior fiscal year
Funded — has actual budget dollars in it
Sufficient — balance covers the LOI amount
Scoped correctly — the project it covers matches the purchase
The SPID is the single most important piece of information on the LOI. No valid SPID = no order.
The exact dollar figure the agency is authorizing. This must be sufficient to cover the full cost of what they're ordering — including any year-over-year pricing uplift (typically 9% for Salesforce) and any COE overhead allocation on top.
Watch for "close enough" amounts. If the LOI says $1.8M but the actual cost is $1.85M, that $50K gap needs to be resolved before the PRF goes in. The agency needs to issue a new LOI for the correct amount.
The LOI must specify which year(s) of the 3-year EA contract this authorization covers. A Y1-only LOI can't be used to process Y2 renewals. Some agencies authorize all three years upfront with escalating amounts; others authorize year by year.
If an agency wants to authorize multiple years at once, each year's amount needs to be listed separately — you can't just say "covers the whole contract" with one lump sum.
The B1184 is the master contract authorization document that covers the entire Salesforce EA. Every LOI needs to reference it (B1184 165-2024) to create the legal link between the agency's specific purchase and the overarching contract. Without this reference, the LOI floats unattached to the contract vehicle.
Think of it like a purchase order that needs to reference the contract number it's being charged to. The B1184 is that contract number.
Vague descriptions like "Salesforce licenses" or "Service Cloud" are not sufficient. The LOI needs the actual SKU codes from the OGS contract — things like "200013353" (Public Sector Foundation - Advanced - Unlimited Edition). The SKU code is what gets put on the PO and determines exactly what ThunderCat delivers.
If an agency gives you product names without SKU codes, send it back. You can't submit a PRF without knowing the exact SKUs being ordered.
Every SKU listed needs a quantity next to it. "Service Cloud Unlimited, 500 users" — not just "Service Cloud Unlimited." The quantities are what drive the dollar amount, and they need to be internally consistent: if 500 users at $1,287.82 each equals $643,910 but the LOI says $700,000, something doesn't add up.
Always do a quick sanity check: quantity × unit price = authorized amount. If it doesn't match, flag it before you go any further.
Not every Salesforce product is on the OGS contract. Before submitting a PRF, verify each SKU on the LOI against the approved OGS SKU list. For the Salesforce EA (C000898), 14 SKUs have been identified as NOT on the OGS contract.
If an agency requests an off-contract SKU: You can't just order it. A separate procurement action is required. Don't let it slip through — this is an audit finding waiting to happen.
The Enterprise Agreement (EA) covers software licensing only. If an agency wants implementation services, configuration, training delivery, or consulting, those are completely separate and need to go through a different procurement vehicle — PBITS or Discretionary MWBE.
Agencies sometimes try to bundle services into an LOI because it's easier for them. Catch it here and redirect them to the right path before it becomes a procurement compliance issue.
The LOI must have an actual signature from someone with fiscal authority at the right dollar threshold. Both wet signatures (physical pen) and electronic signatures (DocuSign, etc.) are acceptable. What's not acceptable is a blank signature line, initials where a full signature belongs, or a signature from someone who doesn't have authority for that dollar amount.
Unsigned LOIs cannot be processed. Period. This isn't a technicality — the signature is what creates the legal authorization. Without it, ITS has no authorization to spend the agency's money.
The LOI PDF must be readable — every field, every number, the signature. Blurry phone photos of documents, corrupted email attachments, or scans with cut-off text are not acceptable.
If you can't read every number clearly, request a clean version from the agency before logging it in your tracker. Don't guess at amounts — a misread number becomes your error if it gets processed wrong. (This happened with OCFS/CCAP LOI 2025-88 — always request a cleaner copy before moving forward.)
Every LOI gets logged in the LOI_Tracker.xlsx the moment it arrives — even if it's incomplete, even if it's going to be sent back. Logging it immediately creates a record that you received it and gives you a place to note its status.
Fields to log: LOI number, agency, date received, SPID, dollar amount, year(s) covered, status (complete / returned for corrections / processing). Also flag over-authorizations and unreadable files directly in the tracker.
Each agency's B1184 authorization sets a ceiling for how much they can spend in each contract year. The LOI dollar amount must not exceed that ceiling. If an agency sends an LOI for $3M but their B1184 Y2 authorization is only $2.1M, that's an over-authorization.
Don't process over-authorizations. Flag them in the tracker immediately, notify the agency, and wait for them to either reduce the LOI amount or get their B1184 ceiling updated before proceeding.
⚠️
If ANY item is unchecked — the LOI is not ready to process.
Send it back to the agency with a clear, specific list of what's missing. Do not start the PRF until every box is checked. An incomplete LOI that gets processed creates downstream problems that are painful and time-consuming to fix.
Full Lifecycle
Enterprise Agreement · Agency Need to Provisioned Licenses
HOW AN EA WORKS
The complete end-to-end journey of an Enterprise Agreement. From the moment an agency identifies a need, all the way to active licenses and ongoing management.
An agency program team decides they need software — maybe they're modernizing a case management system, expanding to a new Salesforce product, or adding users to an existing deployment. They reach out to ITS.

At this stage it's all conversation — what do they need, how many users, which products. No money has moved, no forms have been filled out. This is the scoping phase.
Your role here: help the agency identify the right SKUs from the OGS-approved list. Make sure what they want is actually available on the contract before they go get budget approval for it.
The agency provides a signed Letter of Intent — the formal document that authorizes ITS to spend money on their behalf. It includes the SPID, dollar amount, specific SKUs and quantities, and a signature from someone with fiscal authority.

This is the single most important gate in the entire process. Everything that comes after depends on having a complete, valid LOI.
Use your LOI checklist (the LOI tab in this guide) to verify every field before accepting it. If anything is missing, send it back immediately with a specific list of what needs to be fixed.
With a valid LOI in hand, ITS Finance submits the Purchase Requisition Form (PRF). This is the internal document that formally requests procurement to issue a purchase order.

Before the PRF goes in, three validations happen:
1. SPID is confirmed funded and active
2. SKUs are verified against the OGS contract
3. Dollar amounts match the LOI authorization
The PRF is queued to the VSMO EA Team, who processes it and issues the PO. Once the PRF is submitted, it's out of ITS Finance's hands — VSMO takes it from there.
VSMO issues a Purchase Order to ThunderCat (the reseller for the Salesforce EA). ThunderCat receives the PO, provisions the licenses in Salesforce, and the agency's users get access.

The subscription start date is triggered by the PO date — this is important to track because the annual renewal date (September 1st for the Salesforce EA) is tied to when the contract started.
After the PO goes out, ThunderCat will invoice ITS — which triggers the OK to Pay process you learned about in the first tab.
During the active contract term, ITS Finance handles all contract administration. Agencies don't need to submit new PRFs for renewals — that's ITS's responsibility.

What agencies do need to provide at renewal time: verification of actual deployment quantities (how many users are actually using the software) and confirmation that their SPID is still funded for the new year.
This is a key message to communicate to new agencies: "You don't have to manage the renewal paperwork — ITS does that. What we'll need from you each year is user count confirmation and SPID verification before September 1st."
Before each contract anniversary (September 1st), ITS processes the renewal. This involves confirming actual user counts with each agency, checking for any SKU changes, verifying SPIDs are still funded, and getting updated LOIs if amounts have changed.

The 3-year EA covers Year 1 (Sep 2025 – Aug 2026), Year 2 (Sep 2026 – Aug 2027), and Year 3 (Sep 2027 – Aug 2028). This cycle happens at the start of each year.
Start 8 weeks early. August 1st is your mental start date for the September 1st renewal. Agencies can be slow to respond, and you need time to process everything before the contract anniversary.
Onboarding Checklist
First Time on the EA? Do This in Order.
NEW AGENCY INTAKE
Three phases from first contact to active licenses. Click each step to understand what you're doing and why it matters.
Phase 1
Before the LOI — Discovery and Scoping
Before spending time scoping a project, confirm that this agency is eligible to use the EA. Is it a NYS agency? Are they in scope for this specific EA vehicle? Some EAs have restrictions on which agencies or programs can participate.
This conversation takes five minutes now and saves potentially weeks of work if the answer is "no." Ask before you scope.
Get the name, title, email address, and phone number of the agency person who is responsible for this software day-to-day. This isn't the fiscal person (who signs the LOI) — this is the program staff person who knows what the software does, how many users they have, and what they actually need.
You'll be contacting this person at every annual renewal to verify user counts. Get their contact info now and keep it updated in your master tracking file.
Work with the agency to identify exactly what they need: which SKUs (using the actual codes from the OGS-approved list) and how many of each. Cross-check every SKU against the OGS list — the 14 flagged SKUs cannot be ordered without separate procurement action.
This is where you can add real value. Agencies often don't know the SKU names or codes. Help them understand what they're buying and make sure it's actually available on the contract before they go get budget approval.
Ask the agency to confirm their SPID is active, funded, and has sufficient balance to cover what they're ordering. This should happen before they write the LOI — so they don't write an LOI for $2M when their SPID only has $1.5M in it.
No funded SPID = full stop. Do not proceed with intake, scoping, or anything else until the agency has a valid, funded SPID confirmed in writing.
Phase 2
LOI and Procurement — The Gate
When the LOI arrives, run through every item on the LOI checklist (see the LOI tab) before doing anything with it. If any field is missing, incomplete, or unclear — send it back with a specific list of what needs to be fixed.
Don't log it as "received and ready" until it's actually complete. An incomplete LOI in your tracker creates confusion later when you're trying to figure out the status.
The moment the LOI arrives — even if it's obviously incomplete — log it in LOI_Tracker.xlsx. Record: LOI number, agency, date received, SPID, dollar amount, year(s) covered, and current status.
Logging immediately creates a paper trail for when the LOI arrived. If there's ever a question about timing or authorization, your tracker is your proof. "I received it on this date, it was incomplete, I returned it on this date for these reasons."
Before submitting the PRF, confirm the LOI dollar amount doesn't exceed the agency's B1184 authorization ceiling for that year. Flag over-authorizations in the tracker and do not proceed until the discrepancy is resolved.
Over-authorization is not a small paperwork error — it's a procurement compliance issue. If you process an over-authorized LOI, you've spent more than was authorized and that creates an audit finding.
With a validated, complete LOI, submit the PRF to ITS Finance. The PRF needs: the agency name, SPID, specific SKUs and quantities, dollar amount, LOI reference number, and the B1184 contract reference.
Record the PRF number assigned by the system. This is your reference number for tracking the order and for future OK to Pay approvals — it's what connects the invoice to the original request.
Phase 3
After the Order — Onboarding Complete
Once VSMO processes the PRF, verify with ITS Finance that the PO went to ThunderCat. Get the PO number and confirm the subscription start date is what the agency expected. Then confirm with the agency that their users actually have access.
Don't assume everything worked — check with the agency. Provisioning issues happen. Better to catch them the day of than three weeks later when someone files a help desk ticket.
Update the main tracking spreadsheet with the new agency's data: SPID, actual Y1 disbursement, and LOI amounts for Y2/Y3 if known. Make sure all formulas are dynamic — no hardcoded numbers that will need manual updating every year.
Hardcoded numbers in spreadsheets are how errors compound over years. Use =SUM() formulas so totals update automatically when individual amounts change.
Tell the agency what to expect each year: ITS will reach out before September 1st to verify their actual user counts and confirm their SPID is still funded. They don't need to submit renewal PRFs — ITS handles that. What they need to do is respond promptly when ITS asks for information.
Setting this expectation upfront means you're not chasing people down in August. It also helps agencies plan their budget approval process so their SPID is funded in time for the renewal.
Annual Checklist
Do This Every Year for Every Active Agency Before September 1st
ANNUAL RENEWAL
ITS owns the renewal process — agencies don't submit new PRFs. But these 7 steps still need to happen every year, in order, before the contract anniversary.
Contact each agency's program contact and ask them to confirm their actual user counts per SKU. What's currently deployed in their Salesforce environment may be different from what was originally ordered — users leave, programs expand, roles change.

You need the real deployed numbers, not the numbers from last year's LOI, before you can process the renewal at the correct amounts.
Don't rely on your records alone. Always ask the agency to confirm directly. A mismatch between your numbers and their actual deployment becomes a problem at audit time.
Ask the agency to confirm in writing that their SPID has budget allocated for the upcoming contract year. A lapsed or unfunded SPID blocks the renewal entirely — you can't process a PO without a funded SPID.

Agency budget cycles vary. Some agencies have their next year's SPID funded by July; others don't finalize budgets until August or September. Know which agencies tend to be slow and follow up with them earlier.
If a SPID isn't funded by 6 weeks out (mid-August), escalate immediately. A late renewal risks a gap in licensing — even one day without active licenses can disrupt agency operations and creates contract complications.
Ask the agency if they want to make any changes: adding users, dropping a SKU they don't use anymore, upgrading to a different tier, or adding a new product. Any changes need to be:

1. Scoped to the correct SKU codes (from the OGS-approved list)
2. Reflected in an updated LOI before the renewal processes
3. Priced correctly at the Y2 or Y3 rate (which includes the annual uplift)
Changes that aren't captured in the LOI before renewal are very hard to add retroactively. Get the scope locked down at this step.
If anything changed from last year — different SKUs, different quantities, different dollar amounts — a new signed LOI is required. Use the same LOI checklist as the original. All 16 fields, properly signed, legible.

If nothing changed (same SKUs, same quantities, same amounts), some agencies can use their existing multi-year LOI if it explicitly covers Year 2 or Year 3. Verify this before asking them to issue a new one unnecessarily.
Even if amounts are "the same," remember that Year 2 prices typically include a 9% annual uplift. The dollar amounts are almost never identical year over year — always recalculate.
With confirmed quantities, a valid SPID, and an updated LOI in hand, submit the renewal PRF to ITS Finance. Include: confirmed user quantities, SPID, updated LOI reference number, and which contract year this renewal covers (Y2 or Y3).
Record the PRF number. This ties every future invoice and OK to Pay approval back to this renewal. You'll need it when AP sends you an OK to Pay request for the renewal invoices.
After the renewal PRF is processed and the PO goes to ThunderCat, confirm two things:

1. The renewal PO was dispatched to ThunderCat
2. Licenses carry over without a gap in coverage

Even a single day without active licenses can disrupt agency operations — users can't log in, ongoing processes stop, and it creates a contract issue that's complicated to fix.
Call or email ThunderCat directly to confirm license continuity. Don't rely solely on system notifications. A quick confirmation email is your proof that continuity was ensured.
After the renewal processes successfully:

1. Update the agency's Y2/Y3 amounts in Salesforce-Current.xlsx — confirm all denominators recalculate dynamically (no hardcoding)
2. File the signed renewal LOI in the project folder
3. Log the renewed LOI in LOI_Tracker.xlsx with the renewal date and new amounts
The master file is your source of truth. If it doesn't reflect the renewal, the COE allocation calculations for the new year will be wrong. Update it the same day the renewal confirms.
📅
Contract anniversary = September 1st every year
Start the process August 1st at the latest. If any agency's SPID isn't confirmed funded by mid-August, escalate immediately. Late renewals risk license gaps that are painful to fix and create contract compliance issues.
Proactive Protocol
How to Spot Net-New Salesforce License Purchases
Agency Watch
This isn't reactive — it's proactive. The goal is to know an agency is about to buy before the PRF hits, so you can flag whether they have an implementation contract in place. Licenses without implementation = paying for licenses sitting on a shelf.
The Core Problem
Agencies sometimes buy Salesforce licenses before their implementation contract is in place. Licenses are ready in 1–2 weeks. Implementation contracts take months. Result: the agency is paying for licenses they can't yet use. "We need to save them from themselves." — Chris Gorman

The Two Signals to Watch

The PRF system is your earliest official signal that an agency is purchasing. A new PRF for a net-new agency means licenses are about to be ordered.

What to do:
• Check the PRF system at least once a week
• Note the agency, SKU, and dollar amount
• Ask: does this agency already have an implementation contract?
Where to look: PRF / BOSS SharePoint → filter by Salesforce
Shannon Cibote's team handles implementation contracts. If a new agency appears in a Salesforce IDIQ solicitation but doesn't yet have licenses — that's your early warning signal that an LOI and PRF are likely coming soon.

What to do:
• Monitor the Monday Salesforce IDIQ meeting
• New agency name → check SPID + LOI sheets
• No Salesforce licenses yet? → watch for incoming PRF
Where to look: Shannon Cibote's team — Monday Salesforce IDIQ meetings

When You Spot a Net-New Agency

🔍
Spot
New PRF for a net-new agency appears in the system
🚩
Flag
No implementation contract? Reach out before the licenses arrive
📋
Log
Note it for Chris. This is what he wants tracked.

Current Agency Status on the EA

✓ OCFS
SPID 7458 · Active
✓ DOL
SPID 7459 · Active
✓ OCM
Active
✓ Parks
Active
✓ AGM
Active
✓ HCR
SPID 7463 · Active
✓ ITS COE
SPID 7578 · Separate

👁 Watch Right Now

⚠️
DCJS
No licenses yet
⚠️
DMV
No licenses yet
⚠️
Veterans
No licenses yet
👀
OGS
May join soon
👀
Any new agency
Watch Signal 2
Until an auto-alert is built: Check the PRF system every Monday morning. That's the protocol. Source: Salesforce Procurement & Contracting Overview · May 2026 · Chris Gorman guidance
EA Essentials · Read Aloud
Core Knowledge — Click any section, then use your browser's Read Aloud feature
Study Library
Money flow, procurement workflow, ThunderCat issues, and open items — the core knowledge for your day-to-day EA work. Open any accordion and listen while you work.
NYS ITS · EA Study Library
📚 EA Essentials
Core knowledge for your day-to-day work — money flow, procurement workflow, and ThunderCat quote watch items. Open any section and use Edge → Read Aloud to listen.
🔊 Edge → right-click → Read Aloud
Everything you do — every LOI you review, every SPID you validate, every disbursement you check — is about making sure money moves correctly from agency budgets to the vendor through the right channels. This tab explains how that works from the ground up.
🏛️
How agency money flows to a vendor
The six-step journey every Salesforce dollar takes
Core

NYS ITS does not pay for Salesforce out of its own pocket. Each agency that uses Salesforce pays for its own licenses. ITS is the middleman — you run the contract so agencies don't each have to negotiate separately.

1
Agency decides they want Salesforce licenses
A program team identifies a need — new users, new product, new agency joining the platform.
2
Fiscal office funds a SPID in SFS
The agency's own fiscal team creates a line item (SPID) in the Statewide Financial System. This is the earmarked money. You do not create SPIDs — you verify them.
3
Agency sends ITS a signed LOI
Letter of Intent: "We want X licenses, here is our SPID and how much we're committing." All 16 checklist items must be present before you act on it.
4
ITS submits PRF → VSMO issues PO
The Purchase Requisition Form kicks off procurement. VSMO converts it into a Purchase Order sent to ThunderCat. Licenses are provisioned.
5
ThunderCat invoices ITS
After delivering the licenses, ThunderCat sends an invoice. Accounts Payable routes an OK to Pay request to you (the DTO divisional contact for the Salesforce SPID).
6
You approve → SPID funds disbursed
You confirm the invoice matches the PO, email Suhail (AP) with PRF link + narrative, CC Chris/Joe/Azim. Agency SPID funds are released to ThunderCat through SFS.
🪣
What is a SPID and who creates it?
Statewide Project ID — the labeled envelope in the agency's budget
Core

A SPID is a unique budget account assigned to a specific project at a specific agency. Think of it like a labeled jar of money — before ITS can buy anything for an agency, that agency must point to a funded SPID and say "charge it here."

Critical rule: You do NOT create SPIDs. The agency's fiscal office creates them in SFS. Your job is to verify the SPID exists and is funded — not to create it. If there's no SPID, or the SPID doesn't have enough money, procurement cannot proceed.

The five things to verify about any SPID before moving forward:

CheckWhat you're confirming
ExistsSPID number is real and in SFS — typos happen
ActiveNot expired from a prior fiscal year — same number, no money
FundedEnough balance to cover the LOI amount
ScopedCreated for this purpose — not a leftover from a different project
Right agencySPID belongs to the agency sending the LOI
📊
The seven agency SPIDs — your contract
C000898 · ThunderCat · Y1 actuals and Y2/Y3 LOI amounts
Reference
AgencySPIDY1 ActualY2 LOIY3 LOI
OCFS7458$2,039,868$3,031,832$3,242,757
DOL7459$1,846,275$2,190,290$2,387,416
HCR7463$1,179,733$770,666 ⚠$2,316,674
OCM7460$274,768$412,726$449,871
PARKS7461$270,965$214,872$234,210
AGM7462$70,071$109,872$119,760
OASAS7457$359,729$66,192$72,149
ITS COE7578$494,816$539,349$587,891
⚠️ HCR Y2 flagged: $770,666 does not match the B1184 Y2 authorization of $2,125,389. Do not use HCR's Y2 number in any calculation until this discrepancy is resolved.
🍽️
The COE formula — the restaurant tab analogy
How ITS overhead gets split proportionally across all seven agencies
Most Important

ITS runs the Salesforce Center of Excellence (COE) — the infrastructure, expertise, and management layer that makes one contract work for all seven agencies. That costs money, and it lives in SPID 7578, completely separate from all agency SPIDs.

The COE cost gets layered on top of each agency's licensing cost. Think of it like seven friends at a restaurant: everyone ordered their own meals (agency licensing), but the table also ordered a shared appetizer platter (COE overhead). Everyone chips in proportionally based on how much their own meal cost.

Agency COE Share = (Agency Licensing ÷ Client Pool) × COE Bucket
Where Client Pool = sum of all 7 agency licensing amounts for that year
Sanity check: all 7 agency COE shares must add up to the COE Bucket exactly
YearCOE Bucket (SPID 7578)Client Pool (all 7 agencies)Uplift
Y1$494,815.91$6,041,408.10
Y2$539,349.34$6,796,450.38+9% YOY
Y3$587,890.78$7,233,564.78+9% YOY
The COE cost is always on top of the licensing cost — never baked in. Agencies must not be double-charged. The COE is ITS's overhead; the licensing is what the agency pays for their own users.
📜
What is the B1184 and why does it matter?
B1184 165-2024 — the master budget authorization for the entire 3-year EA
Core

B1184 165-2024 is the master contract authorization that covers the entire three-year Salesforce EA. Think of it as the ceiling — the maximum total that can be spent across all agencies and all three years combined.

Your job includes tracking the drawdown — how much of that B1184 authorization has been consumed as each year's POs go through. Every time a PO is issued, that amount draws down from the B1184 ceiling.

Every LOI must reference B1184 165-2024 to create the legal link between an agency's specific purchase and the overarching contract vehicle. Without this reference, the LOI floats unattached.
If any LOI dollar amount exceeds the agency's B1184 ceiling for that year, that is an over-authorization. Stop, flag it, and do not process the PRF. Over-authorization is a procurement compliance issue — not a paperwork error.

Contract years: Y1 Sep 2025 – Aug 31 2026  ·  Y2 Sep 2026 – Aug 31 2027  ·  Y3 Sep 2027 – Aug 31 2028

This is the step-by-step journey every Salesforce license purchase takes — from the moment an agency says "we want licenses" to the moment the vendor gets paid. Knowing this cold means you always know whose court the ball is in.
📄
Step 1 — LOI: The gate before anything can move
Validate all 16 items before accepting. If anything is missing, send it back.
Gate 1

The LOI is the agency's formal statement that they want to buy licenses and they have the money to do it. When an LOI arrives, run through every item on the checklist before doing anything else. If anything is missing, send it back with a specific list of what's needed.

🏛️ Agency Identity
1Full legal agency name — not just abbreviations
2Program contact name, title, email, phone
3Authorized fiscal signatory identified and has authority at the right dollar threshold
4Date of LOI is current fiscal period — stale LOIs cannot be processed
💰 Funding Details
5SPID number is present and verified active + funded in SFS
6Dollar amount matches the SPID balance and covers full cost including any uplift
7Contract year(s) covered are specified — Y1, Y2, Y3 separately
8B1184 authorization reference (B1184 165-2024) is cited
🖥️ Software Scope
9Specific SKU codes listed — not just product names
10Quantities per SKU — internally consistent with the dollar amount
11All SKUs are on the OGS contract — none of the 14 flagged off-contract SKUs
12No services SKUs included — EA covers licensing only
✍️ Signatures & Admin
13Authorized signature — wet or e-sign, right authority level
14File is legible and machine-readable — no blurry scans
15Logged in LOI Tracker immediately — even if incomplete
16LOI dollar amount does not exceed the B1184 ceiling for that year
If ANY item is unchecked — the LOI is not ready to process. Send it back with a clear, specific list of what's missing. Do not start the PRF until every box is checked.
📝
Step 2 — PRF: Kicking off procurement
Purchase Requisition Form goes to VSMO EA Team — out of your hands once submitted
Gate 2

Once the LOI is validated (all 16 items checked), you — or Dan Currier/Tim Carroll, who handle dedicated Salesforce PRF submissions — submit a PRF to the VSMO EA Team.

The PRF includes: agency name, SPID, specific SKUs and quantities, dollar amount, LOI reference number, and the B1184 contract reference. Record the PRF number assigned by the system — this ties everything together for the OK to Pay step.

Once the PRF is submitted, it's out of your hands. VSMO takes it from there. You don't need to track it again until an OK to Pay request lands in your inbox.
📦
Step 3 — PO: The official commitment
VSMO issues the Purchase Order to ThunderCat — licenses are provisioned
Gate 3

VSMO takes the PRF and creates a formal Purchase Requisition (PR) in SFS. From there, a Purchase Order (PO) gets issued to ThunderCat. ThunderCat receives the PO, provisions the licenses, and the agency's users get access.

The PO must match the LOI exactly — same SKUs, same quantities, same dollar amounts. If anything doesn't match, flag it immediately before any payment is approved.

The PO also draws down from the B1184 authorization by the dollar amount. Track this drawdown — if cumulative spend approaches the ceiling, flag it before submitting more PRFs.

Step 4 — OK to Pay: Your approval closes the loop
You receive it as DTO divisional contact · Email Suhail with PRF link + narrative
Gate 4

After ThunderCat delivers and invoices, Accounts Payable routes the OK to Pay request to you — because you're the DTO divisional contact for the Salesforce SPID. This is not because you submitted the PRF (Dan/Tim did that). It's because you hold the budget authority for the division.

Before approving, confirm: the invoice matches the PO, licenses were actually delivered, amounts are correct.

Your approval email needs two things:

1. A link to the PRF — paper trail connecting this invoice to the original request.

2. A brief narrative — e.g., "HCR Salesforce Service Cloud licenses for their case management system." One or two sentences.

Always CC: Chris Robinson, Joe LoBiondo, Azim Ahmed. Send to: Suhail (Syed Suhail Ahmad, AP).
👥
Roles and contacts
Who does what in the procurement workflow
Reference
PersonRole in workflowLocation
You (Joy)Validate LOIs, receive OK to Pay requests, validate disbursements
Dan CurrierDedicated Salesforce PRF submissions
Tim CarrollDedicated Salesforce PRF submissions
VSMO EA TeamConverts PRFs into Purchase Orders
Suhail (AP)OK to Pay recipient, fund disbursements
Azim AhmedProcurement coordination, CC on approvals
Joe LoBiondoProject Manager, day-to-day contactBuilding 5, 4th Floor
Chris RobinsonYour manager, escalations, approvalsSwan St Core 2, Rm 121
📅
Y2 renewal checklist — lightning fast mode
Y1 ends Aug 31 2026 · Start this process August 1st at the latest
⏰ Urgent
1
Receive Y2 quote from ThunderCat
Confirm quote is from Ariel (Salesforce) via ThunderCat. Check pricing against C000898 Attachment 6. Brief Chris immediately on any pricing variances.
2
Get Chris's sign-off
Present Y2 total and per-agency breakdown. Note any SKU changes. Confirm total EA value is within the 3-year committed pricing.
3
Notify all 7 agencies
Each agency confirms their Y2 seat count and SPID funding. Resolve HCR Y2 discrepancy before sending HCR's notification. Chase non-responders after 5 business days.
4
Collect signed LOIs from all 7 agencies
Run each through the 16-item checklist. LOI must reflect any quantity changes plus the Y2 price (which includes ~9% uplift from Y1). Do not accept unchanged Y1 dollar amounts.
5
Submit renewal PRFs for all agencies
Once all LOIs are validated. Include PRF number in your renewal tracking file.
6
Confirm PO dispatch and license continuity
Call or email ThunderCat directly. Even one day without active licenses disrupts agency operations and creates a contract complication. Don't rely on system notifications alone.
7
Update master tracking file
Update Y2 actuals in Salesforce-Current.xlsx. Confirm all denominators are dynamic (no hardcoding). COE allocation calculations for Y2 depend on this being current.
Start August 1st. Agencies can be slow. If any agency's SPID isn't confirmed funded by mid-August, escalate to Chris immediately. Late renewals risk license gaps.
ThunderCat is ITS's reseller for Salesforce under contract C000898. Your job is to check every quote against the master contract — specifically Attachment 6, which is the official pricing schedule for all three years. Here are the specific issues found in the Y2 quote analysis.
Your reference point: Contract C000898, Attachment 6 lists every SKU, the contracted unit price for Y1/Y2/Y3, and authorized statewide quantities. If ThunderCat quotes higher than Attachment 6 for any SKU, that is a contract violation. The contract ceiling is the maximum you should ever pay.
1
BRE — Business Rules Engine billed at $0 in contract; do not accept shortfall invoices
✓ Contract Clear

Business Rules Engine (BRE) is a Salesforce feature that enables automated workflows. The question arose whether ITS would receive "shortfall invoices" for BRE usage above a certain threshold.

ThunderCat claimed
Shortfall billing possible
Contract Attachment 6 says
$0.00 all three years

SKUs 200001621 and 200001622 show $0.00 for Y1, Y2, and Y3. This means BRE is an included entitlement — already baked into the licenses ITS purchased. ThunderCat cannot legally bill ITS separately for BRE consumption.

Ask ThunderCat to confirm in writing that no shortfall invoices will be issued for BRE. Get written confirmation before any PO is submitted.
2
Customer Community Plus — ThunderCat quoted 7–12x the contract ceiling price
🚨 Critical Violation

Customer Community Plus (SKU 200005841) allows external users — citizens, customers, partners — to log into a Salesforce portal. This is the clearest and most serious pricing violation found in the Y2 quote analysis.

ThunderCat quoted DOL — Y1
$48.26 / unit
Contract Attachment 6 — Y1
$6.54 / unit
ThunderCat quoted DOL — Y2
$85.56 / unit
Contract Attachment 6 — Y2
$7.13 / unit

ThunderCat's Y1 price is 7.4x the contract ceiling. Their Y2 price is 12x the contract ceiling. This is not an ambiguous pricing question — it is a clear overage against a published contract price.

Do not approve any PO for Customer Community Plus at ThunderCat's quoted price. Push back in writing, cite Attachment 6 SKU 200005841, and require the correct contract price be used.
3
Learning Credits — Missing entirely from Y2 quote (Quote Q135868)
⚠ Needs Clarification

Salesforce Learning Credits (SKU 200000019) allow agencies to use credits for Salesforce training. In Y1, ITS had 186,000 credits at $0.55 each ($102,300) and OASAS had 27,000 credits at $0.55 ($14,850). Neither appeared anywhere in the Y2 quote.

Contract rate (all 3 years)
$0.55 / unit
In Y2 Quote Q135868
Not included

Attachment 6 confirms SKU 200000019 is eligible at $0.55/unit for all three years. The omission from the Y2 quote could mean: (a) Y1 credits are still active and unused, (b) ThunderCat forgot to include them, or (c) they need to be separately requested.

Ask ThunderCat: Are the Y1 learning credits still active, or do they need to be renewed? If renewal is needed, request SKU 200000019 be added to the Y2 quote at $0.55/unit.
4
14 Off-Contract SKUs — Cannot be ordered without separate procurement action
🚨 Compliance Risk

The OGS contract authorizes which products can be purchased through this EA vehicle. During Y1 quote analysis, 14 SKUs were identified as NOT on the OGS contract. When DOL inquired about additional licenses, two new SKUs appeared — Customer Data Cloud Starter and Data Cloud Segmentation — that were not in DOL's original LOI.

Rule: Never let an off-contract SKU slip through as if it's fine. If a SKU doesn't appear on the OGS-approved list, a separate procurement action is required before an agency can order it. An off-contract SKU processed through this EA is an audit finding.
Cross-check every SKU against the OGS list before accepting any LOI or submitting any PRF. If a new SKU appears that wasn't in the original LOI, a new or amended LOI is required before the PRF can go in.
5
9% Annual Uplift Cap — Year-over-year price increases are capped by contract
⚠ Check Every SKU

The contract limits annual price increases to 9% year-over-year. So if a SKU cost $100 in Y1, it should not exceed $109 in Y2 or $118.81 in Y3. The Customer Community Plus pricing above is an extreme example of this being violated.

📐 Quick Uplift Checker — Is this Y2 price within the 9% cap?
When reviewing any ThunderCat quote, compare each SKU's Y2 price to its Y1 price. If the increase exceeds 9%, that is a contract violation requiring written pushback before any PO is submitted.
🔍
10-step quote review process
Open Attachment 6 alongside every new ThunderCat quote before doing anything
Checklist
Open Contract C000898, Attachment 6 alongside the quote before reviewing anything
Match every SKU in the quote to the contract SKU list — flag any that don't appear (potential off-contract item)
Compare every unit price to the contract ceiling for that year — not just a spot check, every SKU
Calculate year-over-year increase for any SKU — must not exceed 9%
Check BRE — confirm it is not being billed separately (should be $0 per Attachment 6)
Check Learning Credits — are they included? At $0.55/unit? If not, ask ThunderCat why
Check all quantities match the corresponding LOI — no additions or substitutions
Verify no services SKUs — EA covers licensing only
Flag anything that doesn't add up before submitting a PRF — never push through a questionable quote
Brief Chris on any pricing variances before proceeding — even if you think they're explainable
The mindset: ThunderCat is a business and businesses make mistakes (or sometimes shade pricing in their favor). Your job isn't to assume bad faith — it's to verify everything. The contract is your protection. If something doesn't match the contract, you have both the right and the obligation to push back.
These are the unresolved items that require action before certain procurement can proceed. Know these cold — they will come up in conversations with Chris, Joe, and ThunderCat.
🚩 Active Open Items — Must Resolve Before Proceeding
LOI 2026-247 (OCFS) — An unusually large LOI came in that doesn't match expected OCFS licensing. No description or clear status. Must be explained before any additional OCFS procurement moves forward. Estimated at $23.8M — flag for Chris immediately.
LOI 2025-88 (OCFS/CCAP) — Older LOI that may have readability issues. Email the LOI team for a cleaner source file before logging it as complete. Do not process any OCFS additional licenses until this is resolved.
HCR Y2 Discrepancy — HCR's Y2 LOI shows $770,666 but the B1184 Y2 authorization for HCR shows $2,125,389. Source of discrepancy is unknown. Do not use HCR's Y2 number in any COE calculation or renewal projection until this is verified with HCR's fiscal office.
Y2 Renewal Quote — Waiting for ThunderCat to issue the Y2 renewal quote before renewal math and agency notifications can proceed. When received, run through the full 10-step quote review before briefing Chris.
BRE Shortfall Confirmation — Need written confirmation from ThunderCat that no shortfall invoices will be issued for BRE (which is $0 in Attachment 6 for all three years).
Customer Community Plus Pricing — ThunderCat quoted DOL at 7–12x the contract ceiling. Must be pushed back in writing with Attachment 6 citation before any DOL PO is approved.
Learning Credits (SKU 200000019) — Confirm with ThunderCat whether Y1 credits are still active or whether a Y2 renewal needs to be added to the quote at $0.55/unit.
🛑
Do not process additional OCFS licenses until these two things are resolved
LOI 2026-247 explanation + LOI 2025-88 readable copy
🚩 Blocked

OCFS has requested additional licenses. Before you can process that request, two open items must be resolved in sequence:

1
Get an explanation for LOI 2026-247
This LOI is unusually large and has no description or clear procurement basis. Before any additional OCFS procurement proceeds, you need to understand what this LOI represents and whether it affects the budget headroom available for the additional licenses.
2
Get a readable copy of LOI 2025-88
The OCFS/CCAP LOI from 2025 may be unreadable. Email the LOI team and request a clean source file. You cannot process anything against an LOI you can't read in full.
3
Then proceed with the additional license request
Only after both of the above are resolved. Cross-check any new SKUs against the OGS list (14 flagged off-contract SKUs). New LOI required for any quantity changes.
How to know when an open item is actually closed
Written confirmation, logged in tracker, communicated to Chris
Guide

An open item is only closed when all three of these are true:

1. Written confirmation — you have an email or document that resolves the question. A verbal "it's fine" is not enough for procurement purposes.

2. Logged in your tracker — the resolution is noted in LOI_Tracker.xlsx or your open items log with the date and source of confirmation.

3. Communicated to Chris — your manager knows the item is resolved. Don't let resolutions sit in your inbox without a quick update.

If you can't check all three boxes, the item is still open. This protects you in audit situations — you need to be able to show what you knew, when you knew it, and what you did about it.