April 13, 2010

Printing Story Cards from VersionOne

VersionOne doesn't provide a direct way to print your stories on index cards, but it can be done. I'm going to tell you about the browser approach and the export approach. For the browser approach, getting set up to print your stories on index cards is a matter of figuring out what URL to hit to get just the stories you want to print. Then you can bookmark that URL for later reference and print the cards directly from the browser. The disadvantage is that it's a few steps to change your browser's print setup each time and you'll want to reset your browser's print settings afterward. But you can print on standard stock index cards if your printer will allow. I'll give you the details in a moment.

The export approach involves downloading Avery's print wizard and setting up a template. Then each time you want to print your stories, go to the view in V1 that has the stories and columns you want to see on cards. You'll then do a few steps to export the stories into a spreadsheet and use the Avery tool to format the stories (into another document) and then print them on special Avery stock. The advantage to this approach is being able to select which values you want on the card and where you want them. That's all I'm going to say about this approach.

The Browser Approach

To keep this from getting too complex, I'm going to describe what you need to do if VersionOne is hosting your instance. If you are hosting it yourself you should be able to figure out what to do by reading the original post.

Generally, we are going to get all the stories formatted as cards on a web page, then we're going to print from the browser onto cards. To see all of the stories in the system, use this URL:
For this and all the URLs below, you will need to replace "servername/v1instance" with your actual server and instance name. (Hint: look a the URL you use to access V1.)

Of course, you most likely will rarely want to print every story card. Thankfully, you can add some filtering. I'll provide some examples. You may have to do a little guessing, experimenting and URL manipulation, but I'll tell you how to approach that.

You can control which stories are returned by adding some query strings to your URL. For example, to see the stories for "Sprint #1", use the URL
https://servername/v1instance/rest-1.v1/Data/Story?where=Scope.Name='Sprint %231'&xsl=/s/custom/storyCards.xsl
Note the %23 in place of the hash symbol. You'll need to handle special characters in your URL appropriately.

To see the stories for "Iteration 7":
https://servername/v1instance/rest-1.v1/Data/Story?where=Timebox.Name='Iteration 7'&xsl=/s/custom/storyCards.xsl

To see the stories for "Sprint #2" that are OPEN (64):
https://servername/v1instance/rest-1.v1/Data/Story?where=Scope.Name='Sprint %232';AssetState='64'&xsl=/s/custom/storyCards.xsl

To see the stories for Iteration 6 that are OPEN (64):
https://servername/v1instance/rest-1.v1/Data/Story?where=Timebox.Name='Iteration 6';AssetState='64'&xsl=/s/custom/storyCards.xsl

To see the stories for Iteration 6 that are CLOSED (128):
https://servername/v1instance/rest-1.v1/Data/Story?where=Timebox.Name='Iteration 6';AssetState='128'&xsl=/s/custom/storyCards.xsl

You may want to do more filtering than in the examples here. To see what all the attributes and values are, leave the xslt out of the URL as follows:
There might be something useful to you in the Meta:
And you may need to refer to the Meta API and the ReST API documentation for V1's sdk as well as the article Getting Started with the API.

Now for Printing

Now that you have the stories you want to print formatted as story cards in your web browser, it's time to print them. This xslt we are using is set up to print two stories per page on letter size paper. If this is acceptable to you, you'll likely need to scale the print job to 80% or 90% when you print. Alternatively, you could go the extra mile and set up your browser to have no margins and no header or footer. But if you do that, you'll likely want to reset all of that once you are done printing.

That is certainly the easiest approach if you have a paper cutter handy, but with a little more effort we can print those directly onto stock index cards. To print those on a 3x5 card, set your browser as follows:
  • page setup: landscape, no margins, no header or footer
  • print, properties, paper: 3x5
  • print, properties, effects: leave set to actual size
  • print preview: scale 50%
Put the index cards in the printer in portrait orientation. And print.

Question of the Day

Have you found any other approaches to print story cards from VersionOne?


  1. Tangential to this article, have you tried using Mingle by Thoughtworks? I've used VersionOne and didn't enjoy it, but I'm using Mingle and liking it quite a bit better. I'll admit ahead of time, I work for Thoughtworks, so I'm biased, but it's worth checking out.

  2. Hello... I've used the process that your explaining in the post and I'm not getting the results that I expect. The problem is that the first few story cards look okay then the remainder are full of markup. I've tried across IE9, FF4 and Chrome with the same result. Any suggestions as I'm trying to avoid a mail merge? Thanks. Geoff

  3. Hi Geoffrey.
    There are so many things that could go wrong. If you want to sent me a .pdf of what you are getting, maybe I'll have a theory or two for you.

  4. How about limiting the story cards to a specific project?

    1. Hmmm. Not sure. I don't have a V1 instance available to me these days to play with. Based on reading the sdk, my guess would be to throw something like Scope='Scope:5' into the where clause. You'd have to figure out what the id number for your scope would be. You could probably figure that out by using that 1st query in this post.

    2. Experimenting with a test V1 instance I find that this will show you the scopes to choose from:


      And in those results I see that Scope:1196 is for Release 2.0 in this test dataset.

      So, https://www6.v1host.com/V1DemoScrum/rest-1.v1/Data/Story?where=Scope='Scope:1196' will show me the cards for the Release 2.0 project. (And tack on the &xsl=/s/custom/storyCards.xsl if you want them formatted like cards.)

      The following gets you the same thing in a different way:

      https://www6.v1host.com/V1DemoScrum/rest-1.v1/Data/Story?where=Scope.Name="Release 2.0"

  5. You can read the RESTful interface for V1 at http://community.versionone.com/sdk/Documentation/DataAPI.aspx.

    To limit by project you would use the filter syntax. You can find the entire data model at YourInstance/meta.v1/?xsl=api.xsl

    We built an small webapp that pulls all the projects you have access too - then when you select a project it lets you select a sprint or the backlog - then it prints your story cards using CSS for formatting.

  6. From Michael DePaoli, VersionOne Product & Agile Consultant:

    Search is only case sensitive when searching on ID. You must capitalize the prefix of an I'd you're searching for. Other searches need not be case sensitive.

  7. This comment has been removed by the author.

  8. Thanks for the great how-to, Andrew. It useful to see the value that teams still experience using tactile cards even when they're using planning tools. Recognizing this, I'm pleased to announce that the Summer 12 release of VersionOne will have built-in support for printing cards. There should also be other, related, surprise features that I think you'll all find valuable.

  9. The new story card printing feature in VersionOne is well thought out. Actually, I think it rocks. Here are the release notes: http://community.versionone.com/Release%20Notes/ReleaseNotes2012Summer.aspx

    Starting about 3 minutes into the video is a 3 minute demo of this new feature.

  10. More from Bob Vincent on the new print feature in VersionOne: http://blogs.versionone.com/product/2012/10/06/using-old-school-index-cards-with-versionone/