You need: a problem that needs to be fixed, an experienced facilitator, a commitment from the people needing it to participate, a venue for the in-person sessions, a goal, and UI and code specialists.
The problem
Unfortunately, it needs to be said that you need a problem to work on. This problem should come from the mouths of the persons with the problem. We don’t imagine problems for people. If you have imagined someone else’s problem, you possibly should solve it via the performance arts or writing. Product design, as it is discussed here, is for people with actual problems, as told by them.
Facilitation
There are many models for facilitation and still more that are called facilitation. The facilitator here is not the Benevolent Dictator For Life, cat herder, or Community Manager (or other models) commonly found in open source, rather the model is closer to an unconference-style facilitator. Don’t confuse these very different approaches!
However it is also important to understand that the CPD facilitator is not an unconference facilitator, rather they are someone that can use unconference tools to manage dynamics but they must also be able to drive people to specific clear end points. These two things do not always come together and do not assume an unconference facilitator can perform this role.
Stakeholder Commitment
You need the commitment from the people that will be affected by the system. The software is going to be a direct result of their participation since they will design it. It stands to reason then that if an important stakeholder is missing, then you cannot design for them. So make sure you have everyone affected by the system present and that they are committed to this process.
A Venue
A good venue, at its minimum, is really a space with just enough room to house a table and enough chairs to seat everyone. An extended whiteboard wall is good to have, but can be substituted with large pieces of paper if necessary. The ideal venue would have breakout spaces and fresh air. It is good to have the sessions in rooms connected to or a part of the hosting organisation’s workspace so in-house legacy tools or current workflow can be demonstrated if necessary. Coffee and food arealways welcomed.
A Goal
The hosting organisation needs to articulate a clear goal. This could be in the form of “we need to replace our existing system for X”. It does not need to be much more detailed than that however sometimes the scope of ‘X’ will need to be determined. This can be done in the first Collaborative Design Session. However the very first session will need this first statement of the goal from the hosting org.
UI and Code Specialists
While you could try developing software without UI and code specialists (I have done it many times when I had no money to hire anyone) you will quite probably not end up with a good product. UI and code specialists add a lot of value when it comes to the build cycle of CPD. It should be noted that these people are not to be placed at the end of the line and passed hard and fast specifications to build. Instead, they are also part of the collaborative process and will be involved in a design session as part of the build process. Sometimes it is also possible, depending on resources, to also have them involved in the design sessions with the hosting organisation and this should be done if possible.