If a customer has a Bricolage site, and wants to use some of the features of drupal, they can try out the Bricolage Integration module: http://drupal.org/project/bricolage

Otherwise, it is also possible to migrate from a Bricolage project entirely to drupal. To migrate data, I analyzed the database, to get unique ids (story__id) and the directory structure of the generated html files. Taxonomy and/or content type was determined from the directory structure, and main content was parsed from the html files.

* determine the bricolage story__id associated with types of content to be migrated from Bricolage, e.g. 1041 for article, 1054 for blog, 1063 for review, 1065 for artist.

* Identify all the story__id's that need to be imported, and store them in a mapping table to track or trace what stories have already been imported.

SELECT id, primary_uri, publish_date FROM story 
WHERE element__id IN (1041, 1054, 1063, 1065) AND active != 0 

* Some data was obtained from the database by joining the story table (~ drupal's node table) to story_instance table (~ drupal's node_revisions), for example short_val equated to the stories subtitle when story_data_tile.element_data__id = 1070. In bricolage each paragraph or other item has its own row in the story_data_tile table.

SELECT s.id, s.primary_uri, s.publish_date, d.short_val FROM story s 
JOIN story_instance i ON s.id = i.story__id AND s.current_version = i.version 
JOIN story_container_tile t ON t.object_instance_id = i.id 
JOIN story_data_tile d ON t.id = d.parent_id 
WHERE t.element__id = 1041 AND d.element_data__id = 1070 
AND d.active != 0 AND s.element__id IN (1041, 1054, 1063, 1065) AND s.active != 0

* other data was obtained by parsing the html files using fopen() and preg_match()

* image paths were replaced by using preg_replace() and the old and new path stored in a mapping table for images, which were converted into imagefields for the story.
$img['path'] = trim(preg_replace("/(.*?)[\\\"|'](.*?)[\\\"|'](.*)/", "$2", $buffer));