Every release, in one place - what changed, and why it matters if you're moving Salesforce Files to Google Drive.
Version ...
Selecting an object you have not refined now arrives with every file ticked, even after you refined or removed a different object first. A file shared with an object you refined is no longer left out of the newly selected one - it migrates as expected, instead of being silently dropped.
Your refinement of an object is remembered when you deselect and reselect that same object, exactly as before.
The Select Files count is now computed one way for both All Files and By Object scope, so the count you see always matches what is charged.
Refining an object, removing it, then selecting a different object no longer leaves Select Files stuck at "0 files" with Continue disabled. The count now reflects exactly what is ticked in the table, so the two can no longer disagree - the file count is the selection, computed the same way the Summary computes it.
A file linked to two selected objects is counted once, not twice, matching what actually migrates.
Display and gating only; what migrates and what is charged were always computed correctly at the Summary and are unchanged.
On the Choose Destination screen, each object row now shows how many files you actually selected, not the object's total. If you narrowed an object down on the Select Files step, the row would still show the full count - so a refinement to 300 files looked like it had been ignored, even though the migration used the right 300.
When you have refined an object, the row reads "300 of 10,981 files" - confirming the refinement took effect and what the object holds. An object you did not refine shows a single number as before.
The "files left out" note when you remove an object now counts only files that were actually in your selection, for the same reason. Display only; nothing about what migrates or what is charged changed.
MigrateStream now has a Terms of Service page. Google's consent screen invites you to review both the Privacy Policy and the Terms of Service; the Privacy Policy already existed, and now the Terms do too, in the same plain language.
It is linked next to the Privacy Policy everywhere the Privacy Policy appears - the documentation sidebar, the footer on every page, and the landing page - so it is easy to find from anywhere.
The terms describe what a licence grants, that files move directly from Salesforce to Google Drive in your browser and never touch our servers, your responsibilities for your own data and backups, and the plain limits of the service.
User and Group appear at the bottom of the object list now, labelled as people rather than sitting among your business objects. Every Salesforce file is linked to the people it is shared with, so User in particular showed a large file count and looked like something to migrate. It still can be, for anyone who wants files grouped by uploader; it just no longer looks like a business record you would pick by mistake.
On the destination screen their mapping row also starts last by default, and is labelled the same way. If you have reordered rows yourself, your order is kept - the default only affects rows you have not moved.
Nothing is removed: selecting User or Group works exactly as before, with a plain-words note about what it does.
On a fixed destination, the summary's estimate now checks the same place the migration itself checks: the whole destination folder, subfolders included. Files you had moved into subfolders by hand were skipped by the run but not credited by the estimate, so a resume could be refused as too large when it would have fit. The two now always agree.
Selections that fit your allowance got faster: the summary no longer reads the destination at all when the full selection already fits, which is the common case.
Hopeless selections are refused instantly on this path too, the same quick refusal folder-mapped migrations gained earlier, with the same message and the same caution about files grown in Salesforce.
The migration report gains a Drive File Name column: what the file is actually called in Google Drive, as Drive itself reported at upload. The File Name column is the file's Salesforce title, and when a title has no extension the migration has always appended the file's real one so it opens correctly. Reading the title column as the Drive name made files look extensionless when they were not; now both names are in the report, side by side.
Titles are completed, never changed: a title already ending in its extension is kept byte for byte, and a tail that merely looks like an extension, such as a date's ".13", never fools the check. One narrow case where a very short title could miss its extension is fixed.
On per-record subfolder migrations, the report's Linked Record columns now show the link that actually decided each file's folder. A file linked to several records used to report whichever link happened first, which could name a different object than the folder beside it. A new Linked Record Count column says when a file had several links among your selected objects.
The report file is now pure data. The note about changed files not being re-pulled used to be appended inside the CSV and broke strict parsers; it now appears on screen when you download, and in the report documentation.
Selecting "User" as an object now explains itself. A User link means a file is shared with a person, usually its uploader, not what the file is about; selecting it can add almost every file in the org to the migration and its charge, and its folders are named after people. Both the Select Files and Choose Destination screens now say so in place. Nothing about what you can select has changed.
Swapping your license key on Select Files no longer mixes the old key's usage with the new key's allowance. A key pasted while the usage check was running could produce readings like "1.04 GB used of 30.72 MB" and a refusal that would not go away. The figure is now tied to the key it was measured under; a swap discards it and re-checks under the new key by itself.
The stuck state is gone: the refusal releases on its own the moment the fresh reading lands, with no sign-out and no starting over.
Retry Failed Files gets the same protection: if the key changes while its allowance check runs, it asks you to press it again rather than starting a run against the wrong key's figures.
The explanation shown when usage exceeds the allowance now matches your key type. The old sentence described account-wide counting, which is only true of older, unscoped keys; scoped keys now get wording about their own license's usage.
A file linked to records of more than one mapped object goes to the folder of the first matching row, top to bottom. This was always the rule; it was invisible, and the order was whatever the scan happened to produce. The destination screen now says it in plain words.
Each object row now has up and down arrows, so the order you see is the order that applies. Your order is kept when you leave the screen and come back, and the app never reorders rows on its own.
Select Files now warns early when a selection is larger than the data you have left. It is a warning, not a block: if you are resuming into a destination that already holds some of these files, the Summary credits them and may still allow the run. The warning says exactly that, so a later refusal is the promised follow-through rather than the product being slow to notice.
Replacing your license key in one tab now reaches your other open tabs. A tab left open used to keep billing every future run to the old key until reloaded, silently. Other tabs now adopt the new key and say so; a tab with a migration running keeps the license that run started with and switches when it ends.
The folder-mapping preparation note now states its wait as a rate, about a minute or two for every ten thousand files selected, instead of a flat "several minutes" that overstated small selections and would understate very large ones.
On Choose Destination with per-record subfolders, every object row now has a remove control. Removing an object takes its files out of the migration entirely; the file count, total size and charged amount all follow the change, and files also linked to an object you kept stay in.
This unblocks the case where one object's field list cannot be loaded (usually because your Salesforce user cannot see that object, common with managed packages). One unusable object out of thousands of files used to leave Continue disabled with no way forward. The row now explains what happened in place, and removing it lets everything else proceed.
Removals are visible and reversible: each removed object is listed with how many files were left out and a Restore button. Removing every object says so plainly instead of silently disabling Continue.
The object list now follows your file selection. Deselecting an object at Select Files used to leave its row on this screen anyway; returning here now updates the rows, keeping the fields you already chose.
On a folder-mapped selection that exceeds your allowance, the refusal now appears before the slow folder-mapping preparation instead of after it. The quick refusal added two releases ago saved the queries but not the wait: it ran behind minutes of folder-name work it never needed. Testers measured 2m 41s and 42s of waiting for an answer that was already decided.
A refused summary also stops checking folder names afterwards. Those checks advise about a run that cannot start; changing the selection and returning re-runs everything.
Selections that fit are unchanged: the full preparation, the folder-name warnings, and every figure on the summary are exactly as before. Only the order moved, never the answer.
Replacing your license key while the migration summary is being prepared, or after it is on screen, now re-runs the summary under the new key. Before this, a summary caught mid-preparation could measure usage under the old key and the limit under the new one, and report 0 B remaining on a key with room to spare. The refusal was wrong; nothing was ever over-charged.
Start Migration double-checks the same thing: if the key changed after the summary was prepared, pressing Start re-evaluates with the new license instead of starting a run whose figures describe the old one.
A short notice appears when this happens, so the repeated wait is explained rather than silent.
The version badges in the app now show just the version. The eight-character build code that appeared beside it was diagnostic detail useful to testers and support, and it read like debug output to everyone else.
Nothing is lost for support: hovering a badge shows the build code, and selecting and copying a badge still copies it, so pasting a badge into a bug report carries the same evidence it always did. The technical blocks in the browser console are unchanged.
Replacing or removing your license key while a migration is running is now refused, with a message saying why and what to do instead. A running migration is billed to the license it started with (since the previous release), so a mid-run swap could only ever take effect after the run anyway; the app now says that up front instead of accepting a key that silently does nothing yet.
Nothing is lost by stopping first. The message on each refusal spells out the route: let the run finish, or use Cancel Migration on the run screen. Files already migrated stay in Google Drive, are skipped by the next run, and are not charged again. Your next run then counts against the new license from its first file.
Replacing a key between migrations is unchanged and remains the right way to move to a new license.
Checks of your current license (revocation, allowed orgs and accounts) are unchanged and stay live during a run. This release is about changing the key, not checking it.
On a folder-mapped resume, a selection that cannot fit within your remaining allowance is now refused as soon as the destination has been read, instead of after the detailed Salesforce size check. That check has been measured at eleven minutes on a large destination; when even the most generous credit for already-migrated files cannot bring the selection under your limit, those minutes bought nothing and are now skipped.
Selections that might fit are unchanged: the detailed check still runs and still decides, so nothing is allowed or charged differently. The quick refusal only ever says no earlier; it never says yes on its own.
When the quick refusal decides, the Summary says so and names the one case it can get wrong: files that have grown in Salesforce since they were migrated can make a workable selection look too large. If you believe that applies to you, the message says to contact Satrang Technologies.
Replacing your license key while a migration is running no longer splits the accounting. The key that was active when the run STARTED is now the key the whole run counts against - every file, and the usage records written at the end - even if a different key is pasted in partway through.
Before this, a mid-run swap billed the early files to the old key and the later files plus the closing records to the new one. Neither key's usage figure described what actually happened, and nothing on screen said so.
Replacing a key between migrations is unchanged and remains the right way to move to a new license: the next run counts against the new key from its first file.
What the app should say when someone attempts a swap mid-run is a separate decision and has not changed in this release: the swap is accepted and applies to the NEXT run's billing.
On a narrow screen, signed in, the bar at the top of the app now grows tall enough to hold everything in it. Its contents already wrapped onto several rows, but the bar itself stayed one row tall, so the org badge, Google account and license controls rendered on top of the page below, with the bar's coloured line cutting through them. That is the "fragmented" look reported this week.
Two style rules disagreed about the bar's height and the wrong one won on narrow screens, so the earlier wrapping fix never fully applied below 641 pixels wide. The bar now grows with its rows there, exactly as it already did between 641 and 900.
Signed out nothing changes: the bar keeps its familiar single-row height.
How the rows are grouped is unchanged in this release. That is a separate, deliberate decision and it is being considered separately.
A long Salesforce org name in the top bar now ends with an ellipsis on a narrow screen instead of being cut off mid-character. The shortening rule was already there; it was sitting on an element that could not obey it, so the name was clipped with no visual hint that anything was missing.
Nothing else in the bar moved. Checked at 320, 375 and 700 pixels signed in: the bar keeps its height, nothing overflows the screen, and the full name still shows whenever there is room for it.
Behind the scenes this release also adds a check for exactly this class of mistake - a style rule that is present and correct but has no effect where it sits - which has now happened twice on this ticket.
The longest part of preparing a folder-mapped migration is now shared work instead of repeated work. When your files are sorted into folders by more than one Salesforce object, MigrateStream was asking Salesforce for the same file-to-record links once per object, keeping a different part of the answer each time. It now asks once and keeps every part. With three mapped objects, that is roughly a third of the requests for the same result.
Nothing about the answer changes. The folders your files land in, the warning about records with blank folder names, and everything on the summary screen are computed from exactly the same data as before - the identical requests, made fewer times.
If you map only one object, this release changes nothing for you - there was no repetition to remove.
The timing block in the browser console now reports the shared request count, so a before-and-after comparison on the same org is one paste.
The app page now always checks for the newest version before running. Previously your browser was allowed to guess how long to keep it, so it could quietly run an older copy of the whole application while looking completely normal. Now it confirms with the server on every visit, which costs one lightweight check and nothing more when nothing has changed.
The version number now carries a short build code beside it, for example v1.32.46 (94a2452b). The code is computed from the software your browser actually loaded, not typed into a file, so if you ever report a problem, that one line tells support exactly what was running - no screenshots or guesswork.
A small efficiency fix to the running screen: the progress figures were being recalculated from scratch after every file, which grew more expensive the more files a migration had. They are simple running totals now. The figures themselves are unchanged.
Nothing about migrations, allowances or what is counted changed in this release.
Once you are signed in, the bar at the top of the app no longer runs off the side of the screen. The org name, the Google account and the license summary are only filled in after you connect, and together they were wider than the window. On a phone that pushed the light and dark button and the account controls out of reach entirely.
This affected small laptop windows too, not just phones. The bar needed about 900 pixels to fit everything, so a narrow browser window had the same problem.
Long names now shorten with a trailing ellipsis instead of pushing everything else out. An org name, a Google address and a company name can all be any length, and none of them is ours to keep short.
Earlier releases fixed the same kind of problem on the public pages. This is the application itself, which is a separate page and had not been looked at.
A migration that takes an hour now tells you what it is spending that hour on. The line that already shows the estimate and the elapsed time can now end with one of three things: mostly waiting on Salesforce, mostly uploading to Google Drive, or slowing down on purpose, Salesforce is rate limiting this run.
The first two mean the migration is behaving normally and the speed is not something you can change from here. The third means MigrateStream has deliberately slowed itself to stay within your org's limits, which is working as intended rather than a fault, and the run will still finish.
It says nothing until it is sure. Early in a run, or when the work is split evenly between the two halves, the line reads exactly as it did before. That follows the same rule as the time estimate: a wrong answer is worse than no answer, because you would plan around it.
It also will not flicker. A migration sitting close to the boundary shows nothing rather than switching back and forth, and once it does say something it holds that for at least a minute.
Nothing else on the screen moved, and nothing about migrations, allowances or what is counted changed.
The light and dark button now stays inside the bar at the top of every page. The previous release fixed the row of claims at the foot of the page, which was making pages scroll sideways. That was real, and it hid a second, separate problem: the bar at the top of the documentation pages was never allowed to wrap onto a second line, so on a narrow screen the last control in it was pushed out. It wraps now.
This page no longer scrolls sideways on a phone. The version tag and date on each release could not wrap, and together they were setting a minimum width wider than a phone screen. On a 393 pixel screen this page was 432 pixels wide.
The diagram on the Architecture page scrolls on its own instead of stretching the page. It has a minimum size below which it stops being readable, so it keeps that and slides sideways within its own box.
Nothing about migrations, allowances or what is counted changed in this release.
Some selections will now correctly count toward your allowance where they previously did not. When you migrate into a single destination folder and use the file list to leave some files out, MigrateStream checks how much of your selection is already in that folder and does not charge you twice for it. That check was looking at every file in the destination, including ones you had just chosen to leave out, so it could credit you for files this migration was never going to move.
What changes for you. The summary screen now counts only the files you actually selected. If you leave a lot of files out of a large selection, the figure it checks against your limit will be higher than it was before, because it is now the real one. A migration that was allowed to start last week could be refused this week, and if that happens the refusal is correct: the earlier check was reading a number that did not describe your selection.
Nothing you have already migrated is affected, and nothing about how usage itself is measured has changed. This is the up-front check only, and it now agrees with what the migration actually does while it runs.
Release dates on this page were also corrected. Twelve entries showed the wrong day.
How To Use is now two guides. Setting up an org and running a migration are different jobs, done by different people at different times, and one long page meant reading both to find either. Set Up covers the one-time admin work: the CORS entry, the Connected App, and where your license key comes from. Run a Migration covers everything you do each time: choosing files, folder mapping, the run screen and the report.
If you bookmarked the old page, it still works. The old address is now the Set Up guide, so every existing link, and every link inside the app, still lands somewhere real. Each guide links to the other at the top, so you are one click from the half you wanted.
Nothing was removed. Every paragraph from the old page is on one of the two new ones. The only wording change is that a passage explaining twice that your sign-ins live in the browser tab now says it once.
Screenshots of the connect, selection, destination, run and completion screens now sit alongside the steps they describe.
Page titles, descriptions and search-engine data were reviewed across the whole site at the same time. Nothing about migrations, allowances or what is counted changed in this release.
Pages no longer scroll sideways on a phone. One row of short claims could not wrap or shrink, so it made the whole page wider than the screen. Everything else reported - the coloured line under the navigation stopping short, the light/dark button sitting outside the bar - was that one row seen from elsewhere on the page.
The previous attempt fixed the wrong thing. It adjusted the navigation, which was never the cause, and it was checked by narrowing a desktop window, which will not go narrow enough to show this. There is now a check that measures the page at phone width instead of relying on a resized window.
Nothing about migrations, allowances or what is counted changed in this release.
Your migration report now shows the full folder path for every file. It previously showed only the last folder, so a report might say "Account / Acme Corp" without naming the destination those sat inside. The same path now appears in the file list on screen during a run.
Files that were already there still show where they actually are, rather than where this run would have put them - which matters if a record has been renamed since.
The file-selection screen now explains why choosing specific objects does not refresh automatically. Those counts come from a scan of your org that can take minutes on a large org, so it is kept and refreshed on request. Choosing All Files re-reads every time because that count is a single quick question.
Nothing about what is counted, charged or migrated changed in this release.
Removing your license and pasting a new one now works without reloading. After removing a key you were returned to the license screen, but pressing Activate did nothing at all - no error, no response. Reloading the page was the only way through. This mattered most when swapping a trial key for a paid one, immediately after paying.
The same screen was missing its setup reminder after a key was removed, which also left an unexplained blank line. Both had the same cause and both are fixed.
On a phone, the coloured line under the navigation stopped partway across and the light/dark button sat outside the bar. Both were the same thing: the logo refused to give up any width, so the navigation grew wider than the screen. It now fits.
Long web addresses and record ids no longer push past the edge of the page. They now wrap like any other text.
Nothing about migrations, allowances or what is counted changed in this release.
Five new answers in the FAQ, covering why a usage figure can include migrations you did not run, why preparing a migration takes longer with more files rather than more data, what happens when a Salesforce record is renamed, why the preparation count is larger than your selection, and what to do if the app cannot read your org.
Two corrections. The setup guide quoted a connect error that has since been reworded, and stated a cause as fact where the app deliberately says it is only the most likely one. The FAQ said your allowance is checked at the summary screen; it is checked as soon as you have chosen files.
The pages now say what a licence allowance covers, which differs depending on when your licence was issued.
Nothing about the product's behaviour changed in this release.
The destination preview now shows the subfolder you typed. If you named a subfolder for this migration and turned on subfolders per record, the preview left your subfolder out of the path. Your files were always going to the right place - only the preview was wrong.
Your allowance is now checked once per pass through the wizard instead of twice. On an account with a lot of migration history that check takes over a minute, and it was running again a few steps later. Nothing about your allowance changes.
The line shown while your migration is being prepared now says what its number counts. It reads files from everything you have ever migrated into your Google account, so on a brand new empty destination the number could climb into the thousands and look wrong. The number was always right; the sentence now says where it comes from.
The message shown when a Salesforce org will not connect is broken into steps, with the thing to do standing out instead of being buried in a paragraph.
Our email address now sits beside the contact button instead of underneath it, where it wrapped awkwardly.
The license entry screen is wider, so its notes fit on a line or two instead of three or four. Nothing was removed - the card was simply too narrow for text that was always short. It still narrows properly on a laptop or a phone.
We are investigating a report that usage stayed at zero on a newer license even after files were migrated. The migrations themselves were fine and the files are safely in Google Drive - it is the usage figure for that license that did not move.
This release does not change any figure. It makes the app report the one internal condition that could cause it, at the moment it happens, so the next occurrence identifies itself instead of being noticed later.
If you are on a license issued recently and your usage figure is not moving, please contact Satrang Technologies. Nothing you have migrated is affected.
Signing in to Salesforce could fail with a technical error message. The app could begin starting up before it had finished loading all of its own parts, and then could not check your license against your org. It showed an error naming an internal function, which is not something anyone should ever see.
It was most likely on the first load after an update, because an update means your browser has to download every part of the app fresh, which is exactly when the timing goes wrong. Signing in again usually worked.
Your license was never at risk. When that check could not run, the app returned you to the login screen rather than letting the session continue. It never skipped the check or let a license be used with the wrong Salesforce org.
The app now waits until it has fully loaded before starting up.
When a new org will not connect, MigrateStream now checks whether your network is working before telling you what is wrong. If your browser can reach your Salesforce org but still cannot read data from it, the message now says plainly that the most likely cause is this app not having been added to the org yet, and gives you the setting to change.
Your browser will not say why it blocked the call, so this is a best guess rather than a detection. That is deliberate on the browser's part, and it is why the message says "most likely" instead of stating it as fact. We would rather be honestly uncertain than confidently wrong and send you to change a setting that was never the problem.
If that check cannot settle it, you get exactly the message you got before. A slow or failed check never produces a guess, and never leaves you waiting: it only ever runs after a connection has already failed, so nobody whose connection works waits a moment longer.
Your allowance now counts only the files you migrate under that license. Until now, usage was measured across everything MigrateStream had ever moved into your Google account, so a new license could look partly or wholly spent on the day you received it, because of migrations run earlier or by someone else. A license issued from this version onward starts at zero and counts only its own work.
Extending or upgrading an existing license keeps your usage, as it always has. A renewed expiry date, a larger allowance or an added Salesforce org does not reset anything and does not need to - the license still belongs to the same purchase.
Checking your usage got dramatically faster on accounts with a lot of history. Because we now look only for the files belonging to your license, the check no longer has to page through everything ever migrated into the account. On a test account holding 40,300 files this went from 41 requests to 1.
Licenses issued before this version are completely unchanged. They keep counting everything in the account exactly as before, including the slower check. Nothing about your existing allowance moves.
If you would like your existing license reissued so it counts only its own migrations, contact Satrang Technologies.
If your allowance is already used up, you are now told at the file-selection step instead of three steps later. Before this, you could pick your files, choose a destination and set your options before anything stopped you. The check itself was never being started by that step - it only looked for an answer someone else had asked for, so on an account with a lot of history the answer had not arrived yet and the step let you carry on. It now asks for the figure itself and updates on its own when it arrives.
While that check is running, the step says so and Continue waits for it. This matches how the final Summary screen has always behaved before Start Migration.
If your usage cannot be checked, you are told that too, and you are not stopped. Being refused on a figure we could not confirm would be worse than being refused a little later, so you can continue and it is checked again before any file is moved.
The "Email Satrang Technologies" button now shows our address next to it. On a computer with no email program set up, which is normal if your email lives in a browser tab, that button did nothing at all when clicked. The address is now on screen to copy, and the button still works for everyone who does have an email program. The same is now true of the "Contact Satrang Technologies" link on the license screen.
Your allowance, and what counts against it, are unchanged. This is about when you are told and how you can reach us.
If your usage looks larger than your allowance, MigrateStream now says why. Your usage figure counts every file ever migrated into that Google account, including files migrated under an earlier license key, so it can be bigger than the allowance on your current key. Seeing "Used 500 MB of 15 MB" with no explanation reasonably looks like a mistake on our side. The explanation now appears at the file-selection step, which is where you are actually stopped.
When your allowance is used up, there is now a button to email us about it. It opens a message with three numbers filled in: how big your selection is, what your allowance is, and what is left. Nothing about your Salesforce data goes into it - no org, no object names, no file names.
The license panel no longer asks you to connect Google Drive after you have connected it. While your usage figure is being worked out it now says so. That wait is longest on accounts with the most history, which is exactly where the old message was most confusing.
The usage figure shown in the header is no longer remembered when it was measured during a problem. If Google Drive could not be read properly, a figure taken at that moment used to stay on screen for the rest of your session. Now nothing is shown instead, because a missing number is honest and a wrong one is not.
The light/dark button on the website pages now shows the mode you are actually in. Opening a page in dark mode still showed the moon icon. The pages themselves were always correct; only the icon was wrong.
None of this changes what counts against your allowance, or any figure. It is what is shown and said about them.
MigrateStream keeps a small running total in your Google Drive of how much you have migrated, so the figure follows you between computers. If that file could not be read at the moment we went to update it - a dropped connection, a Google hiccup - it was treated as though it were empty, and a smaller number was written over the real one. The larger figure was gone for good, and it stayed wrong after a reload, because the file itself now held the wrong number.
That total is now only ever updated when its current value has actually been read. If we cannot read it, we leave it alone rather than guess. It can still go up, never down.
Reading it now retries the same way every other Drive request does, so a brief blip no longer counts as a failure at all.
A migration that moved no files no longer touches the total, which is the case that was most exposed: a run that failed because the network was down was, until now, the run most likely to rewrite this file while the network was still down.
You do not need to do anything. If your usage figure looks lower than you expect from an earlier release, it will correct itself the next time a migration finishes normally.
At the start of a migration, the line that said "Checking your destination for files already migrated" was counting something else. The number beside it was every file you have ever migrated into that Google account, not the files in the folder you picked. Choose a brand new empty folder and you could still be told that thousands of files had been checked, which was true of the account and untrue of the folder.
It now reads "Searching your previous migrations for files already in this destination". That is what the step actually does: it looks through everything you have migrated before, then keeps the ones already sitting in the folder you chose. The number is how far through that search it has got, so a large count on an empty destination now makes sense instead of looking like a mistake.
The folder line beside it was corrected too, because it named files while counting folders.
Nothing about what is checked, what is skipped, or what counts against your licence allowance has changed. This is wording only.
When you use Subfolder per parent record, MigrateStream now works out which record each file belongs to once per migration instead of twice. The summary and the migration itself were each asking Salesforce the same questions, minutes apart, and on a large selection that was a substantial part of the wait before your first file moved.
The saving applies whichever way you get there, including the common case where your selection comfortably fits your licence allowance. That case was doing the work twice by a different route, and fixing only the other one would have looked complete without helping most migrations.
The lookups are repeated when they genuinely need to be. Changing which object or field you map, selecting different files, or signing in to a different Salesforce org all cause a fresh look, because the previous answers no longer apply.
Retrying failed files reuses the same answers rather than asking again, since the failed files are part of the selection already looked up.
Nothing about which folder a file lands in, what is skipped, or what counts against your licence has changed.
Retry Failed Files Only now checks your remaining licence allowance before it starts, the same way starting a migration from the summary always has. Previously it was the one way to begin a migration that did not, so a retry could start and then be stopped part way through once the limit was reached. Being told up front is better than being stopped halfway.
If the retry would not fit, it says so and does not start, naming both how much it would migrate and how much of your allowance is left.
While it checks, the button says what it is doing and counts as it goes, then returns to its normal label.
Select all matching and Clear selection no longer go quiet. Both look through every file that matches your current filter, which takes a moment on a large org. The button now reads "Selecting... 1,200 files found" and counts up, instead of simply greying out with no explanation.
Nothing about what is migrated, skipped or counted against your licence has changed for any migration that already worked.
The migration screen no longer sits at 0 percent with nothing moving. Before your first file can move, MigrateStream checks your destination for anything already migrated. That check now says so and counts as it goes, instead of leaving the screen looking stuck.
It also no longer shows your previous migration for a moment. When you started a new migration the screen could briefly show the last one finished at 100 percent, with the wrong number of files. It now starts from zero and says it is getting ready.
The time estimate says when it will be available rather than showing a stale figure from the previous run. An estimate needs a few files to have moved before it means anything, so it appears once they have.
Two more waits elsewhere now report progress too, found by a new internal check rather than by anyone running into them: measuring a selection with a large number of excluded files, and adding up files already in your destination.
Nothing about what is migrated, skipped or counted against your licence has changed in this release.
Start over now clears the screen as well as the selection. Previously your ticked objects, your chosen options and your folder settings stayed on screen after you confirmed Start over, even though the migration itself had genuinely been reset. That was worse than untidy: the screen could show three objects selected while the tool was actually set to All Files, so continuing would have migrated far more than the screen suggested.
The same applies to Start a New Migration after a completed run, which uses the same reset.
The progress messages now count things you recognise. While your summary is being prepared you will see how many files have been checked, how many of your files have been matched to their records, and how many records have been read, instead of counts of internal pages and batches that had no relation to your selection.
The licence check now names the Google account it is checking. It reads "Checking what has already been migrated into your.name@example.com" so it is clear the number covers everything ever migrated into that account, not just the files you have selected now.
Nothing about what is migrated, skipped or counted against your licence has changed in this release.
If you rename a record in Salesforce, MigrateStream now still recognises the files it already migrated for that record. Previously a rename meant the next migration could not find them, copied every one of them again into a second folder, and counted those copies against your licence a second time.
The same rename could also stop a migration from starting at all. The summary counted those already-migrated files as new, which could push you over your allowance and block a migration you had already paid for. That is fixed by the same change.
Your folders are left exactly as they are. Nothing is renamed and nothing is moved. Files already migrated stay in the folder they are in, and any new files for a renamed record go into a folder with the new name, so that record can appear in two folders. We would rather leave your Drive alone than reorganise it for you.
Files that really are new are still migrated and still counted, exactly as before. And a migration into a different destination folder still copies everything, so choosing a new destination always gives you a complete copy.
Repeat migrations are also faster. Checking what has already been migrated is now a single lookup for the whole destination rather than one per record folder.
Pressing Start Migration no longer leaves you watching a spinning button with no explanation. On a large folder-mapped selection this last step can take several minutes, and it now names each stage as it happens: retrieving the final file list, checking Salesforce record links, and reading record folder names, each with a count so you can see it advancing.
You are now told, clearly, that leaving or reloading during that step is costly. Your Salesforce and Google sign-ins are held only for as long as the tab is open, so a reload clears them and your migration setup with them. Your browser will also warn you if you try to leave.
This release changes what you are told, not what happens. The same files are selected, the same folders are chosen, and the same amount is counted against your licence. The step is not faster yet; making it faster is separate work.
Going back to the migration summary no longer re-checks your licence usage from scratch. The first check in a session still reads your whole Google Drive, which is what makes it accurate. After that, stepping back to change your destination or your options and returning to the summary is immediate instead of costing another full check.
The numbers are exactly the same. Your usage figure, your remaining allowance and the decision about whether a migration can start are all unchanged. This release changes how often the check runs, never what it counts.
Anything that could change your usage refreshes it straight away. Finishing a migration, cancelling one part way, or stopping one early all mean the next summary reads your Drive again, so files you have just migrated are always counted. Switching Google account or licence key refreshes it too.
Nothing is kept once you leave. The remembered figure lives only in the open tab, so reloading the page or coming back later always starts from a fresh reading.
Your migration summary now appears as soon as it is known, instead of waiting for the licence check to finish first. File count, total size, largest file, destination and the rest are all shown immediately.
The licence usage line fills in last, and says so while it is still working. It reads "Checking your usage against your ... limit" rather than showing a number that is not ready yet.
Start Migration stays unavailable until the licence check has genuinely finished. Seeing the summary sooner never means a migration can begin sooner than it should, and a selection that is over your allowance is still stopped exactly as before.
Your licence usage figure and the amount charged against your allowance are unchanged by this release.
Clicking the MigrateStream logo inside the app now opens the home page in a new tab instead of leaving the app. Previously that one click could quietly discard both your connections and everything you had set up, with no warning, because your sign-ins are held only for as long as the tab is open.
Dark mode now carries across every page and is remembered. Seven pages used to open in light mode whatever you had chosen, and switching them back did not stick. Pages also apply your choice as they load, so there is no white flash first.
The FAQ is now reachable from inside the app, from the footer alongside the other guides.
If a trial allowance is what stops a migration starting, the message now says so. It previously read as though the product could not handle the amount of data, which was never true: a full licence covers a migration of any size. The practical advice about selecting fewer files is unchanged.
Nothing about how your licence usage is measured or charged has changed in this release.
The step that checks your migration before you start now explains itself on every setup, not just some of them. It says what it is checking, warns that a large check can take a few minutes, and shows live progress as it reads. Previously, migrations into a single fixed folder showed only a spinner with no text at all, however long the check took.
You can now cancel that check on every setup, and cancelling actually stops the work rather than leaving it running in the background. Returning to the step no longer starts a second check alongside the first.
The check reads your Drive about five times more efficiently, which makes it noticeably quicker. Please note this does not remove the underlying effect: the check still grows slowly as you migrate more files into the same Google account over time, and a fuller fix for that is planned separately.
Your licence usage figure and the amount charged against your allowance are completely unchanged by this release.
Connecting Google now reliably opens a small sign-in pop-up instead of sometimes taking over a whole new browser tab. This is most noticeable when reconnecting in the middle of a migration, where a full tab made it look like you were being sent away from your run.
If your browser blocks the sign-in window, the app now says so plainly and you can allow pop-ups and try again straight away.
After reconnecting Google in the middle of a migration, the Google account chip in the top bar now comes back immediately, showing the account actually in use. Previously it could stay hidden for the rest of the run even though the migration had recovered and was uploading normally.
The chip always reflects the account you just signed in with, so if you reconnected with a different permitted account, that is the one the header shows.
The Migration Summary's preparation step now shows live progress - which object it is checking and how many batches remain - instead of a single "finalizing" message that could sit unchanged for a long time on a big folder-mapped selection.
Large selections set expectations up front: the screen now says how many files are being prepared and that preparation on a selection that size can take several minutes.
The duration estimate now says it covers migrating time only, so the preparation running on the Summary screen is never mistaken for the migration itself running slowly.
Clicking Start Migration while preparation is still running now explains that it unlocks when the checks finish, instead of doing nothing.
When a migration pauses because the Google connection was lost, the notice now stays on screen until the migration actually resumes, and it says exactly what to do: press Resume to sign in to Google again.
Pressing Resume now always opens Google sign-in when the connection was lost, so the migration can no longer briefly resume and pause again without explanation.
Controls that cannot act while a migration is running or paused now say so. Start over and Retry Failed Files Only previously did nothing silently in some situations; they now show a clear message instead.
The estimated time remaining on large migrations is now realistic and keeps updating. Previously a big migration could show a fixed "99h" for the whole run even when it would really finish in under two hours.
Migrations of a few very large files now show an estimate too, instead of staying on "estimating..." for the entire run.
The estimate stays honest in edge cases. It shows "estimating..." until there is enough real progress to measure, and "more than a day" instead of an exact-looking number when a run genuinely is that large.
Reconnecting Google Drive in the middle of a migration now applies the same licence account check as the first connection, so a migration can only continue into a Google account your licence covers.
Disconnecting Google from the top bar during a migration now asks for confirmation first. If you do disconnect, the migration waits on the same screen for you to reconnect and press Resume, keeping its progress, instead of sending you back through the wizard.
Starting a new migration can no longer silently replace one that is paused - the app now tells you a migration is already running.
The license screen now reminds you about the one-time CORS setup step a Salesforce org needs before its first connection, with a direct link to the walkthrough.
If that step was skipped, connecting now explains exactly what to add in Salesforce Setup instead of showing a generic network error.
The How To Use page's CORS section is now a step-by-step walkthrough, so an admin can complete the setup in about a minute.
Dates now read as "27 July 2026" instead of "27/07/2026", so there is no guessing whether a number is the day or the month.
Licence messages are clearer about what actually happened, so a key that has been switched off no longer reads the same as one that was typed incorrectly.
Internal licensing maintenance. No change to how the app looks or behaves day to day.
Reliability improvements to Salesforce session handling during long migrations. If a session does end mid run, the migration screen now offers a direct way to sign in again.
Internal licensing improvements to support evaluation access. No change to how the app looks or behaves day to day.
You can now click any status pill (Planned, Migrating, Migrated, Skipped, Failed) on the migration screen to filter the file list to just those files, which makes finding specific files easy on large migrations. Click the pill again, or Show all, to see the full list; the counts keep updating live either way.
You can now cancel the Google Drive connection and retry right away if the sign-in window gets closed, instead of waiting for it to time out. A Cancel button appears while the connection is in progress.
Reliability improvements to the migration summary and to resuming folder-organized migrations. Internal robustness work with no change to how anything looks or behaves day to day.
The migration summary now shows a brief finishing-up status while it completes the final checks, so the screen no longer looks idle before Start Migration turns on.
Softened the wording of the large-file notice on the migration summary. It now explains that large files simply take longer depending on your connection, and that MigrateStream tracks every file so nothing goes unaccounted for.
Continuing a migration that organises files into per-record folders now counts only genuinely new uploads against your license. Before starting, the app checks each destination folder for files that are already there, without creating or changing anything, and does not count those files again.
That check is now fully visible while it runs. The summary screen shows an evaluating status from the moment it opens, live progress as folders are checked, and a note that large selections can take a few minutes. Start Migration enables the moment the evaluation completes.
The migration summary prepares with roughly half the Salesforce queries it used before, so it appears sooner on large selections.
Each entry in the Warnings panel now shows the time it occurred, so events during a long migration, such as automatic session refreshes, can be matched to what you saw at that moment.
The license usage figures now show the right unit for their size. A small cap or a small amount of usage used to display as 0.00 GB, which told you nothing. Usage and your cap now read in KB, MB, or GB as appropriate, so the numbers are clear at any size.
When your selection is larger than your license allows, the summary screen now tells you exactly what to do: go back to the file selection step and choose fewer files. The message points you to the step where the change is made, rather than leaving you to find it.
If your license has no remaining room, the app now tells you at the file selection step, so you find out before setting up a destination and options for a migration that cannot run.
Fixed a case where continuing a migration to a single destination folder could be incorrectly stopped at the summary screen before it started.
The license data-limit message at the migration summary now tells you the numbers. If your selection is larger than your license allows, the message names both your selection size and how much of your license remains, and suggests selecting fewer files. Previously it said only that the limit would be exceeded, leaving you to work out the shortfall from two separate rows.
Warnings that block are now visually distinct from warnings that don't. The migration summary shows advisories (very large files, long-running migrations) that are informational only, and these previously looked identical to the one message that actually disables Start Migration. The blocking message now stands apart, so it is clear which message is the reason the button is unavailable.
Fixed: the logo overlapped the tagline text in the top navigation of the Quality Report page. Other pages were unaffected.
Fixed: the MigrateStream logo in the top navigation was rendering at about a third of its intended size on every page. The image file carried a large transparent border, so most of the space reserved for the logo was empty. Both logo files are now trimmed to the artwork itself, and the mark fills its space properly.
The sign-in screen now shows the product logo instead of a generic magnifying-glass icon.
Fixed: after Start Over, the Advanced SOQL Filter box still showed your previous filter even though the filter had actually been cleared. This mattered more than it looked: because no filter was really applied, Continue was enabled, so it was possible to start a migration of every file while a filter sat visible on screen. Start Over now clears the filter box, any error under it, and the section itself, exactly as a fresh page load would.
Everything else about Start Over is unchanged: it still keeps you signed in to Salesforce and Google, and still clears your selection, destination and options.
Rewrote "Choose a destination" and "Review the summary, then run the migration" so each point covers one idea. Several points had grown into six or eight line paragraphs carrying four or five separate facts each, which made finding one specific answer mean reading the whole thing. Each fact now gets its own line, with sub-points where a detail genuinely belongs under the point above it.
Nothing was removed. This is the page you read before your first migration, so every fact from the previous version is still there, just easier to find. The longest single point went from 746 characters to 274.
Fixed: an Advanced SOQL Filter that failed was still being applied behind the scenes. If the filter could not run, it was already saved as your active filter, so it kept failing every later action on that screen - switching scope mode, for example, would show the same error again up in the Scope section. A filter that fails is now simply not applied: your previous working filter stays in place, along with any files you had excluded from it.
Your exclusions are no longer lost to a filter that never worked. Applying a filter clears your per-file exclusions, because a different filter means a different set of files. That reset now only happens once the filter has actually succeeded.
A filter that applies successfully behaves exactly as before.
Fixed: applying a filter while By Object was still scanning could leave the wrong file counts on screen. The earlier scan kept running in the background instead of stopping, and when it finished it could overwrite your filtered counts with the unfiltered ones, so the object list showed totals for the whole org while a filter was applied. Counts now always come from the scan you actually asked for.
Fixed two related problems in the same area: the Cancel button on a scan could silently stop working after a second scan started, and the object list could flicker away and then repopulate itself from the scan you had already replaced.
Selecting a scope, switching modes, and Refresh from Salesforce all behave exactly as before.
Fixed: an error from the Advanced SOQL Filter appeared in two places at once - once up in the Scope section at the top of Select Files, and again in red under the Apply Filter button. It now appears only under Apply Filter, next to the input that caused it. The Scope section is left showing nothing rather than an error you did not cause, since its counts genuinely are unknown until the filter is valid.
This was not new, and it was not limited to filter errors: a connection, session or rate-limit problem hit at that moment duplicated in exactly the same way. It only became visible in the previous release, when error messages got short enough for both copies to fit on screen together. Errors raised by the Scope section's own actions still appear there, unchanged.
When an Advanced SOQL Filter names a field that does not exist, the error now leads with the sentence that tells you how to fix it - for example, "No such column 'name' on entity 'ContentVersion'. If you are attempting to use a custom field, be sure to append the '__c' after the custom field name." Salesforce's own wording is kept exactly as it is, field name and __c hint included, because that is precisely what a Salesforce admin needs. What is gone is the noise that used to wrap it: our own "request failed (HTTP 400)" prefix, the echoed query with its caret marker, and the trailing "reference your WSDL or the describe call" line.
Errors that point to a problem on our end still show their full technical detail, echoed query included, so they stay just as reportable to us as before. Only the errors you can actually fix yourself get trimmed.
Migrations that sort files into subfolders by a Salesforce field are now more resilient on large orgs. When organizing many files into per-record subfolders, the app makes a series of quick lookups to Salesforce. If one of those lookups hit a momentary rate limit or network blip, it could previously stop the whole setup step; those lookups now retry automatically and ride through a transient hiccup, so preparing a large mapped migration is far less likely to be interrupted. The same automatic retry was also added to the "Select all matching" action in the file-refinement step.
Added an extra safeguard to our server configuration so sensitive setup files can only ever run as code and never be served as readable text - a defense-in-depth measure with no change to how the app works for you.
Moved a small piece of backend plumbing behind the "Request Evaluation Access" form to remove a dependency on shared infrastructure elsewhere on our site. Nothing about how the form looks, behaves, or responds to you has changed.
The "Request Evaluation Access" form now points directly at any required field you leave blank - First Name, Work Email, or your migration details - with a message right under that field before you submit, so it is clear at a glance what still needs filling in instead of a single message after the fact.
Fixed: after finishing a migration and clicking "Start New Migration," the Refine Selection file list could get stuck. If you had that section open during your first migration, reopening it on the new one could show "no files match" with a selection count that did not match what was on screen, instead of loading your files fresh - no page refresh should have been needed to fix this, and now none is. Also fixed a related display bug where the "select all" checkbox above the file list could appear checked even when the list below it was empty.
Fixed a related issue on the same screen: the destination step could also show stale information after Start New Migration - the Continue button, folder name, and "create a subfolder" option could still show details from your previous migration instead of resetting. Picking a destination now always starts fresh, and Continue is guarded so it can never move forward without a real destination chosen.
Improved how reliably your browser picks up a new release. In rare cases, a browser could keep using an older cached copy of the app after we shipped an update, even though the version number showing in the app looked current. This is now fixed, so a new release reaches you reliably every time without needing a manual hard refresh.
Fixed a misaligned icon on the license activation screen next to the "verified entirely in your browser" note.
The one-time admin setup steps (CORS and Connected App) are now front and center in the How To Use guide - a clearly labelled "Before you start" section near the top, so first-time setup is easy to find instead of buried partway down the page.
The license entry screen now explains what a license key is and where it comes from, right above where you paste it, with a clearer link to the full explanation.
The How To Use guide's destination and run-migration sections are now bullet points instead of dense paragraphs, for easier scanning - same information, easier to read.
Updated our wording to be clearer about how long a connection lasts. "Auto-renews silently" was true but easy to misread as "you never have to reconnect" - it means MigrateStream keeps your Salesforce and Google connections alive on their own while your browser tab stays open, not that they survive a refresh. Since MigrateStream keeps no server-side session at all, by design, your connections live only in that tab: refreshing the page or closing the tab always means reconnecting, and doing either mid-migration will stop the run. The trust badges, How To Use, and FAQ all now say this plainly - no behavior changed here, just the description of it.
Found the real cause of the Firefox-only folder picker error, and it is not a MigrateStream problem. Firefox's Enhanced Tracking Protection, a privacy feature on by default, can stop Google's own folder picker from verifying your session, which shows up as a misleading "The API developer key is invalid" error. If you hit this: click the shield icon in your address bar, turn off Enhanced Tracking Protection for this site, and try again. This is now explained right in the app the moment you reach the destination step in Firefox, plus in the How To Use guide and the FAQ, so you are never left guessing at a raw error message.
Went looking for the same class of issue behind a couple of earlier fixes, before customers hit them, and found several. A brief network hiccup could previously interrupt: resuming or re-running a migration to a destination that already holds many previously-migrated files, browsing/paging the "All Files" scope, bulk "select all matching" actions, folder creation under per-record dynamic folder mapping, and the moment the app silently refreshes your Salesforce or Google session mid-run. All of these now retry automatically the same way the rest of the app already does, instead of surfacing an error or asking you to reconnect. No workflow changes - this is purely under-the-hood resilience.
The hero and step-by-step screenshots on the landing page are noticeably sharper now, and you can click any of them to see the full-size version.
Found and fixed the real cause of an intermittent connection error some customers hit when scoping "All Files" down to a small, specific set of files (a handful selected by hand, no SOQL filter applied) - migrating everything, or narrowing with a filter, was never affected, which is exactly why this was so hard to pin down. This is a genuine fix, not a workaround, and closes out the connection-reset issue reported in earlier releases.
The landing page's first step ("Connect Salesforce & Google Drive") now shows a real screenshot, matching the other three steps - it had been sitting as a placeholder box.
Investigated a Firefox-specific issue where the Google Drive folder picker could fail to open. The app now states its browser security settings explicitly instead of leaving them to each browser's own default, and the picker itself is set up a little more defensively - both worthwhile improvements on their own. If you still hit this specifically in Firefox, contact Satrang Technologies - the remaining piece is a one-line setting update on our end, not something you need to change.
Folder Mapping can now name a subfolder after a related parent record, not just the record's own fields. Objects like Email Message, Task, and Event are hard to identify by their own fields alone - you can now name their subfolders after the record they're related to instead (for example, an Email Message foldered by its Case's Case Number, or a Task by whatever it's related to). This appears as an extra option right in the existing "Name subfolders by field" list; naming by the object's own field is still the default.
Scanning by object is now more resilient to network hiccups on large orgs. A prior release's attempt at a faster scanning approach for orgs with the "Query All Files" permission turned out not to work as intended (see the note on the entry below) and has been removed; in its place, every step of the scan now retries automatically if a connection drops partway through, and runs at a more conservative pace specifically tuned to avoid the kind of network interruption a few customers hit on very large orgs.
If a scan is still slow or fails, the screen now says so directly - with a suggestion to narrow what's being scanned (an object filter, or fewer objects) - instead of a spinner with no explanation or an error only visible in the browser console.
Fixed: the app could fail to start with the license screen never becoming interactive. A loading-order mistake meant one small piece the app needed on its very first screen wasn't ready in time. This is fixed, and we've also hardened the startup error screen itself: if something like this ever happens again, it will now clearly say so and show the real cause, instead of suggesting a fix that wouldn't have worked.
Correction (added Jul 14, 2026): further testing showed this approach did not actually work as intended for any org, including orgs with the permission this entry describes - it has been removed. No scanning behavior actually changed for anyone in this release as a result; a real reliability improvement that benefits every org, regardless of permissions, shipped in the release above.
Scanning all files (or browsing by object) was intended to be faster and more reliable for any org whose Salesforce admin has granted the "Query All Files" permission - the scan would read every file's links in one pass instead of many small lookups. Orgs without that permission saw no change either way.
Fixed: a misleading connection-error message. Scanning all files (or browsing by object) could show a "check your org's setup" message that wasn't actually the real problem - if any Salesforce request had already succeeded earlier in the same session, that message no longer appears; the real error is shown instead.
Fixed: the evaluation-request form's required fields weren't marked. First Name, Work Email, and your migration details are now clearly starred as required, and submitting the form works correctly.
Fixed: the Refine Selection step could trap your scrolling inside a long record list, and the Back/Continue buttons could sit slightly clipped at the bottom of the screen. Both are now fixed, along with the same protection on the by-object list.
The product logo still shows a placeholder mark on every page - the real logo image is in progress and will replace it once it's ready, no action needed from you.
Every page now has its own, unique title and description - the text that shows in a browser tab and in a search result - instead of several pages sharing generic or oversized ones.
Sharing a link to any page now shows a proper preview in Slack, iMessage, or social apps, with the right title and description, instead of a bare link.
New: a dedicated FAQ page and every content page now show up correctly in search, after a stray setting had accidentally hidden the release notes page from search engines.
Fixed a couple of page-structure bugs that only screen readers and search engines would ever notice - a duplicate page heading in the app, and one content page that had no heading at all.
Every decorative icon is now correctly marked as decorative for screen readers, so they read the surrounding text cleanly instead of announcing dozens of unlabeled icons.
New: a sitemap listing every page, to help search engines find and index the whole site.
One consistent nav design everywhere. The app, every content page, and the landing page now share the same header sizing, spacing, and gradient strip, instead of the app and content pages carrying an older, slightly smaller treatment.
One shared footer everywhere, with the redundant brand line removed. Every page's footer now carries the same page links, powered-by pills, privacy strip, and copyright line - and no longer repeats "MigrateStream by Satrang Technologies" underneath the dual-logo nav, which already says that.
The app header's brand block now links back to the landing page, instead of doing nothing when clicked.
New: a dedicated FAQ page with 15 questions (up from 7), covering read-only file handling, supported browsers and file types, license caps, sandbox trialing, and more. The landing page's own FAQ section is trimmed to its top 5 with a link to the rest.
"More by Satrang" now lists every Satrang Salesforce app plus QueryStream, instead of just four of them.
Fixed: the landing page's hero trust pills could wrap into a lone orphan pill at in-between window widths. They now sit balanced at every width.
Fixed: the trust-story diagram's "Sign-in only, not contacted again" label could overflow its box. It now wraps cleanly at every width.
Tighter, more consistent spacing between landing page sections, with alternating background tints so section boundaries read clearly without relying on whitespace alone.
One consistent card width across the whole wizard. Every step now shares the same frame instead of visibly resizing as you move between a dense step and a simple one.
Folder Mapping is a real table now. When your selection spans more than one object, the destination step lines up each object, its naming field, and a live path preview into proper columns with a header row, instead of stacked text.
The naming-field picker is now an obvious dropdown. It's wider (no more truncated field names), shows a chevron, and opens the full field list the moment you click or focus it, with the current choice highlighted - no more erasing text to see your other options.
Fixed: the run screen's file list fought manual scrolling. Scrolling away from the active row could get yanked straight back. Scrolling now immediately pauses "Follow active row" (the checkbox unchecks itself to show it), and re-checking it resumes following.
The completion screen keeps the run's own visuals. Finishing (or cancelling) a migration no longer collapses everything to one sentence - the same status chips and progress ring from the run screen stick around with their final numbers, plus a styled line for total data transferred and how long it took.
The license pill always shows your usage once it can be measured - customer name and usage together, not one or the other.
The Satrang Technologies logo now appears in the header, alongside MigrateStream's own mark, matching every other Satrang product.
A plausible ETA, even on thousands of tiny files. The run screen's time estimate no longer collapses into a nonsense number when a run is mostly small files - it now shows "estimating..." briefly at the start, then a realistic estimate for the rest of the run.
Create a subfolder right from the destination step. Pick a folder in Drive, then optionally type a name for a fresh subfolder to migrate into - no need to create it in Drive first and come back.
Leaving mid-run now actually warns you. Reloading or closing the tab during an active migration shows a real "you'll lose progress" warning first.
Clearer signal when a network hiccup recovers on its own. A brief connection drop (or a browser slowing down a background tab) that resolves itself is now called out in the warnings panel, instead of only ever showing up as red console errors with nothing on screen.
A richer downloadable report. The Migration Report CSV now includes ContentDocumentId/ContentVersionId, the linked record and object, your Salesforce org Id, and start/completion timestamps for every file - built for a support investigation or an audit trail, not just a glance.
Every confirmation dialog is now on-brand. Start Over, Disconnect, Remove License, Cancel, and Stop immediately all use a proper MigrateStream dialog now, with working Escape/Enter keys, instead of the browser's own (and blockable) confirm popup.
Also: the license screen's Activate button is properly centered, and a still-queued file's status keeps you posted if it needs a moment to retry after a connection hiccup.
Folder Mapping now handles multiple objects in one run. Select files linked to more than one object (Accounts and Cases, say) and each gets its own destination folder and its own field to name subfolders by - no more files quietly landing in "Unfiled" just because your selection spans more than one object.
More control while a migration is running. A still-queued file can now be removed from the run with one click, right from the run table. A new "Stop immediately" option aborts in-flight transfers right away, for when waiting on the last few files to finish isn't fast enough.
Clearer reporting after a cancelled run. The completion summary and downloadable report now account for cancelled and never-attempted files by name, alongside migrated, skipped, and failed.
Jump straight to Salesforce. In the file list and the run's report, a file's name and its linked record both now open directly in Salesforce.
Friendlier advanced filter errors. Typing a full query instead of just a condition, or leaving a stray semicolon from testing it elsewhere, is now caught immediately with a plain-language explanation - before anything is sent to Salesforce.
The license-entry screen now shows the MigrateStream logo, name, and version, with a link explaining what a license key is.
Also fixed: migrated and skipped files' Google Drive links could disappear once a run reached the completion screen - they now persist. General startup reliability improvements as well.
Your license, at a glance. The header now shows a live license pill - your customer name and cap right away, switching to "Used X of Y GB" automatically once Google Drive is connected and your usage can be measured.
A real license panel. Click the pill to see your customer name, the Salesforce org(s) and Google account(s) your license covers, its expiry, and current usage, all in one place.
Replace your license key right from that panel - paste a new one (for a top-up, an extension, or any other change), it's verified the same way as at first entry, and swaps in immediately.
Remove your license to sign out of it entirely and return to the license-entry screen - the clear answer to "how do I disconnect from the current key."
License keys. MigrateStream now runs on a signed license key entered once, verified entirely in your browser - no account, no password. Your license's customer name, expiry, and current data usage are always visible; a data cap (in GB) is enforced up front at the summary screen and, if needed, mid-run, with a clear message rather than a surprise failure.
A visible path through the wizard. A persistent step tracker (Connect, Select Files, Destination, Options, Summary, Migrate) now sits above every screen - jump back to any completed step without losing your selections, or use "Start over" to clear your choices and begin again. Every step also has its own Back button.
Problems surface where they happen. A filter or query problem is now caught the moment you apply it, not three steps later at Migration Summary - Continue and Start Migration both stay disabled until the step that owns the problem is resolved.
The run screen is a live table, not just a log. Every file in the run appears up front and updates in place as it moves through planned, migrating, migrated, skipped, or failed - migrated and skipped files' names link straight to the file in Google Drive. A row of live counts next to the progress ring shows the run's shape at a glance.
Pause, Resume, and Cancel now confirm themselves. Each shows an immediate "Pausing...", "Resuming...", or "Cancelling..." state instead of leaving you guessing whether the click registered.
The warnings panel only appears when there is actually a warning to show, and reads as an advisory notice rather than a loud alert.
Destination step can now create one subfolder per linked parent record automatically (for example, one subfolder per Account), named by a field you choose, instead of putting every file in one place.
A live example line shows exactly where files will land before you start.
Skip/resume and duplicate detection work the same way inside mapped subfolders as they do for a single fixed folder.
The downloadable report now includes which destination folder each file went to.
Connect Salesforce, connect Google Drive, choose files, choose a destination, and run - the complete flow, not a preview.
Choose all files, or files linked to specific objects, with live counts and total size shown before committing to anything.
An advanced filter lets you type your own condition to narrow the selection further, with a live preview of how many files and how much data match.
A summary screen shows total files, total size, the largest file, and a rough time estimate before you start - never a surprise mid-run.
The run screen shows real progress with a live file-by-file manifest, and you can pause, resume, or cancel at any point.
If your Google or Salesforce session needs reconnecting mid-run, MigrateStream pauses and asks you to reconnect rather than failing anything.
When a run finishes, download a CSV report and retry only the files that failed, if any did.
Connect your Google Drive account alongside Salesforce, using Google's own consent screen.
MigrateStream only ever requests access to files it creates or that you explicitly pick - never your whole Drive.
Log in with Salesforce directly on Salesforce's own login page. Your session renews automatically in the background for as long as you keep using MigrateStream.
Zero server storage: your access tokens live only in your browser for the length of your session, and file content never passes through our servers at any point.
Ready to move your Salesforce Files?
Connect Salesforce and Google Drive, and start your first migration in minutes.