Apply migration fixes to SAS programs with an original backup and auditable history.
Migrate Studio reads a folder of SAS programs, applies selected migration rules, writes approved fixes in place when write access is available, and lets you compare every changed program against its original.
Quick start #
- Click Folder and choose the study/program folder containing the SAS programs you want to migrate.
- Review the program list, select one or more programs, and confirm which rules are ticked on the Rules tab.
- Click Apply Fix. Migrate Studio creates or verifies the original backup before writing fixed programs in place.
- Review Fixed SAS and Fix Compare, then use History to review the run and per-program versions.
_migrate_original folder beside the programs.Screen layout #
Left · Programs
Select the folder, search programs, select multiple programs, and see each program's current change count.
Center · Workspace
Work in Rules, Fixed SAS, Fix Compare, and History for the currently selected program.
Right · Details
See program summary, fix counts, rules applied, and recent versions at a glance.
Top · Actions
Save, Apply Fix, import/export rules, download updated programs/summary, profile, and sign out.
Folder selection #
Click Folder in the upper-left program rail. Migrate Studio reads *.sas files recursively, ignores migration output/backup folders, lists the programs by relative path, and selects the first loaded program.
If the selected folder contains the canonical Migrate_Studio_Rules.xlsx, that rule book is loaded automatically. You can still use Import Rules to load a different workbook.
Reopening a previously migrated folder #
When the folder already contains _migrate_original backups, Migrate Studio reads matching history.json records for the selected root folder and reconstructs the previous migration state. It uses the saved program path, rule applications, line-level details, and prior run information to restore the original-versus-fixed relationship.
The left program list then shows each recovered change count, and selecting that program restores the information needed by Fix Compare. A recorded Revert clears the corresponding applied state, so reverted programs are not treated as still migrated.
Program list #
The left rail is both a navigator and an Apply Fix selection list. Click a program name to make it the active program; tick individual programs to run the same selected rule set across several files.
| Control | Purpose |
|---|---|
| Select All / Deselect All | Selects every program currently shown by the search/filter; once all are selected, the button changes to Deselect All and clears them. |
| Program checkbox | Includes that program in a multi-program Apply Fix run. |
| Number beside program | Number of recovered or currently applied line changes/fix details for that program. |
| Search | Filters the tree by folder name, program name, or both. |
Migration name #
Click the editable label beside Migrate Studio in the top navigation bar to set the migration name. The name is used by the application when identifying the migration in fixed-program header information.
Rules #
The Rules tab displays the Rules sheet from the loaded rule workbook. Each runnable row includes its Rule ID, short title, category, description, and a tick that determines whether the rule will run.
- Ticked rules run top to bottom when Apply Fix is executed.
- Documentation-only rows that contain no executable pattern cannot be selected.
- Rules requiring an unresolved parameter are protected from running until they are valid.
- The rule filter narrows the visible rule list without changing the underlying program selection.
Import Rules loads another workbook. Export Rules writes the currently loaded workbook back out for review or reuse.
Apply Fix #
Apply Fix runs the ticked, in-scope rules against the active program or against the checked program set in the left rail. When changes are found, the fixed text is written in place when the selected folder is writable, and the run is recorded in migration history.
Programs already marked as applied by their backup/history state are skipped. This prevents a previously completed in-place migration from being applied again unintentionally.
Backup safety #
Before the first in-place write in a directory, Migrate Studio creates _migrate_original in that directory and copies its SAS programs into the backup folder. Existing backup files are never overwritten.
Fixed SAS #
The Fixed SAS tab shows the current fixed program with SAS syntax coloring. Use the view controls to expand or fullscreen the code panel when reviewing large programs.
| Apply Fix | Run the currently selected rules against the active/selected program set. |
|---|---|
| Reload | Reload the current fixed view from the program state. |
| Copy | Copy the fixed SAS text to the clipboard. |
| Download | Download the current fixed program. |
| Download Updated Programs | Download the set of updated programs as a ZIP. |
Fix Compare #
Fix Compare displays the original program on the left and the fixed program on the right. Added, deleted, and modified lines are visually marked, and the two panes scroll together.
- Changes only hides unchanged context so you can focus on migration edits.
- The version selector lets you choose the comparison reference when multiple versions are available.
- Previous/Next moves between modified lines. For a single modified line, the modified-count link jumps directly to it.
- When an already migrated folder is reopened, the original is recovered from
_migrate_originaland the prior fixed/change details are reconstructed fromhistory.json.
History #
The History tab contains two independent views: migration-wide run history and the version history of the selected program.
Migration History #
Migration History reads history.json from your per-user data folder, which is printed when Migrate Studio starts, and summarizes Apply Fix/Revert activity by root folder, program, rule, user, and run. Search and filter controls let you narrow the view, and Download exports the history information.
Each successful Apply Fix run records the root folder, relevant subfolder/program paths, rule applications, changed-line details, totals, user/profile information, rule book, and timestamps used by the dashboard and folder-reopen workflow.
This Program #
This Program shows the selected program's versions, newest first. Apply Fix, Revert, and Restore add version records rather than silently rewriting the history trail.
Select a version to review it or choose Restore. Restore makes that version the current fixed state and writes it in place when the folder is writable.
Revert #
Revert restores the active program from its matching _migrate_original backup. The action is recorded in history and the program's applied marker/backup entry is cleared so Apply Fix can be run again if needed.
Save #
Save writes the current fixed state back to the live program files. Because Apply Fix already writes in place in the normal workflow, Save is primarily useful after restoring an older version or when the application reports unsaved restored state.
The top-bar Save action also advertises the standard Ctrl/Cmd+S shortcut.
Downloads #
| Download | Contents |
|---|---|
| Download Updated Programs | ZIP containing the updated SAS programs. |
| Download Update Summary | Excel workbook summarizing program-level changes, line-level detail, and rule information. |
| Fixed SAS · Download | The currently selected fixed SAS program. |
| History · Download | Migration history data from the run-history view. |
Profile #
Open the ⋯ menu and choose Profile to set your name and email. The profile name is used as the operator/author in migration history and fixed-program header information.
Browser & folder modes #
| Mode | Behavior |
|---|---|
| Browser mode · Chrome/Edge | Browser can read and, when permission is granted, write the chosen local/mapped folder in place. |
| Browser mode · Firefox/Safari | Read-only folder fallback. Fixes can be reviewed, but updated programs are downloaded rather than written back directly. |
| Server folder mode | R/Shiny reads and writes programs on allowlisted server roots. The same front-end workflow is used, while server-side file operations preserve the deployment's file controls. |
If Migrate Studio cannot obtain write access, it displays an amber read-only banner rather than waiting until Save or Revert to report the limitation.
Troubleshooting #
Folder loads read-only
Use Chrome/Edge in browser-folder mode or use the server-folder deployment. If prompted, grant the application write permission to the selected folder.
No rules loaded
Confirm the folder contains Migrate_Studio_Rules.xlsx or use Import Rules to select the correct workbook.
Apply Fix skips a program
The program may already be marked as applied by its backup/history state. Review History or Revert before intentionally reapplying.
Prior changes do not reappear
Confirm the program has a matching _migrate_original backup and that history.json in the startup data folder contains records for the same root folder and relative program path.
Fix Compare has no changes
Confirm a fix was applied or recovered from history and that the original backup can be read for the selected program.
Revert is unavailable
Revert requires a readable original backup and write access to the live program folder.
Direct section links #
Every functional section has a stable HTML anchor. Append the anchor to user_manual.html when linking from the application, release notes, support documentation, or an email.