Skip Navigation LinksHome Page > Forums > SpiraTeam Forums > SpiraTeam Best Practices > What story mapping tools ...
Today SpiraTeam doesn't have a story mapping tool (although I hope that they do someday). Are any of you using a story mapping tool (e.g. craft.io or storiesonboard.com) in conjunction with SpiraTeam? If so, how are you syncing your stories back and forth between the tools?
I don’t think there’s a way to automatically sync with craft.io or storiesonboard. We are definitely exploring how to bring more free form content / cards into working with SpiraTeam - either within the app or as an integration.
What for you are the key features you would want? E.G. Cards that can be reordered or grouped, then selectively added as user stories?
We want to be able to track user journey maps / story mapping for each major area of functionality (component or potentially subcomponent). Each card would be a "step" in the journey, epic, story or "split" story. Keep in mind that the "step" level, would likely be different then how we organize the requirement hierarchy in the requirement list.
On the story cards, I would like to be able to see the status (requested, accepted, etc), the personna targeted, the owner, story points (ideally this could be configurable). I would like to be able to color cards on the map.
The story map would be divided into releases/sprints/backlog/future considerations (i.e. requests).
There should also be the option to hide the stories which have already been released.
Ideally I could a select a story and split it into sub stories. I would love to collaborate with your PM on this and potentially show some story maps we have done in the past.
Here is a good video on story mapping (but it will only be available for the next week or so https://www.betteruserstories.com/courses/better-user-stories/videos/1).
Thanks so much for this information. I will add this to our internal system. There is a balance inside the application of making something freeform enough that it is quick to use and edit, vs with enough structure (when needed) to help with tracking. I expect this will feed into discussions for SpiraTeam 6.0. If we are able to take this forward I am sure the team would really appreciate your input.
If anyone is interested, I created a report that I can export into StoriesOnBoard. It isn't perfect, but it helps a lot.
First I created a "Map Step" custom field and I populated it for the requirements which I wanted on my board (my field was CUST_07) then I used this query to export an excel file. To import into StoriesOnBoard, you have to open in Excel, remove the top row, then save as a real Excel file (when you open a file exported from SpiraTeam, Excel will complain that the file isn't a valid excel file, just ignore that).
This SQL assumes your components in SpiraTeam are the major User Activities in your story map, that the custom field "Map Step" represents the High level tasks flow for the user, and the Requirements represent the detailed cards/subtasks that the user wants to accomplish.
Here is the custom section SQL. You will notice that I striped some of the html out, and then added a link to our spirateam site... Be sure to replace "URL" below with the right path for your SpiraTeam install. In case you are wondering, I did try to remove the HTML using the XML output option, but then the descriptions ran over multiple lines in excel, which didn't work for importing into StoriesOnBoard. I did leave in a <br> for a carriage return, because I couldn't figure out how to insert a real carriage return in entity SQL (neither char(13) or chr(13) worked). If anyone knows how to do that, I would love to know!
Select R.Component_name as Activity, R.Cust_07 as Task, R.Name + ' (RQ:' + Cast(R.REQUIREMENT_ID as edm.string) +')' as SubTask, (CASE WHEN R.DESCRIPTION IS NULL THEN 'http://URL/SpiraTeam/' + cast(r.project_id as edm.string) + '/' + cast(r.requirement_id as edm.string) + '.aspx ' ELSE Replace(Replace(Replace(Replace(Replace(Replace(REPLACE(REPLACE(REPLACE(R.Description,' ', ' '),'<p>',''),'</p>',' <br>'),'</span>',' '),'<ul>',''),'</ul>',''),'<span style="font-size:16px">',''),'<li>','-'),'</li>','<br>') + ' http://URL/SpiraTeam/' + cast(r.project_id as edm.string) + '/' + cast(r.requirement_id as edm.string) + '.aspx' END) as SubtaskDescription, (CASE WHEN R.REQUIREMENT_STATUS_NAME ='In Progress' THEN 'Doing' WHEN R.REQUIREMENT_STATUS_NAME ='Ready for Test' THEN 'Ready' WHEN R.REQUIREMENT_STATUS_NAME ='Completed' THEN 'Done' ELSE 'Todo' END) as Status, R.Estimate_points as Estimation, R.RELEASE_VERSION_NUMBER as Releasefrom SpiraTestEntities.R_Requirements as RWhere R.Component_name <> '' and R.Cust_07 <> '' and R.PROJECT_ID = ${ProjectId}Order by R.INDENT_LEVEL
Some tweaks to the SQL (was returning stories that had been deleted, and there was an error in the URL)
Select R.Component_name as Activity, R.Cust_07 as Task, R.Name + ' (RQ:' + Cast(R.REQUIREMENT_ID as edm.string) +')' as SubTask, (CASE WHEN R.DESCRIPTION IS NULL THEN 'http://URL/SpiraTeam/' + cast(r.project_id as edm.string) + '/Requirement/' + cast(r.requirement_id as edm.string) + '.aspx ' ELSE Replace(Replace(Replace(Replace(Replace(Replace(REPLACE(REPLACE(REPLACE(R.Description,' ', ' '),'<p>',''),'</p>',' <br>'),'</span>',' '),'<ul>',''),'</ul>',''),'<span style="font-size:16px">',''),'<li>','-'),'</li>','<br>') + ' http://URL/SpiraTeam/' + cast(r.project_id as edm.string) + '/Requirement/' + cast(r.requirement_id as edm.string) + '.aspx' END) as SubtaskDescription, (CASE WHEN R.REQUIREMENT_STATUS_NAME ='In Progress' THEN 'Doing' WHEN R.REQUIREMENT_STATUS_NAME ='Ready for Test' THEN 'Ready' WHEN R.REQUIREMENT_STATUS_NAME ='Completed' THEN 'Done' ELSE 'Todo' END) as Status, R.Estimate_points as Estimation, R.RELEASE_VERSION_NUMBER as Releasefrom SpiraTestEntities.R_Requirements as RWhere R.Component_name <> '' and R.Cust_07 <> '' and R.PROJECT_ID = ${ProjectId} and R.Is_deleted != TRUEOrder by R.INDENT_LEVEL
And if you have any questions, please email or call us at +1 (202) 558-6885