I'm in the middle of implementing Update migrated content in-place, while thinking ahead to Workflow integration. The checkboxes on the current dashboard basically are defining a default workflow, for use by cron processing or the drush migrate all command, and adding the update option is making this just a little too complicated. So, I'm going to take a little poll here, followed by a description of what I'm thinking of in terms of a V1 dashboard and workflow approach, while anticipating a full implementation of defined workflows in a future version.
- Do you use migrate module's capability of running migrations via Drupal's cron.php? If so, how difficult would it be for you to turn to using Drush for running migrations?
- Is the capability of running multiple migrate operations (e.g., turning on a clear here and a couple of imports there) interactively from the Dashboard important to you? Or do you generally just use interactive migration for single operations like running a 100-item node import for testing?
- Do you use the processing API functions (migrate_content_process_import() etc.)? If so, would refactoring these functions (e.g., changing arguments) be difficult for you?
So, here's what I'm thinking... First off, let me make clear that I consider the primary purpose of the migrate module as providing services to developers handling complex migrations from other CMS data to Drupal. If less-technical users doing fairly simple migrations manage to make use of it out-of-the-box, that's great, but the design center assumes a fair level of technical sophistication - and shell-level access to the server (i.e., the ability to run drush commands, and to schedule them via cron). The API should be optimized to support drush operation, while permitting other UIs to be built as well (i.e., defaults should reflect the drush context).
Now, most of what I'm looking for with workflow integration can be done today simply with sequences of drush commands. E.g.
#!/bin/sh
drush disable pathauto
drush migrate import Users
drush migrate import Articles
drush enable pathauto
drush pathauto bulkupdate # Well, it would be a nice command to have...So, I would deprioritize trying to define workflows in the module for now, and revisit it after (finally) getting Migrate V1.0 out. My tentative plan (pending your feedback) is:
- Implement Update migrated content in-place via drush only for now (I have a short-term need to release this capability, and don't want to have refactoring the Dashboard page hold up committing this). This is basically done for nodes, needs more testing and extension to other supported destination types before I commit (within a few days).
- Refactor the management of content set flags (clearing, importing, scanning, semaphore), and the migrate_content_process_*() APIs. The clearing/importing flags have been somewhat overloaded, used both for enabling processes and showing status, and scanning is simply ill-conceived and needs to go away.
- Along with #2, refactor the Dashboard page - eliminate the system of checking off operations, in favor of simple buttons to run single interactive processes. Actually, maybe the content set listing and dashboard pages could be merged...
- Potentially, eliminate the cron operation. If it's to be kept, then there will need to be a means to select which operations are to be run via cron (instead of the current global cron enable/disable).
- Eliminate drush migrate all - to run a particular sequence of actions, you will need to use a sequence of the individual drush clear and import commands.
- Support clearing all content sets, or importing all content sets, simply by omitting an explicit content set on the drush migrate clear/import commands (alternate approach to http://drupal.org/node/649368).
Thoughts?

Comments
There is a lot going on here,
There is a lot going on here, but personally I am comfortable using drush, and would not mind at all moving toward that and getting rid of cron.php, though as you mention would limit users who have hosts without ssh. I do like being able to test from the GUI though. btw, Does drush have any timeout considerations?
About the process API functions, I really like having an api with a single array or object instead of multiple separate parameters, and would suggest that form if the API is to change. I also then makes it easy for integration modules to add keys to that object so that they can pass their own parameters as well.
Frank Carey
Twelve Grove Inc. Drupal Development
Thanks for the feedback,
Thanks for the feedback, Frank.
I'm not quite sure why, but drush seems to be above max_execution_time (I've never seen a PHP timeout, and I've run migrations lasting hours). But, better yet, as part of the refactoring the processing functions will now return MIGRATE_RESULT_INCOMPLETE when either max_execution_time or memory_limit is approaching exhaustion. Interactively, this will cause a new batch to be invoked to continue processing, and Moshe is working on having drush use backend_invoke to pick things up in a fresh process - once he commits that, resource exhaustion should not be an issue at all.
The processing functions currently take $mcsid to identify the content set to process, and $options for parameters to process (just as you suggest). They also still have a $messages array, which I tried to kill in this refactoring but couldn't quite abandon. This needs some more thought, since we currently have two means of communicating messages, through a $feedback callback (so drush can support --feedback and give you live updates) and the $messages array (so the Batch API can pick them up on return and display them before the next batch starts). Batch API could use the callback, but would have to communicate between the callback and the batch function via a global. Better than what I've got now, I think, but I'm open to better ideas...
Mike Ryan