Managing Content Chaos


Published on

A demonstration how to use parallel workflows using Documentum xCP to handle dynamic situations. Hundreds of processes can actually be handled by a single workflow. Presented at EMC World 2011.

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Situation – A little bit about the company, the situational background at the timeProject – What exactly did the project sponsors want out of the software to solve the problems they sawPlan – A blueprint how my team decided to tackle the problemExecution – How it all went downResults – What did we see a year later?
  • Don’t mention company if possible. (Sheesh… the backstory on this.)
  • When gathering requirements, it is more than valid to ask the question: What would the perfect application do to solve your problems?That allows you to ask the people who use the application everyday what they think and what are their “pain points”.
  • Don’t reinvent the wheel!Check to see if there are already written policies regarding documents: Retention policies, record definitions, etc.Is there a defined “language” or terminology that everyone can agree to? For example, what exactly is a “client communication”?Is there a taxonomy already defined?
  • This isn’t an insult to the user base. It’s a generalization of attitudes and feelings that most people will encounter when facing change. The UCL reference is for humor. Good ol’ Saturday Night Live.
  • There is logic available to split the workflow along several paths but eventually needs to combine again. The Join task functionality is limited in that it doesn’t know at runtime if Dept. A and B need to review the task; or if it Dept. B and C; or all three. Now expand the problem to 16 departments.
  • Yes, it’s from Ghostbusters. Originally in Documentum 5.3, I had to use a replacement Split and Join function. With 6.5 and above, just the replacement Split was necessary.
  • Using the concepts learned, it’s easier than ever to use a single workflow to handle dynamic situations… Not just based on content type, but anything requiring a decision matrix.
  • Workflow Summary
  • I haven’t met a department that didn’t groan when the word “compliance” is mentioned and have resistance. You MUST convince people that compliance is in their best interest, or face a constant uphill battle. Best way to convince these people is a little ol’ psychology. Make a straw man argument. The bad guy is someone else and you don’t want to be on his side do you?
  • Managing Content Chaos

    1. 1. Managing Content Chaos<br />Dynamic Workflows using <br />EMC Documentum xCP<br />
    2. 2. Agenda<br />Introduction<br />The Situation<br />The Project<br />The Plan<br />The Execution<br />The Results<br />
    3. 3. A little about me…<br />Chris Campbell<br /><ul><li>Worked in Content Management for over ten years.
    4. 4. Project manager in telecom and Producer in multimedia
    5. 5. Experience in both financial, medical and manufacturing industries.
    6. 6. Extensive work in quality assurance</li></ul>Fun Stuff<br /><ul><li>QA Lead for Ensemble Studios maker of Age of Empires video game series.
    7. 7. I don’t have a uvula…</li></li></ul><li>The Situation<br />What have I got myself into?<br />
    8. 8. Takeaways<br />Learn why are parallel workflows better than sequential.<br />Learn how to combine hundreds of workflows from a dynamic process into a single workflow.<br />Project experience:<br />Know your users better<br />Learn how to design the “perfect” application<br />Overcome objections when the word “compliance” comes up in conversation<br />
    9. 9. The Company – A medium sized financial services company<br />Organized 1958 <br />More than 284,000 client families<br />$16.4 billion in managed accounts and brokered mutual funds<br />$51.2 billion in-force life insurance policies<br />$623 million in banking assets<br />
    10. 10. The Company – The environment<br />Around 300 people in the home office in 16 departments<br />Recent leadership turnover (CEO, CTO)<br />New corporate philosophy being implemented.<br />IT department transitioning from Java to .NET<br />
    11. 11. The Project<br />“You want to do what now?”<br />
    12. 12. The Problem<br />Over 200 documents need approval every month<br />30 different types of documents<br />Up to 16 different departments need to approve<br />Each approval needs to be recorded (compliance)<br />A single generic form used to gather approvals<br />No written guidelines on process<br />
    13. 13. The Result<br /><ul><li>Confusion on who needed to sign what
    14. 14. A single person had to “shuttle” each document to each individual signer
    15. 15. Any review meant leaving the document with the reviewer
    16. 16. Reviewer could take forever
    17. 17. Often lost or forgotten
    18. 18. If a reviewer was busy or not there, the document “babysitter” had to come back.
    19. 19. The process usually took all week, if not longer.
    20. 20. Created temptation to take shortcuts
    21. 21. Easy to lose track
    22. 22. Everything became “HOT” and “Top Priority”</li></li></ul><li>The Plan<br />Step 1: Get Documents<br />Step 2: ???<br />Step 3: Profit!<br />
    23. 23. Gathering RequirementsThe “In a perfect world…” Use Case<br />“What would the perfect application do to solve your problems?”<br />Don’t Be Afraid! <br />Be Bold and Imaginative!<br />
    24. 24. The perfect solution would:<br /><ul><li>Handle all my documents
    25. 25. 30 Different Types
    26. 26. Send documents to who needed them when they needed them
    27. 27. 16 departments and know who those reviewers are
    28. 28. Be easy to use
    29. 29. Be familiar to users; no learning curve – intuitive
    30. 30. Only show users what they need when they need it.
    31. 31. Track my documents
    32. 32. Reporting, auditing
    33. 33. Versioning
    34. 34. Be secure
    35. 35. Compliance, security</li></ul>Find my documents easily<br /><ul><li>Search</li></ul>“Oh, by the way…”<br />I don’t want to be involved unless absolutely necessary.<br />I want to see everything.<br />Could it send me a reminder if I forget?<br />Certain items can be exceptions.<br />Some items have to be done sooner than others.<br />Sometimes I need certain people to review a document that don’t review things normally.<br />My own personal wish:<br />Everything has to be done in one workflow.<br />
    36. 36. The execution<br />“If you vote for me, all of your wildest dreams will come true.”<br />
    37. 37. Building a foundation<br />Specific components used:<br />Content Server<br />EMC Documentum xCP<br />BPM provided by Business Process Services (BPS)<br />TaskSpace (originally used My Documentum for Outlook)<br />xPlore<br />Composer – for development<br />
    38. 38. First things first<br />Take inventory<br />What written policies exist?<br />Is there already a defined terminology?<br />What structure is already there?<br />What can be reused?<br />Don’t reinvent the wheel!<br />
    39. 39. Design Tip: Know your users<br />All users are essentially Unfrozen Cavemen Lawyers:<br /><ul><li>Change and technology frightens them.
    40. 40. Easily dazzled by pretty graphics and widgets.
    41. 41. Play dumb, but in reality deceptively smart.
    42. 42. Dangerous when frustrated.
    43. 43. Do NOT like to guess.
    44. 44. Want thinking done for them.
    45. 45. Would prefer to shop online or check Facebook than to do actual work.
    46. 46. Likes anything that gives them more time to shop online or check Facebook status.</li></li></ul><li>Resulting Design Philosophy<br />Users make mistakes. Avoid situations where they could make one. Decide for them where possible.<br />Keep it simple. Hide options that users don’t need to see; appear only when needed.<br />Think ahead. Avoid process or code design that would require frequent workflow revisions.<br />
    47. 47. A meeting of minds<br />Each department was given a checklist of all document types and they choose which ones they wanted to Review, get an Informational copy or just ignore.<br />This matrix was used to determine who reviewed documents.<br />
    48. 48. The interface<br />TaskSpace was used to present a simple, clean design. Roles were assigned (Submitter, Reviewer, Legal, Release Authority) . Each role had the interface customized to show only what was needed.<br /><ul><li>Roles made managing security easy.
    49. 49. People may come and go but roles never do. Management is very easy.
    50. 50. Choices made on forms determined how information was displayed. Limited user mistakes and confusion.</li></li></ul><li>Workflow Design<br />Many workflows<br />Easy and fast…<br />Until you realize that you need to build 3016 to cover all scenarios.<br /> <br />One Workflow<br />Takes longer to build<br />Handles everything<br />Just one problem…<br />
    51. 51. Dynamic Parallel Workflows Have One Flaw<br />After the split, the join MUST know the exact number of completed tasks before completing.<br />
    52. 52. Solution: Gatekeeper and “Keymaster”<br />Two simple custom methods: One that replaces the split function in the workflow, the other is a form control.<br />Gatekeeper determines which departments need to review documents and uses setOutputByActivities(list)<br />Keymaster is a document processor inForms Builder. It writes the final number of required departments as a process data value.<br />
    53. 53. Gatekeeper<br /><ul><li>First reads review departments from workflow parameters
    54. 54. Next, does a little cleanup by removing the activity timers for unused activities.
    55. 55. Manually assigns and activates the next workflow activities</li></li></ul><li>The Final Workflow<br />Unlimited Document Types – Unlimited Departments<br />
    56. 56. The results<br />We saved how much?!?<br />
    57. 57. One year later in production…<br />Productivity benefits and cost savings equal $9700 per user.<br />Net ROI: $5,567 per user<br />Workflows completed: 1154<br />Documents circulated: 3250<br />Worker productivity increase of 14%<br />Impact to overall net profit: 5%<br />
    58. 58.
    59. 59. Q&A<br />
    60. 60. Contact Information<br />“Just in case…”<br />Email:<br />Twitter: @TorgosKnees<br />
    61. 61. Appendix<br />“Extra stuff”<br />
    62. 62. One workflow to rule them all <br />Gatekeeper<br />Instead of making 3016 workflows, a single workflow could be used.<br /><ul><li>A small custom workflow method “Gatekeeper” was used to check the document type, cross-reference with our matrix, and sent onward to each department.
    63. 63. Every required department could review the document at the same time.
    64. 64. Notifications were sent by email.
    65. 65. Each department designated a person or persons to review .
    66. 66. Reviewers could delegate tasks or request additional review.
    67. 67. Content Server automatically managed the workflow comments and document versions.
    68. 68. If task left dormant, the server would send an email “reminder”.</li></ul> <br />
    69. 69. One workflow to rule them all<br />Custom workflow method “Keymaster” would pause workflow until all departments finished review.<br />From there, the submitter could review all comments and make changes. When finished, a choice was given to have the departments to re-review or go forward to legal review.<br />Past legal review, a “release authority” (an executive on some level) would give final approval.<br />Place hooks were left so further workflows could be launched based on document type once approved.<br />Keymaster<br />
    70. 70. Gatekeeper (DFC 5.3)<br /><ul><li>First reads review departments from workflow parameters
    71. 71. Next, does a little cleanup by removing the activity timers for unused activities.
    72. 72. Manually assigns and activates the next workflow activities</li></li></ul><li>Gatekeeper Code (Sample)<br />public intdoTask(IDfWorkitemworkitem, IDfPropertiesactivityParameters, PrintWriterprintWriter) throws DfException<br />{<br />IDfIdworkflowID = workitem.getWorkflowId();<br />IDfSessionsession = workitem.getSession();<br />IDfWorkflowwfObj = (IDfWorkflow)session.getObject(workflowID);<br /> String sWorkflowId = activityParameters.getString("workflow_id");<br />IDfIdprocessID = wfObj.getProcessId();<br />IDfProcessprocessObj = (IDfProcess)session.getObject(processID);<br /> if (workiteminstanceofIDfWorkitemEx) <br /> {<br />IDfWorkitemExworkitemEx = (IDfWorkitemEx) workitem;<br />Object[] deptRequired = workitemEx.getStructuredDataTypeAttrValues("CRP", "dept_required");<br />IDfListresultList = (IDfList) Arrays.asList(deptRequired);<br />IDfListlistNextForward = new DfList();<br />intlistCheck = deptRequired.length;<br />try<br />{<br /> for (int i = 0; i < listCheck; i++) <br /> {<br /> String activityName = (String) deptRequired[i].toString();<br />IDfActivityactivityAppend = ((IDfActivity) workitem.getSession().getObject(processObj.getActivityIdByName(activityName)));<br />listNextForward.append(activityAppend);<br /> }<br />} catch (DfException f)<br />{<br />DfLogger.error(this, "Problem in Activity Output:", null, null);<br />f.printStackTrace();<br /> throw f;<br />}<br />workitem.setOutputByActivities(listNextForward);<br /> }<br />// workitem.completeEx(0,"",DfId.DF_NULLID);<br /> return 0;<br />}<br />
    73. 73. Developer Tip: How to get everyone behind compliance.<br />Compliance is a major obstacle. Use a little child psychology to get everyone on your side.<br />The “bad guy” is always an external force to the company.<br />The Government<br />The Voters<br />The Competition<br />The Economy<br />Corrupt Business Owners<br />Never blame another department<br />It because of those “few bad apples” that you must to be compliant.<br />“Legal and Compliance are looking out for us.”<br />Improves performance through metrics. Protects the innocent user.<br />If all else fails to convince doubters, resort to “It doesn’t matter. It’s the law.”<br />