Written by Daniel Ashcraft — 12+ years of software development including custom LMS platforms, FERPA-compliant student data systems, and SIS integrations for K-12 and higher education.
This article discusses FERPA requirements and education data privacy based on development experience. Consult your institution's legal team for compliance-specific decisions.
For US public school districts, the main PowerSchool SIS alternatives are Infinite Campus, Skyward Qmlativ, Edupoint Synergy, Follett Aspen and, in California, Aeries. Districts can also stay on PowerSchool and harden it, or keep their own copy of the data. In every case, start with the most complete export you can get, through Data Export Manager, PowerQueries, OneRoster or Ed-Fi.
Do the export first because you need it whichever way the decision goes. A renewal negotiation goes better with it in hand, any conversion starts from it, and it shows what you would lose if the vendor relationship ended badly. Below are a comparison of the alternatives, the switching cost categories, what is established about the December 2024 breach and the lawsuits, and the export paths PowerSchool supports as of October 2026.
How do the PowerSchool alternatives compare?
The products below are the SIS platforms a US K-12 public district is most likely to shortlist, with the facts we could confirm from vendor documentation and the Ed-Fi Alliance. Feature depth, pricing and support quality are not published in a comparable form, so treat those as RFP questions. PowerSchool itself says its software supports more than 60 million students and 18,000 customers, according to the release on Bain Capital's October 2024 acquisition.
| SIS | Standards support (vendor-stated) | Ed-Fi registry entry | How data gets out | Fits when |
|---|---|---|---|---|
| PowerSchool SIS (baseline) | OneRoster via Universal Rostering plugin; Ed-Fi publishing | Data Standard v4 and v5, valid through Dec 12, 2026 | Data Export Manager, plugins with PowerQueries, Ed-Fi ODS | Staff and state reporting work well and the concern is security posture |
| Infinite Campus | 1EdTech-certified OneRoster API; CSV extracts ended 2019 | Data Standard v4, valid through Sep 16, 2026 | OneRoster API, data extract utilities | Former Tyler SIS districts, which Tyler has been moving here since 2022 |
| Skyward Qmlativ | Read-only OneRoster 1.1 API; Ed-Fi API v4 certified (Feb 2024), sold as a separate license | Data Standard v4, valid through Jan 10, 2025 | OneRoster API, Ed-Fi | Skyward SMS 2.0 districts already facing a Qmlativ move |
| Edupoint Synergy | OneRoster 1.1 certified; Ed-Fi certified | Data Standard v4 and v5, valid through Apr 28, 2026 | OneRoster, Ed-Fi | Districts in states where Synergy is certified for state reporting |
| Follett Aspen | OneRoster; district-defined REST endpoints; flat files | No current entry | Flat-file exchanges in CSV, tab or fixed width; REST endpoints | Districts that rely on custom flat-file feeds |
| Aeries | OneRoster 1.1; separate Aeries API with a district certificate | Data Standard v4, valid through Aug 1, 2026 | Aeries API, OneRoster | California districts; the vendor says 1 in 2 California students use Aeries |
Sources for the table: the Ed-Fi certified products registry, Infinite Campus's note that support for OneRoster CSV extracts ended in 2019, Skyward's OneRoster and Ed-Fi announcements, Edupoint's partner page, Follett's Aspen page, Aeries's OneRoster setup guide and home page, and GovTech on the Tyler and Infinite Campus partnership. Several registry dates had lapsed when we checked in October 2026. That may only mean renewal paperwork, but ask each finalist for its current certification and for your state's own vendor approval, since states such as Kansas certify SIS vendors separately.
Tyler SIS still shows up on alternatives lists, but it is no longer a forward option, because Tyler is moving its SIS clients to Infinite Campus. For Skyward districts, our Skyward Qmlativ migration guide covers what moves and what does not.
Whichever finalists you pick, send each one the same written questions and attach the answers to the contract:
- Which of your staff and contractors can reach our instance for support, how do they authenticate, and are those sessions logged and kept for how long?
- In what format, at what cost and within what time do you return all of our data at contract end, including history and custom fields?
- Which tables or records can we not export ourselves?
- What are your current OneRoster and Ed-Fi certifications, and is Ed-Fi a separate license?
What does it cost to switch from PowerSchool to Skyward or Infinite Campus?
We have not found a reliable published figure, because cost depends on district size, history and state. In our experience, most of the cost sits outside the license, in data conversion, state reporting and integrations. Use these categories to build your own estimate.
| Cost category | What drives it | Where to get your number |
|---|---|---|
| Overlap licensing | Running both systems through cutover; go-live usually has to line up with the start of a school year and your state reporting calendar | Current renewal terms and the new vendor's start date |
| Historical data conversion | Years of grades, transcripts, attendance, discipline and special programs; custom fields and database extensions | Years retained, number of custom tables, vendor conversion quote |
| State reporting | Re-mapping codes, state vendor approval, a parallel submission cycle | Your state's vendor certification calendar |
| Integrations | Rostering, LMS, assessment, transportation, food service, library, special education, identity | Inventory of every system that reads or writes SIS data |
| Reports and exports | Saved DEM templates, PowerQueries, custom pages, scheduled SFTP jobs | Template and plugin lists from PowerSchool |
| Training | Registrars, counselors, teachers, front office, families | Headcount by role and hours per role |
| Exit terms | Notice period, data return format, deletion certificate | Your MSA and order forms |
In the projects we have seen, integrations are the row most often underestimated. Different staff add them one at a time over the years, and nobody keeps the full list. Do that before asking any vendor for a quote. Our SIS integration guide explains how those connections attach to an SIS.
What happened in the PowerSchool breach?
An attacker used one compromised credential to enter PowerSource, PowerSchool's customer support portal, and copied data from customer SIS instances between December 19 and December 28, 2024. PowerSchool has confirmed these points on its incident page, citing CrowdStrike's investigation:
- Exfiltration was limited to the Students and Teachers tables of select SIS instances. Depending on the district, data included names, contact details, dates of birth, limited medical alert information and Social Security or Social Insurance numbers.
- CrowdStrike found no malware, no system-layer access and no compromise of other PowerSchool products.
- PowerSchool paid a ransom. In May 2025 an extortionist contacted districts with the same December data, which PowerSchool said was not a new incident.
The CrowdStrike report also found that the same support credentials were used to log in to PowerSource between August 16 and September 17, 2024. BleepingComputer reported that CrowdStrike could not tie that activity to the December attacker, partly because the available SIS logs "did not go back far enough."
PowerSchool told K-12 Dive that the compromised PowerSource system lacked multi-factor authentication. K-12 Dive also reported that the Future of Privacy Forum removed PowerSchool from its Student Privacy Pledge on February 13, 2025, and that North Carolina's attorney general and Canadian privacy regulators opened investigations.
Matthew Lane, a Massachusetts man, pleaded guilty and in October 2025 was sentenced in federal court in Worcester to four years in prison and $14 million in restitution. Prosecutors said he demanded $2.85 million in bitcoin and put the exposure at 62.4 million students and 9.5 million teachers from 6,505 districts. PowerSchool has not published its own total.
Where do the PowerSchool lawsuits stand in 2026?
The facts above are confirmed by PowerSchool or by the criminal case. Whether PowerSchool is legally liable is still disputed, in a Texas enforcement action and a federal multidistrict litigation, and we found no reported settlement of either as of October 2026.
Texas Attorney General Ken Paxton sued PowerSchool in September 2025 under state consumer protection and identity theft laws. CBS News reported that the suit covers more than 880,000 Texas students and teachers and alleges PowerSchool advertised strong security while lacking MFA, adequate access controls and encryption.
On April 7, 2025, the Judicial Panel on Multidistrict Litigation centralized the private suits as MDL No. 3149 in the Southern District of California. On March 18, 2026, the court issued an order granting in part and denying in part Bain Capital's motion to dismiss. Plaintiffs' co-lead counsel report that claims including negligence and unjust enrichment will proceed against PowerSchool and Bain. Movate, the support contractor, is also a defendant.
For district planning, the lawsuits matter mostly because boards and families follow them. Your contract obligations depend on your own agreement, not on the outcome of these cases.
How do you harden PowerSchool if you stay?
Start with vendor support access to your instance, since that is the path the attacker used. Each step below follows from a fact in the incident record.
- Get written confirmation of how PowerSchool and its contractors authenticate to PowerSource and to your instance, including MFA, and whether support sessions are logged.
- Ask for support access to be named, time-limited and approved by your staff per session where your hosting model allows it.
- Review every installed plugin in Plugin Management Configuration, remove unused ones, narrow access requests and rotate client secrets.
- Audit which roles can use Data Export Manager and scheduled system templates, and where those files land.
- Keep your own logs long enough to investigate an incident months later, since CrowdStrike's review was limited by log retention.
How do you export data from PowerSchool?
PowerSchool supports four export paths: Data Export Manager, scheduled export templates, plugins that expose PowerQueries over an OAuth API, and standards feeds, with OneRoster for rosters and Ed-Fi for state reporting. None of them alone is a full archive, so most districts will combine DEM with one of the others.
Planning a Custom LMS?
Get a free architecture review for your education platform. FERPA compliance and SIS integration included.
Download: Custom LMS ROI Calculator (Build vs Buy)
TCO comparison worksheet, 5-year cost projections, decision framework checklist, and technical requirements guide for education leaders evaluating custom LMS development.
| Path | Covers | Automation | Best for |
|---|---|---|---|
| Data Export Manager | Most tables, database extensions, PowerSchool data sets; some tables excluded | Manual, or saved as a template | Archive pulls, migration extracts |
| Scheduled system templates | Whatever a saved DEM template covers | Days and times you set, to a network path or SFTP | Nightly files into a district warehouse |
| Plugin with PowerQueries | Fields in the plugin's access request | API calls on your schedule | Joined views, incremental sync |
| OneRoster (Universal Rostering) | Orgs, users, classes, enrollments, gradebook | Real-time REST for authorized partners | Rostering |
| Ed-Fi | Domains your state collects, such as attendance, discipline, academic record | Published to an Ed-Fi ODS | States that run Ed-Fi |
Data Export Manager and scheduled templates
PowerSchool's DEM documentation says it exports PowerSchool tables, database extensions and data sets to a text file, with some tables excluded for security or system reasons. PowerQuery data sets installed by plugins also appear in DEM, but PowerSchool says those "are not supported by PowerSchool and provided for convenience only," and they are grayed out for users who lack field-level access to every field.
The export steps are: choose a category and source, pick columns, filter, then set output. Switch the default .txt to .csv, choose a delimiter and select UTF-8. Leave Edit All Filtered Records alone, since PowerSchool warns it makes a permanent mass change. DEM exports one source at a time, so a full archive means a saved template per table.
Scheduled system templates run those templates on set days and times and can deliver over SFTP configured in Remote Connection Management. Create archive templates at the district office, because a school-level template exports only that school. System template exports also ignore field-level security, so protect the destination as carefully as the SIS.
Plugins, PowerQueries and the API
A plugin is a zip with a plugin.xml manifest and, optionally, named PowerQueries. When an administrator installs and enables a plugin with OAuth, PowerSchool generates a client ID and secret, and the plugin can read only the fields in its access request. The example below is illustrative and has not been run against a live instance. Its structure follows public plugins and the open-source TEAMSchools/powerschool and PyPowerSchool clients; check field names against your version.
<!-- plugin.xml -->
<plugin xmlns="http://plugin.powerschool.pearson.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://plugin.powerschool.pearson.com plugin.xsd"
name="District Archive Export" version="1.0" description="Read-only archive export">
<oauth></oauth>
<publisher name="Example School District"><contact email="data@example.org"/></publisher>
<access_request>
<field table="STUDENTS" field="ID" access="ViewOnly"/>
<field table="STUDENTS" field="STUDENT_NUMBER" access="ViewOnly"/>
<field table="STUDENTS" field="LAST_NAME" access="ViewOnly"/>
<field table="STUDENTS" field="FIRST_NAME" access="ViewOnly"/>
<field table="STUDENTS" field="ENROLL_STATUS" access="ViewOnly"/>
<field table="STUDENTS" field="SCHOOLID" access="ViewOnly"/>
</access_request>
</plugin>
<!-- queries_root/archive.named_queries.xml -->
<queries>
<query name="org.district.archive.students" coreTable="students" flattened="true">
<description>Student archive export</description>
<columns>
<column column="students.id">students.id</column>
<column column="students.student_number">students.student_number</column>
<column column="students.last_name">students.last_name</column>
<column column="students.first_name">students.first_name</column>
<column column="students.enroll_status">students.enroll_status</column>
<column column="students.schoolid">students.schoolid</column>
</columns>
<sql><![CDATA[
SELECT s.id, s.student_number, s.last_name, s.first_name,
s.enroll_status, s.schoolid
FROM students s
ORDER BY s.id
]]></sql>
</query>
</queries>
# Token from the plugin's client ID and secret
TOKEN=$(curl -s -u "$PS_CLIENT_ID:$PS_CLIENT_SECRET" \
-d "grant_type=client_credentials" \
"https://$PS_HOST/oauth/access_token" | jq -r .access_token)
Q="org.district.archive.students"
H=(-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -H "Accept: application/json")
# Row count, then page through and save each page
COUNT=$(curl -s -X POST "${H[@]}" -d '{}' "https://$PS_HOST/ws/schema/query/$Q/count" | jq -r .count)
PAGES=$(( (COUNT + 999) / 1000 ))
for P in $(seq 1 "$PAGES"); do
curl -s -X POST "${H[@]}" -d '{}' \
"https://$PS_HOST/ws/schema/query/$Q?page=$P&pagesize=1000" > "students_p$P.json"
done
Three sources describe changes to plugin access during 2026:
- PowerSchool's ISV Data Integration Policy, effective June 2026, makes OAuth through an approved Product Extension the only way an outside vendor may authenticate. It bars vendors from reverse engineering PowerSchool, from using PowerSchool APIs or customer data to operate a competing SIS or data warehouse, and from bulk exporting or warehousing substantially all customer records beyond what their order form describes.
- SchoolDay, a rostering vendor, says that when its Plugin v4 is installed, PowerSchool sets the plugin's V1 API access level to No Access by default.
- Derivita says that in its RosterStream connection flow, districts without a PowerSchool partnership see only a DEM option for new connections from September 1, 2026, and attributes the change to PowerSchool moving its default connection method.
The policy is written for third-party vendors under an order form. A district exporting its own records with its own staff is in a different position, but if a contractor will build the plugin or run the warehouse, ask PowerSchool in writing how the policy applies first. This is not legal advice; review your license agreement and MSA with counsel. Our post on whether it is legal to reverse engineer software covers the general rules.
OneRoster and Ed-Fi
OneRoster covers rosters, gradebook data and resource assignments, in CSV or REST form, and PowerSchool's Universal Rostering plugin serves it to authorized partners. It helps when re-pointing rostering integrations to a new SIS. It does not carry transcripts, attendance history or discipline, so it cannot serve as an archive or a conversion source.
The Ed-Fi data standard has domains for attendance, discipline and the student academic record, including transcripts. In states that use it, PowerSchool already publishes to an Ed-Fi operational data store. In South Carolina, districts publish PowerSchool data to a district ODS that feeds the state, on Data Standard v5.2 and ODS/API 7.3 for 2025 to 2026. That ODS holds only what your state collects, and a new SIS will only write to it if its supported version and state approval match, but it is the most vendor-neutral copy many districts already have.
PowerSchool data export checklist
Run this before a renewal meeting or an RFP. Most of it is staff time.
- List every PowerSchool table and database extension in use, including custom fields added by past staff.
- Save a district-level DEM template per table and export each as UTF-8 CSV with headers.
- Write down what you could not export: excluded tables, grayed-out PowerQueries, documents stored outside the tables.
- Compare row counts with PowerSchool, and confirm IDs such as students.id and student_number survive so related tables still join.
- Export historical grades, transcripts, attendance, discipline, special programs and log entries for every year you must retain.
- Capture code tables (attendance codes, course numbers, state codes) so values can be decoded later.
- Save every scheduled template and destination, and list installed plugins with their access requests.
- If your state runs Ed-Fi, confirm what your district ODS holds and who can query it.
- Inventory every integration and the export path each uses.
- Load a sample into a test database and rebuild one student's full record to prove the export is usable.
- Store the export encrypted, with role-based, logged access. It holds education records covered by FERPA, the same kind of data stolen in 2024.
- Read your MSA for data return format, deletion certification and notice periods, and record the dates.
What does owning the data layer look like in practice?
It means the district keeps a current copy of SIS data in a schema it controls, fed by the export paths above, so reports and integrations read from that copy instead of the vendor. A future switch then means building one new adapter and re-pointing downstream systems once. Historical records still have to be converted into the new SIS, but integrations and reporting stop depending on which SIS sits underneath.
We built a pipeline like this that ingests from five SIS sources (PowerSchool, Infinite Campus, Skyward, Aeries and a legacy SFTP flat-file system) across 12 districts in three states. Our ingestion pipeline case study reports latency falling from 4 to 6 hours to under 3 minutes for webhook-enabled districts (12 to 15 minutes for scheduled syncs), errors from 3.8% to 0.02%, infrastructure cost from $8,500 to $340 a month, and developer onboarding time per district from 6 weeks to 5 days, at 1.2 million records a day in peak periods. Each SIS has its own adapter, and everything downstream reads one normalized model. The same approach runs through our wider work on legacy system integration and vendor exit.
A district copy needs its own controls: MFA on every admin account, logs kept longer than a school year, and a retention policy. Without them, you have added a second place for the same records to leak from.
What should a district do first?
Do checklist items 1, 2, 3 and 9: the table inventory, a district-level DEM export, a written list of gaps, and the integration list. Those answer the questions that come up first in a renewal negotiation or an RFP. If your state runs Ed-Fi, talk to whoever manages your district ODS.
If you want help designing the district copy or the adapters around it, our education technology development team does this work, and you can reach us here.
Download: Custom LMS ROI Calculator (Build vs Buy)
TCO comparison worksheet, 5-year cost projections, decision framework checklist, and technical requirements guide for education leaders evaluating custom LMS development.