tag:blogger.com,1999:blog-59799150070110021602024-02-21T03:30:44.041+01:00DutchDocumentsA blog about my experience with ECM systems. As an ECM consultant in the Netherlands I've got more than 15 years of experience with the products like Documentum, SharePoint and FileNet and I thought it might be interesting to share some of that with you.
Don't expect a new entry each week. I'll be posting whenever I've got something that's worth the read.
Enjoy, Sander Hendriks.SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.comBlogger25125tag:blogger.com,1999:blog-5979915007011002160.post-40724318309461346372018-10-05T13:29:00.004+02:002018-10-05T13:31:43.790+02:00Getting rid of excess Documentum thumbnails<br />
<div class="MsoNormal">
<span lang="EN-GB" style="mso-ansi-language: EN-GB;">OpenText
Documentum comes with a number of default settings that are not appropriate for
most projects and can even cause problems when applied to a production system
unchanged. One of those settings concerns thumbnails.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Documentum
xCP is a great tool for creating Case Management applications using no code. It
includes a viewer that can show your documents alongside their metadata and
other relevant process information. Great stuff! The way that this viewer shows
your documents can have some consequences however.</div>
<div class="MsoNormal">
<span lang="EN-GB" style="mso-ansi-language: EN-GB;">The xCP
viewer can show documents of any file format by converting the pages of the
document into images called thumbnails and then displaying the thumbnails in
your browser. There are large thumbnails that are displayed in the main viewer
window. There are also small thumbnails that are shown in the viewer’s page
navigation bar on the left. All these thumbnail images that are generated are
stored in Documentum with the document as renditions. Once the thumbnails have
been generated, the next time you view the document the viewer only has to
retrieve them.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAi6gMKT4nQfF25yt3E2SNhJpZS94ROH4kXsBVKzZF0QpsSoS1m3hwYFpRvw_PQOdUD6AWRjNfzSRH0zeAhosd1LQ0OckvDScp9KnQCMw0fObmEJikEEhRZejaW4mAbjDyF2SGda_MRJtp/s1600/xCPViewerScreenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="896" data-original-width="1467" height="388" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAi6gMKT4nQfF25yt3E2SNhJpZS94ROH4kXsBVKzZF0QpsSoS1m3hwYFpRvw_PQOdUD6AWRjNfzSRH0zeAhosd1LQ0OckvDScp9KnQCMw0fObmEJikEEhRZejaW4mAbjDyF2SGda_MRJtp/s640/xCPViewerScreenshot.png" width="640" /></a></div>
<br />
<div align="center" class="MsoNormal" style="text-align: center;">
<b><span lang="EN-GB">An xCP application
displaying a document<o:p></o:p></span></b></div>
<div class="MsoNormal">
<span lang="EN-GB"><br /></span></div>
To make the xCP Viewer display your documents even faster, Documentum can be configured to generate the thumbnails as soon as you upload a new document.<o:p></o:p><br />
<div class="MsoNormal">
<span lang="EN-GB"><br /></span></div>
<div class="MsoNormal">
<span lang="EN-GB">Now here is
the downside that can cause problems for your system. Documentum has a default
setting that will enable automatic thumbnail generation for all documents in
your system. Though the idea sounds nice at first, it means that a number of
extra renditions will be added to every version of every document in you
Documentum system, even if no one is going to look at the document using the
xCP Viewer. All these renditions take up extra disk space. A LOT of extra disk
space. The generated thumbnails can take up more space than the original
content files, so your space requirement for content files will be 2x to 3x as
much as needed for the original content. If you have millions of documents with
terabytes of content files, you will need a serious budget increase just to
store all the thumbnails.<o:p></o:p></span></div>
<div class="MsoNormal">
<span lang="EN-GB"><br /></span></div>
<div class="MsoNormal">
<span lang="EN-GB">Fortunately
there are several ways to improve this situation. To start with, you can
disable the default configuration and enable automatic thumbnail generation
just for the document types and content types that will be displayed in the xCP
application. This will reduce the number of useless thumbnails that are
generated.<o:p></o:p></span></div>
<div class="MsoNormal">
<span lang="EN-GB">You can also
turn off the automatic thumbnail generation altogether. In this case the xCP
Viewer will generate the thumbnails it needs when it displays a document. This will
take a second or so, but will save enormously on the storage needed for the
thumbnails. The only downside is that the page navigation on the left side of
the viewer does not work in this configuration. the xCP Viewer does not
generate the small thumbnails needed for the page navigation. It only generates
the main thumbnails.<o:p></o:p></span></div>
<div class="MsoNormal">
<span lang="EN-GB"><br /></span></div>
<div class="MsoNormal">
<span lang="EN-GB">At Informed
Consulting we created a solution that improves on this in 2 ways:<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span lang="EN-GB">-<span style="font-size: 7pt; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
</span></span><!--[endif]--><span lang="EN-GB">A
small xCP custom module that generates the small thumbnails for the xCP viewer<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span lang="EN-GB">-<span style="font-size: 7pt; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
</span></span><!--[endif]--><span lang="EN-GB">A
custom job that deletes old thumbnails that are no longer needed<o:p></o:p></span></div>
<div class="MsoNormal">
With these
improvements we’ve cut the diskspace needed for thumbnails by 95% without
losing any functionality in the xCP Viewer.</div>
<br />
<div class="MsoNormal">
<span lang="EN-GB"><br /></span></div>
<div class="MsoNormal">
<span lang="EN-GB">If you’re
struggling with a Documentum project, contact us, we’ll be glad to help.<o:p></o:p></span></div>
<br />SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-35775133831197453172016-04-29T16:31:00.000+02:002016-04-29T16:31:09.240+02:00Choosing Documentum xCP or D2 in 2016For the past years Documentum has had 2 user applications:<br />
<ul>
<li>D2, a configurable application originally bought from C6</li>
<li>xCP, an application composition platform made by EMC engineering</li>
</ul>
Rumours that both products will be merged into 1 have been going around for years (see <a href="http://dutchdocuments.blogspot.nl/2013/10/the-integration-of-d2-and-xcp.html" target="_blank">my blog about that</a> from 2013) . This has not happened however. Instead both products have been expanded over the years. D2 has added a number of customization options, xCP has added some document management functions. Both have a great UI that can be layed out and styled as your application needs. This makes it ever harder to choose between them. Here is my take on when to choose which:<br />
<h4>
D2</h4>
The functionality that D2 offers is mostly geared toward <b>Document Centric
Applications</b>. It has lots of features in
that area. For things like mailroom or personnel file applications, D2 can quickly get results.<br />
<h4>
xCP</h4>
xCP has been created with <b>Case Management Applications
</b>in mind. It really shines when used for loan applications, insurance claims, or court case management for instance.<br />
<br />
<h4>
Future direction</h4>
Though the best-fit for D2 and xCP is still pretty clear at the moment, I wonder what direction they will be taking. Both products will be actively developed for the near future. There are other things to consider however.<br />
What about mobile Apps used on smartphones? They are showing up on wish lists more and more often. The official Documentum Mobile App has never gained much traction, since users don't want a big general application. On their smartphone they want small specialized applications to perform a specific task quickly and easily. Approving a document for instance. The good news is that EMC is investing in mobile application technology to enable businesses to easily create such apps.<br />
<h4>
Horizon</h4>
And what about Project Horizon? Will this replace D2, or xCP, or both? Even though more details will be released by EMC about the new platform at EMCWorld next week, we know that Horizon is positioned as a new modern cloud-first application platform. It is not necessarily aimed at the Enterprise Content Management market. Its aim is much wider, managing both structured and unstructured information at scale in the cloud. Horizon does not have a framework for building user applications. It has micro services Apps. Any of the numerous modern application building frameworks such as Cordova, Xamarin or Meteor can be used to build user applications for Horizon. Therefore Horizon will not replace D2 or xCP. I do expect to see integrations however; xCP or D2 applications leveraging Horizon services, or mobile Apps using Horizon as well as Documentum services.<br />
SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-58120876739550763252015-03-07T17:33:00.000+01:002015-03-10T19:46:25.322+01:00Documentum Dump and Load limitationsLately I've been involved in a project where we used Documentum's dump/load feature to copy a lot of documents from one repository to another. We successfully copied millions of documents, folders and other objects, but this success did not come easy. In this blog I would like to share some of the issues we had for the benefit of others using dump and load.<br />
<br />
<h4>
A standard tool</h4>
Dump and load is a tool that can be used to extract a set of objects from a Documentum repository into a dump file and load them into a different repository. Dump and load is part of the Documentum Content Server. This means it can be used with any Documentum repository in the world. The tool is documented in the Documentum Content Server Administration and Configuration Guide (<a href="https://support.emc.com/search/?text=content%20server%20administration%20guide&product_id=7890&sortBy=RELEVANCE&sortOrder=ascending" target="_blank">find it here</a> on the EMC Support site). The admin guide describes the basic operation of dump and load, but does not discuss its limitations. There is also a good <a href="http://www.bluefishgroup.com/2003/dump-and-load-a-docbase/" target="_blank">Blue Fish article</a> about dump and load that provides a bit more background.<br />
<br />
<h4>
A fragile tool</h4>
Dump and load only works under certain circumstances. Most importantly, the repository must be 100% consistent, or a dump will most likely fail. So my first tip: always run dm_clean, dm_consistencychecker and dm_stateofdocbase jobs before dumping and fix any inconsistencies found.<br />
<br />
<h4>
Dump Limitations</h4>
The dump tool has limitations. Dump can be instructed to dump a set of objects using a DQL query. The dump tool will run the query and dump all selected objects. It will also dump all objects that the selected objects reference. That includes the objects ACLs, folders, users, groups, formats, object types, etc.etc. This is done in an effort to guarantee that the configuration in the target repository will be ok for the objects to land. This feature causes a lot of trouble, especially when the target repository has already been configured with all the needed object types, formats, etc. It causes a 100 object dump to grow into a dump of thousands of objects, slowing the dump and load process. Worse, the dump tool will dump any objects that are referenced from the original objects by object ID. This causes the folder structure for the selected documents to be included as well as the content objects, but it can also cause other documents to be included, including everything that these documents reference (it it s recursive process). This method can backfire, for instance if you select audit trail objects for instance, all objects that they reference will be included in the dump.<br />
Now this would not have been so bad if the dump tool had not had size limitations, but it does. We found for instance that it is impossible to dump a folder that has more than 20.000 objects in it (though your mileage may vary). The dump tool just fails at some point in the process. We discussed it with EMC Support and their response was that the tool has limitations that you need to live with.<br />
As another example we came across a repository where a certain group had many supergroups. This group was a member of more than 10.000 other groups. This was also too much for the dump tool. Since this group was given permissions in most ACLs, it became impossible to do any dumps in that repository. In the end we created a preparation script that removed this group from the other groups and a post-dump script to restore the group relations.<br />
<br />
<h4>
Load Limitations</h4>
The load tool has its own limitations. Most importantly we found that the bigger the dump file, the slower the load. This means that a dump file with 200.000 objects will not load in twice the time it takes to load 100.000 objects, it will take longer. We found that in our client's environment we really needed to keep the total object count of the dumps well below 1 million, or the load time would go from hours to days. We learned the hard way when we had a load fail after 30 hours and we needed to revert it and retry.<br />
Secondly, objects may be included in multiple dump files, for instance when there are inter-document relations. For objects like folders and types this is fine, the load tool will see that the object already exists and skip it. Unfortunately this works differently for documents. If a document is present in 3 dump files, the target folder will hold 3 identical documents after they have been loaded. Since you have no control over what is included in a dump file and you cannot load partial dump files, there is little you can do to prevent these duplications. We've had to create de-duplication scripts to resolve this for our client. We also found that having duplicates can mean that the target docbase can have more documents than the source and that the file storage location or database can run out of space. So for our production migration we temporarily increased the storage space to prevent problems.<br />
Another limitation concerns restarting of loads. When a load stops half way through, it can be restarted. However we have not seen any load finish successfully after a restart in our project. Instead it is better to revert a partial load and start it all over. Revert is much quicker than loading.<br />
Finally we found that after loading, some meta data of the objects in the target repository was not as expected. For instance some fields containing object IDs still had IDs of the source repository in them and some had NULL IDs where there should have been a value. Again we wrote scripts to deal with this.<br />
<br />
As a final advice I would encourage you to run all the regular consistency and cleaning jobs after finishing the loading process. This includes dm_consistencychecker, dm_clean, dm_filescan, dm_logpurge etc. This will clean up any stuff left behind by deleting duplicate documents and will ensure that the docbase is in a healthy state before it goes back into regular use.<br />
<br />
As you may guess from this post, we had an exiting time in this project. There was a tight deadline, we had to work long hours, but we had a successful migration and I am proud of everyone involved.<br />
<br />
If you want to know more, or want to share your own experience with dump and load, feel free to leave a comment or send me an email or tweet (<a href="https://twitter.com/SanderHendriks" target="_blank">@SanderHendriks</a>).<br />
<br />SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com1tag:blogger.com,1999:blog-5979915007011002160.post-77119851570599410212014-10-16T13:30:00.000+02:002014-10-16T13:30:15.377+02:00Creating ECM integration productsI am so excited, I can no longer hold it in!<br />
<br />
You may wonder what I've been up to these last few months.<br />
I haven't written a blog in a while because I've been involved in a big project.<br />
At InformedConsulting we're not just advising our clients and implementing ECM systems any more; we're building our own products. We feel this is a great way to showcase our expertise and to help our customers to get value from their information more quickly.<br />
<br />
I've been handed the job of Product Manager for our first product. It will enable an easy way to integrate a Documentum system with Office365. We're the first in the world to do a trick like this and we're very proud of how it is turning out. The official release is near, so I can blog more details about what it does soon.<br />
<br />
As a product manager I had the challenge of organizing the design, engineering, testing and marketing for the product, involving an ever changing team of almost everyone in the company, including both directors. I introduced an Agile way of working, which helped a lot. We use User Stories and Sprints as the base for our engineering, a Plan Board for our marketing and Retrospective sessions to improve our way of working. We managed to take a lot of chaos and red tape and turn that into focused activities that add value to our product.<br />
<br />
I'm very proud of everyone involved!<br />
I hope this is the first of many more products to follow.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq-24EHLVHJV-WY_IVLs69GUis9_Hd9iBz9or76tysgnk9WrR9dcyXd62jrJKGZW9yDADx8ML-zi70SzI8ta-JfdOFmGrer8Q60m4tpsfl7DAsdi3JFytnMp8QrlzRTn4n0X87QtPvPHPF/s1600/ScrumBoardSPA4D.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq-24EHLVHJV-WY_IVLs69GUis9_Hd9iBz9or76tysgnk9WrR9dcyXd62jrJKGZW9yDADx8ML-zi70SzI8ta-JfdOFmGrer8Q60m4tpsfl7DAsdi3JFytnMp8QrlzRTn4n0X87QtPvPHPF/s1600/ScrumBoardSPA4D.jpg" height="180" width="320" /></a></div>
<br />SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-19869967465604123952014-05-13T16:17:00.001+02:002014-05-13T16:17:26.239+02:00Writing Bootstrap applications for Documentum 7<br />We all know that the modern user wants to use our applications on any device, from anywhere in the world. This used to be a real challenge for applications using EMC Documentum. The out of the box applications such as WebTop, Administrator and TaskSpace where all designed to be used on a PC or laptop with a big screen. If you try to use those on your smartphone, the usability is going down the drain. And I'm not even mentioning that is uses a browser plugin for file transfers.<br /><br />With the advent of Documentum 7 and xCP 2, things are looking better. The new xCP application UI works in all major browsers without using plugins. It also scales better to fit on smaller size screens.<br />However, there is still a way to go before the xCP UI can be called <a href="http://en.wikipedia.org/wiki/Responsive_web_design" target="_blank">Responsive</a>.<br /><br />The xCP UI was designed for PC screens, not with 'Mobile first' in mind. It uses a lot of screen area by default and tries to shrink and rearrange things on screens that are smaller. For the designer it is difficult to control how things will look on smaller screens.<br /><br />Fortunately there is another novelty in xCP 2: REST services.<br />The addition of REST services makes it possible to use any of the popular HTML5 / CCS3 / REST frameworks to write beautiful, responsive client applications.<br />Since the <a href="http://getbootstrap.com/getting-started/" target="_blank">Bootstrap</a> framework (by Twitter) is one of the most popular UI frameworks and it was highly recommended by the InformedConsulting UX experts, I decided to see how difficult it would be to write an application using Bootstrap.<br />(Last week at EMCWorld #MMTM14 it was mentioned that EMC is also looking into the use of Bootstrap for the<br /> future responsive UI; seems I am ahead of the game :-)<br /><br /><h3>
Setting up</h3>
Bootstrap consists of some CSS styling and some Javascript. You combine that with an HTML page and voila, you have a Bootstrap application. You don't need a Java application server to host the application, any old webserver will do. To the webserver it is just like serving some static content pages. All the dynamic behaviour is performed in the user's browser by Javascript calling REST services on the Documentum server.<br />This means that the initial setup consists of just downloading Bootstrap, an HTML page and maybe some images and javascript to your web server and you're good to go. In my case I chose to re-use the ROOT webapp on the server that also hosts the REST services. This also removes any cross-site scripting issues that may otherwise occur.<br />
<br />
<h3>
UX Design</h3>
To start your application, you will need to do some user interface design. You need to decide where you want to have your header, footer, menu's, tabs, panels, dialogs etc.<br />You can do this with an HTML editor, but you can also use one of a growing number of UX Design tools.<br />For instance you could try out <a href="http://www.pingendo.com/" target="_blank">Pingendo</a><br /><br /><h3>
Adding behaviour</h3>
Once you have the UX Design, you can add javascript to add the application behaviour. Again this could theoretically be done using a text editor, but tools will make your life easier.<br />In my case I used <a href="http://aptana.com/" target="_blank">Aptana Studio</a>. <br />This helps with syntax highlighting, syntax checking (have you closed all your braces?), code outline, etc.<br /><br />
Bootstrap uses jQuery for its dynamic behaviour, so calling a Documentum REST service is as easy as using $.ajax(). The Documentum REST services return JSON (Javascript Object Notation), so it if very easy to use<br />the returned objects in your Javascript code. If you want to add some modern behaviour, such as lazy loading result sets, there are many Bootstrap and jQuery plug-ins that can be used. You should however be carefull that the plug-ins are a responsive to screen size as Bootstrap itself is. Some older plug-ins aren't very responsive in design.<br /><br />
<h3>
Testing</h3>
Testing the application is easy in some ways and difficult in others.<br />Whenever you make a change, you just press Refresh in your browser and you can test. No need for lengthy deployments, server restarts and all that. Single-step debugging is also easy. You can use the F12 functionality of your browser (Firebug, or the equivalent functionality in IE). Apart from seeing exactly what code is beeing executed, this will also give you insight into the values of all variables, parameters and javascript objects the code is working with.<br /><br />What makes it more difficult is that some bugs will just crash your javascript and debugging will give no clue where the error is, so those kinds of bugs can be hard to find.<br />I also wonder what happens when your codebase grows. Javascript is less structured then Java or .NET, which makes it quick to work with, but could also lead to spaghetti chaos if good design patterns are not used.<br /><br />
<h3>
Results</h3>
For my project the easy setup and easy deployment and testing resulted in the first working application demo after only a day! Most of that day was spent on the UX Design. After this first day, things got a little more involved, with more work being spent on coding and testing.<br />Now, a week into the project, we have an application with a few tabs, a query builder, a browse tree, right-click menu's, browser stored history and more. And it looks good too, on my laptop, iPad and smartphone!<br /><br />Here is what it looks like:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0L18nylUOagxCqEgWxKCEppKD3sqvi0JyxUcwJIWXig0J4F9zS93b-YNJWEoX8C9dDeKlwzSYWrJ5gPcQ_elUOzb41l484ZvQMklfdabnoh6x__HksDxtAPks9BXN1nY49EmF6_jiHpBl/s1600/icAdmin-0.5.3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0L18nylUOagxCqEgWxKCEppKD3sqvi0JyxUcwJIWXig0J4F9zS93b-YNJWEoX8C9dDeKlwzSYWrJ5gPcQ_elUOzb41l484ZvQMklfdabnoh6x__HksDxtAPks9BXN1nY49EmF6_jiHpBl/s1600/icAdmin-0.5.3.png" height="234" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
I am really happy with the results so far.<br />
Let me know what you think.<br />
SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com1tag:blogger.com,1999:blog-5979915007011002160.post-12717679137611936442013-10-06T15:05:00.000+02:002013-10-06T15:10:09.519+02:00The integration of D2 and xCPMost people who follow what EMC has been doing with Documentum know that the product currently supports 2 separate application layers: D2 and xCP. They come from different backgrounds, with D2 being more aimed at document centric applications and xCP aimed at case management applications. As they evolve, they are starting to overlap more and more. With the next release, D2 will add more workflow capability and extensibility and xCP will add more document management functionality. If this continues, how will future customers be able to choose between the 2 products?<br />
The answer is, you won't have to since they are gradually merging.<br />
<br />
Even last year, when xCP2 first came out, there were already whispers that over time xCP and D2 will merge and become 1 product. This merge will take a few years, since the two products are built on different technology layers. D2 uses Google Web Toolkit (GXT), xCP uses ExtJS. D2 uses SOAP services, xCP uses REST services. These are major technology differences that make merging these products a long an difficult process.<br />
<br />
<h4>
xD</h4>
Let's look into the future for a bit. I wonder what a product that merges D2 with xCP would be like.<br />
Let's call this new future product xD (excelerated Documentum).<br />
What will this product be?<br />
What will convince customers to upgrade to xD?<br />
<br />
I think that EMC will create xD with the stongest parts from D2 and xCP:<br />
It will have a run time configuration layer taken from D2.<br />
It will also have the strong build time configuration taken from xCP.<br />
<br />
<h4>
Creating a merged runtime</h4>
To make that combination work, a new runtime will be needed that supports both the D2 and the xCP functionality.<br />
This is where the major technology choices will need to be made. Will it use the Google Web Toolkit, or ExtJS? Will Soap or REST services be used? Time will tell, but currently my money is on ExtJS with REST.<br />
If my guess is right, that would mean that some of the great D2 functions will need to be ported to the ExtJS/REST runtime:<br />
- auto naming, auto linking<br />
- lifecycle functionality with state based authorization<br />
- C2 annotation/markup and O2 Office integration<br />
<br />
<h4>
Configuring Applications</h4>
Once all of the functionality is available in one runtime engine, the configuration tools can be added on top.<br />
There will be build time configuration with xCP Designer and run time configuration with the D2 configuration matrix. So what things will be configured using each tool?<br />
A paradigm that would work for me, would be that the build time configuration tool could be used to create a sort of <i>template app</i>. A set of types, rules and processes that define an application.<br />
The run time tool can then be used to fill in the run time details to create 1, or more xD applications using the template app.<br />
<br />
<h4>
</h4>
<h4>
What things would be configurable at run time?</h4>
- Users, roles, authorization for objects and functions<br />
- Picklists<br />
- Document content templates<br />
- User interface pages and workspaces with widgets that have been configured build-time<br />
- UI widgets that integrate external data<br />
- Search experience<br />
- Viewer and Office integrations<br />
- Reports<br />
<br />
<h4>
What to configure build time?</h4>
- Object types, relations and aspects<br />
- Lifecycles and processes<br />
- UI widgets and page fragments<br />
- Business events<br />
- Full-text indexing<br />
- Content transformation <br />
- Back-end external system integrations<br />
<br />
<br />
An application platform that could do all that would be very flexible and I would love to use it to build awesome applications for my customers.<br />
<br />
EMC can you make xD happen please?SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com1tag:blogger.com,1999:blog-5979915007011002160.post-68894126111109824452013-09-20T17:48:00.000+02:002013-09-23T10:01:39.281+02:00To D2 or to xCP, that is the QuestionNow the Momentum Developer Conference is over, it's time to look back and see what we've learned.<br />
I chose to follow the D2 track this time and since I've already done a project with xCP2, that gives me the opportunity to compare the two products.<br />
<br />
The question many people are asking is which product to use for what. It seems to me that the long term answer to that may be very different from the short term, since both products are converging and are bound to be merged in some way in a couple of years. I have some thoughts on that, but I'll save that for a later post.<br />
<br />
So, when you want to build a Documentum application today, what product do you use? D2 or xCP?<br />
Given what I've learned this week, I would say the choice depends mostly on the core functionality that you need. We all know since last year that xCP 2 has a very powerfull design tool that will let you build almost any application UI and gives you many options to integrate that with your current, or external applications. Now that I've seen what D2 4.1 can do, I realize that the same goes for D2. It also offers a composable UI that can be extended with custom functionality and integrated with other applications.<br />
<br />
So the main differentiator between D2 and xCP is not the UI, but the underlaying OOTB functionality.<br />
The functionality that D2 offers is most geared toward Document Centric Applications (or old-school ECM if you will). It has lots of features in that area, such as Auto-naming, Auto-linking, Documentum lifecycles, Virtual documents, etc.<br />
xCP on the other hand has been created with Case Management Applications in mind. It has features such as Business objects, Stateless processes and Discovered metadata.<br />
<br />
So there it is. My simplification of the current situation: If your application is mainly about documents, you should consider D2, if it has a case or data object focus, consider xCP2. That will give you the most usefull OOTB functionality.<br />
Having said that, there are other things to take into account when selecting a product, such as the OS and database platforms you are using and other technical and organization details, so take my view as a pointer, but not as the whole truth and the only truth.<br />
<br />
What you think? Feel free to let me know.SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-49996475996785058912013-01-23T12:00:00.000+01:002013-01-23T12:00:28.056+01:00xCP 2 Designer : connecting the dots<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
In november EMC introduced the new product xCP 2.0 It is a complete overhaul of their Case Management solution. With xCP 2 comes the xCP Designer. The Designer is the new all-in-one configuration tool that can be used to create xCP applications. xCP Designer is a great step forward from the days of FormsBuilder, ProcessBuilder, Taskspace, Composer and several other tools that were needed to create xCP 1 applications.<br />
<br />
xCP Designer makes application creation much easier than before, but there is a learning curve. It is a powerful tool that can be used to create an object model, events, business processes, queries and the user interface. This can be a lot at first and since so much has changed from the previous version, the question arises of What goes Where? And more importantly: How do you combine all these elements into a usable application?<br />
<br />
One thing I learned while doing a xCP project is that when information needs to go from one component to another, the Designer only allows you to specify <b>inputs</b>. You always need to go to the <b>Destination component</b> and specify where it gets its input from. It is an <b>information pull</b> model. Once you get your head around this, it becomes easier to connect the dots.<br />
<br />
For instance, if you want to create a page to update account details for a customer, you may want to perform some validation on the inputs before allowing the user to press the Save button. Let's say we want to check that a valid bank account nr was entered. In xCP Designer this can be configured using a <b>Stateless Process</b>. The process would take a customer ID as input, perform some activities that check the account nr in the bank's CRM system and produce a validation message as output.<br />
The process could be as simple as this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSjeInuAJcwDiQQpOh6lq14YmX7V_SaEXxh3jxH-_BBsI-gXxzOMuhaMs6hsJPdfhJ_iBY9G_XO6v7T8uRYKCLtY7C8pR69tQ4N4wbin6xZmo5fKJumU8fatp_vLmxW6-1qnfW7jMqO5vR/s1600/xCP+Process.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="524" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSjeInuAJcwDiQQpOh6lq14YmX7V_SaEXxh3jxH-_BBsI-gXxzOMuhaMs6hsJPdfhJ_iBY9G_XO6v7T8uRYKCLtY7C8pR69tQ4N4wbin6xZmo5fKJumU8fatp_vLmxW6-1qnfW7jMqO5vR/s640/xCP+Process.png" width="640" /></a></div>
<br />
A few quick tips:<br />
<ul>
<li>xCP Pages can only set and read the variables of a process. Packages cannot be used. </li>
<li>Don't forget to set the 'Stateless Service settings' of your input variable to 'Use for input only' and for your output variable to 'Use for output only'.</li>
</ul>
Now that we have the process, how can a user interface Page make use of it?<br />
First of all we need to add the Stateless Process as a Data Service Instance to the Page.<br />
<ul>
<li>Open the Data Service Instances panel, click on the green + sign and add the process to the page</li>
<li>Select 'Refresh when input value changes' on the General tab of the process</li>
<li>On the Input tab, specify the widget that we wish to validate the value of, in this case the Account nr field.</li>
<li>Notice there is no Output tab, even though the process produces an output message</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4XlC46DpyNgoBuAuw7R9NzRgoFopTBbM31V5mppNxS6eP5Nr3z7SDMv5iwxkLHQMkdRYF9XBW9lXwJ4EW5bC2VoAoZRdmSXS762y8iGzniXNrdEknLtCjlLS7LOBMJeA88l09cX4BJLdm/s1600/xCP+Page.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="606" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4XlC46DpyNgoBuAuw7R9NzRgoFopTBbM31V5mppNxS6eP5Nr3z7SDMv5iwxkLHQMkdRYF9XBW9lXwJ4EW5bC2VoAoZRdmSXS762y8iGzniXNrdEknLtCjlLS7LOBMJeA88l09cX4BJLdm/s640/xCP+Page.png" width="640" /></a></div>
<br />
<br />
So where does the output message go?<br />
<ul>
<li>Add a Value Display field to the form that will show the output message</li>
<li>For the value of the field you can select the output message of the Stateless Process </li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT2Uw_siWVHCvXfCY6JuBjr9IA8Nk1dzsmjebR7penhRisiaFJ6axuQ-esfplg69TEf4Ul71JEYpo1mwqUdEPgYWkbeEEhy3oqN3R8ZVoaQYTbWS7OVonNidS843JdrZ_ObayB_xs5JFh_/s1600/xCP+Message.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="496" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT2Uw_siWVHCvXfCY6JuBjr9IA8Nk1dzsmjebR7penhRisiaFJ6axuQ-esfplg69TEf4Ul71JEYpo1mwqUdEPgYWkbeEEhy3oqN3R8ZVoaQYTbWS7OVonNidS843JdrZ_ObayB_xs5JFh_/s640/xCP+Message.png" width="640" /></a></div>
<br />
<br />
As an extra you can also configure that the Save button is only enabled when the validation message is empty. You can do that on the Behaviour tab of the Save button.<br />
<br />
As you can see, when you want to connect the dots in xCP Designer you always specify on the Destination object where it gets its inputs.<br />
<br />
I hope this post was useful to you. You can leave a comment if you have anything to add.<br />
SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com3tag:blogger.com,1999:blog-5979915007011002160.post-42017427418887114332012-11-23T10:06:00.001+01:002012-11-23T10:41:58.010+01:00First impressions of xCP 2.0<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>NL</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
</style>
<![endif]-->
<br />
<div class="MsoNormal" style="line-height: 18pt;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Last week I attended the Momentum
Developer Conference.<span style="font-size: small;">It w</span>as the first one to be held in 6
years and it was a great succes.With all the new products that EMC
is releas<span style="font-size: small;">ing </span>there was a lot to be learned. And learn we did, in keynote
sessions, presentations and hands-on labs.</span></span></div>
<div class="MsoNormal" style="line-height: 18pt;">
<br /></div>
<div class="MsoNormal" style="line-height: 18pt;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">One of my main interests was in xCP
2.0, a completely new product that can be used to create Documentum
applications with a fresh, modern UI.The slides from Momentum in Vienna
looked great, so I was keen to find out more. And so I did, in some great
sessions, a full day of hands-on labs and a Hack-a-thon where we built our own xCP
application.</span></span></div>
<div class="MsoNormal" style="line-height: 18pt;">
<br /></div>
<div class="MsoNormal" style="line-height: 18pt;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">My first impressions of xCP 2.0 are
very positive. Having had experience with Documentum since Workspace 3.0 i can
compare it with most of their products. The first thing I noticed is the
overall level of enthousiasm. Dan Ciruli and Ahson Ahmad did a great
co-presentation about what xCP can do and after that people really wanted to
get their hands on and never let go. There is so much excitement in the
developer community. They WANT to start building with this new tool. That is
very different from the old applications like WebTop, where the feeling was
more that you HAD to build with WDK, like it or not (and I won't even go into
RightSite here).</span></span></div>
<div class="MsoNormal" style="line-height: 18pt;">
<br /></div>
<div class="MsoNormal" style="line-height: 18pt;">
<i><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;">W</span>hat can we expect from xCP2.0?</span></span></i></div>
<div class="MsoNormal" style="line-height: 18pt;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">It is platform for building
applications on top of Documentum 7.</span></span></div>
<div class="MsoNormal" style="line-height: 18pt;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">It has a development tool called xCP
Designer, that integrates and replaces all of the tools you needed for xCP 1
applications, like Composer, FormsBuilder and ProcessBuilder.</span></span></div>
<div class="MsoNormal" style="line-height: 18pt;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">The Designer is used to configure
all components of an application. Designer projects can be version controlled
using SVN or some other version control system. Projects can be aggragated into
libraries that can be re-used in other projects.</span></span></div>
<div class="MsoNormal" style="line-height: 18pt;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">WDK has been replaced by a modern
user interface based on HTML, CSS and extJS.</span></span></div>
<div class="MsoNormal" style="line-height: 18pt;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">It supports all of the new D7
features, such as Business Events, Relationships and Stateless Processes.</span></span></div>
<div class="MsoNormal" style="line-height: 18pt;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Instead of FormsBuilder there is now
a Page editor that can be used to build an application's user interface. There
is a Master Page and you can add your own pages. Pages are made up of widgets.
The options for inter widget communication are very powerfull. Widgets can be
linked so that a widget is updated when another widget's content changes for
instance. Combining that with the new expressions model and stateless processes
opens up some great opportunities.</span></span><br />
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Data Services are operations on objects in the system. Data Services can be used to add, change, or delete inform<span style="font-size: small;">ation in your xCP application. Data Services</span> <span style="font-size: small;">are generated automatically for the object types you model in xCP Designer<span style="font-size: small;">, so if you add a <span style="font-size: small;">Employee, CaseFolder, or HrDocument type to you<span style="font-size: small;">r application, you will be able to use Data Servies to work w<span style="font-size: small;">i</span>th th<span style="font-size: small;">ese o<span style="font-size: small;">bjects</span></span></span></span></span></span></span></span> in your application's UI widgets, or processes. Data Services can also be created from <span style="font-size: small;">Queries (DQL-, BAM- and full text queries).</span></div>
<div class="MsoNormal" style="line-height: 18pt;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Business Events are the replacement
of the old TBO and give you the ability to configure many of the things that
you needed to program in Java in D6. With a <span style="font-size: small;">Business Event you can start a process, or add data to the BAM database when things happen to objects in the system, such as<span style="font-size: small;"> <span style="font-size: small;">its properties change, it is linked, its <span style="font-size: small;">is related to another object, etc.</span></span></span></span></span></span></div>
<div class="MsoNormal" style="line-height: 18pt;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Relationships aren't actually new;
they have been in the object model for years, but they have been enhanced so
that the relation can have it's own custom properties. xCP Designer supports
releationships everywhere and really makes them shine. This really changes the
way be build Documentum applications.</span></span></div>
<div class="MsoNormal" style="line-height: 18pt;">
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">xCP leverages the xMS deployment
mechanism. It takes a bit of setting up, but after that, deploying your application can be done by simply clicking the green 'play' button in xCP <span style="font-size: small;">Designer. Very nice!</span></span></span><br />
<br />
<i><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;">So, what is my impression, having worked with it for a day?</span></span></span></i><br />
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;">I think it's great. This is the sort of thing that Documentum needed, the sort <span style="font-size: small;">of thing that can change a customer's mind set from 'Why do I want this?' to 'I really want this!' The sort of thing that w<span style="font-size: small;">ill finally stop the old timers from thinking back warmly to the good old days of WorkSpace.</span></span> </span></span></span><br />
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">The new xCP model offers so much power and flexibilty that we spent a full day in labs with a room full of developers and none of them compl<span style="font-size: small;">ained that we did not write any code a<span style="font-size: small;">t <span style="font-size: small;">all.</span></span></span></span></span><br />
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;">The only thi<span style="font-size: small;">ngs that can bar xCP2 from being a s<span style="font-size: small;">uccess now are product bugs and frustrations in run-time debugging. As for the former, we will see in the coming months but it looked pretty stable in the <span style="font-size: small;">l</span>abs. As for the latter, the xCP product team is working <span style="font-size: small;">on a<span style="font-size: small;">n end-t<span style="font-size: small;">o-end debugger in xCP Designer.</span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;">Enough said, I am off to the Po<span style="font-size: small;">werLink download site<span style="font-size: small;">. D7 and xCP2 are available there now!</span></span></span></span></span></span></span></span><br />
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"> </span></span></span> </span></span></span></span></span></div>
<div class="MsoNormal" style="line-height: 18pt;">
<br /></div>
SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com1tag:blogger.com,1999:blog-5979915007011002160.post-74799840180619515642012-11-14T07:07:00.000+01:002012-11-14T18:05:05.536+01:00Meanwhile at Momentum Developer Conference 2012Last week Vienna was the place for the annual Momentum conference, the place where the European Documentum community gathers to exchange news and views and to get the latest on what EMC has been doing and is planning for the IIG products. In Vienna a whole list of product announcements where made, most notably the release of Documentum 7.0, xCP 2.0 and Captiva 7.0.<br />
Now this week <strike>nerds</strike> <strike>techies</strike> people from around the world gather in Pleasanton for the Momentum Developer Conference, right next to the EMC IIG headquarters. This is where a lot of technical details of all the new products are going to be revealed and where developers can actually get their hands on in lab sessions.<br />
The first 2 days of keynotes and presentations where very interesting. Now I am ready to get my hands dirty tomorrow.<br />
<br />
I had 2 main questions for this conference:<br />
<ol>
<li>What are the differentiators between D2 and xCP2. When should my clients use the former and when the latter?</li>
<li>What are the migration options to the new products?</li>
</ol>
Here is what I gathered so far:<br />
<br />
<h4>
When should you use D2 and when xCP2 ?</h4>
D2 4.0 is the User Interface that focuses on configuration in stead of coding. Everything plus your grandma's rocking chair can be modeled using the D2 configuration interface. The downside for some clients is that D2 cannot be extended with custom code. You have to make do with what is in the D2 box.<br />
There are simple consequences. For instance eRoom or CenterStage like collaboration functionality is not possible in D2 4.0, as is Records Management and Brava! viewer integration will be added in 4.1. Also in 4.1 or 4.2 all 'specialized interfaces' such as CenterStage, eRoom and Media Workspace will be incorporated into D2.<br />
<br />
Then there is xCP 2.0. You may not gather this from the name, but this is a completely new product that goes way beyond anything that was offered with xCP 1.x. It offers a completely new way of building applications on Documentum and ties into the new D7 features, such as the Business Objects, the event model, stateless processes and xMS deployment. xCP Designer is a new unified developer IDE that replaces all 6 tools that were needed to build someting for xCP 1.<br />
xCP2 also focuses on configuration in stead of coding. The difference being that xCP has build-time configuration and D2 has run-time configuration.<br />
xCP2 also has well defined extension points, that you can use if you need customization.<br />
<br />
As far as the UI goes, both D2 and xCP2 produce modern looking flexible user experiences, based on HTML5 and javascript. Both offer UI widgets that can be used to compose role based user interfaces. The functionality offered in D2 is more geared towards Content centric applications and the focus of xCP2 is more toward Process or Case centric applications, but that is not a great differentiator.<br />
Going forward, the choice will become even more difficult, as there is talk of supporting D2 configuration in xCP and vise versa and there is even talk of the 2 UI's merging completely into 1 unified UI.<br />
<br />
So what to advice to clients that are looking for an improved UI? There are clear cases where D2 is not appropriate. The word is still out on the other cases. If D2 can fully support your use case, why not use it? But then again, why not use xCP?<br />
<h4>
What are migration options ?</h4>
Migration is my other area of interest this week. It turns out that there is a fairly clear migration strategy that most customers can follow. It requires a phased approach.<br />
<ol>
<li>Upgrade your client UI to version 6.7SP2. This is needed because 6.7SP2 clients are certified against D7 server as well as older servers (6.5, 6.6 and 6.7). This will give you a working system with a 6.7SP2 client working with the server that is still on the version that you were on.</li>
<li>Now you can upgrade the server to D7. The 6.7SP2 clients will work with that server. It is adviced to do the upgrade by creating a clone environment first and then performing the upgrade on the clone. This gives you the opportunity to upgrade the server HW and OS and has the advantage that the old server can keep running while you do the upgrade.</li>
<li>Now you can upgrade the clients to D2, xCP, or WebTop 7.0. This may not need to be a big-bang conversion. You can go over 1 application at a time and may even select a different UI for each application that you have, though using more than 1 product may present a challenge on the license front. Webtop is still there but is not being developed. When you do go over to D2 or xCP2, you should redesign your whole application because the interfaces are so diferrent and you would just miss out on most of the fun if you try to rebuild your Webtop as-is in one of the new UI's.</li>
</ol>
<br />
More to come, stay tuned...<br />
<br />SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-85038564572155362012012-09-14T12:00:00.001+02:002012-09-14T12:00:32.423+02:00Documentum Big Data import/exportI've been away from my blog for a while, busy on projects for clients.<br />
I learned something on one of these projects that I thought worth sharing.<br />
<br />
<b>In a nutshell</b><br />
Importing BIG files to or exporting them from Documentum is a challenge, but you can get around the out-of-the-box limits<br />
<br />
Here is what happened<br />
<br />
I was asked by a client with an existing Documentum system to help them with document import/export. They were unhappy with the solution that the previous contractor had built, using Taskspace and UCF. They complained that import often failed. They also wanted to add the ability for external systems to automatically import and export documents.<br />
I asked about the kinds of documents they are storing and they turned out to be somewhat a-typical for a Documentum system. I my experience most Documentum systems are filled with documents of kilobytes to megabytes in size, with 1Gb being considered very big. For my customer, most files were between 10 and 50 Gb, with some as big as<b> 500 Gb. That's BIG.</b><br />
<br />
Documentum has no problem storing files of that size. The challenge is in getting the files from the client to the server and back.<br />
Since they asking for import/export functionality for interactive clients as well as back-end integration with other systems, I proposed to create a webservice using the Documentum DFS (webservices framework).<br />
<br />
Now DFS has serveral options for content transfer:<br />
<ul>
<li>BASE64: This will include the content as part of the reply message to the webservice client. This is the easiest, but also the most restrictive. Only advisable for very small content files.</li>
<li>UCF: This is Documentum's proprietary content transfer method. It has many cool features for xml files and virtual documents and such, but it had proven unreliable in my customer's environment with the BIG files they have</li>
<li>MTOM: The Message Transmission Optimization Mechanism is a W3C standard especially meant to reliably send binary data in SOAP webservice calls.</li>
</ul>
MTOM looked promising but I had run into boundaries using MTOM for big files in a previous project. When exporting several big files simultaneously, the App Server running the web services would run into Java memory issues. That previous project had considered 10Mb big, so we were sure to run into the same boundaries here. <br />
<br />
I solved this by cutting the content transfer up in pieces.<br />
Exporting a file now goes like this:<br />
<ul>
<li>The web service client starts an export by specifying which file it wants to receive. The web service returns an export token (a unique ID for this export request).</li>
<li>The webservice client the calls the web service again, supplying the token and the maximum number of bytes he wishes to receive (the default being 1Mb). The web service returns part of the content file using MTOM.</li>
<li>The web service client keeps calling until the full content file is transferred.</li>
</ul>
This very simple protocol turned out to work like a charm, even when simultaneously transferring files of many Gb . We did advice the client to use a separate DFS server machine, so the Documentum content server is not congested with all the disk- and network traffic the big files are causing and TaskSpace can keep running smoothly for the users.<br />
<br />
<b>TaskSpace</b><br />
For the interactive clients we did one more trick so they can use the new export/import webservice.<br />
normally you would have a component on the TaskSpace application server that acts as a web service client, but that would mean that the content would be sent to the application server and the application server would then send it to the user's browser. That would mean that the big files are sent over the network twice, causing unnecessary delays.<br />
Documentum has a feature called Accelarated Content Services (ACS), but we could not use that in this project.<br />
<br />
We did find a way to get the content from the DFS server directly to the user's browser: <br />
We added a little javascript to the export page that calls the export web service and combines all the parts of the file into 1 BIG file.<br />
<br />
It works, it performs, 1 solution for both interactive and integration use, I am happy !<br />
<br />
Let me know what you thinkSanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com3tag:blogger.com,1999:blog-5979915007011002160.post-897630843042617422012-01-17T14:25:00.000+01:002012-01-17T14:29:52.092+01:00How the internet is changing economicsThis post is a response to a article of the same name by <a href="http://asserttrue.blogspot.com/2012/01/how-internet-is-changing-economics.html">Kas Thomas</a>.<br />
<br />
Kas noticed that in 'the old days' most markets are dominated by 2, or 3 brands. For instance, Coca Cola and Pepsi dominate the soft drinks market. with the advent of the internet, some new markets have emerged and many existing markets are changing drastically. Kas noticed that the internet based markets seem to be dominated by just 1 big player. Google dominates the Search market, Amazon dominates the on-line bookstore market, FaceBook dominates the social network market, etc.<br />
Kas predicts that major shake-ups are due, as markets move to the internet. Where there was room for several big players before, there will be just 1 left after the transition to an on-line market is complete.<br />
<br />
To me, this sounds like a horror scenario. Like Kas, I am no economy major, but having just 1 dominant market player means a practical monopoly. Monopolies mean high prices, or less than top-quality service.<br />
<br />
Though this scenario will probably come true in some markets, I think there is hope. Though the internet is apperently a good place to create a monopoly, the opposite is also true. The internet can be a great unifier that provides chances to smaller componies. In the automobile industry for instance, more and more cars are sold through the internet. There are some great search engines that will let you search for your prefered make, model, etc. The result list will show cars offered by big companies, small firms and private cars. This way of working prevents a monopoly and promotes competition, leading to lower prices and higher quality service.<br />
The same goes for electronic equipment for instance. There are several sites that will help you find the right equipment, show specs and reviews and a list of stores that sell the product, ordered cheapest-first.<br />
<br />
I also think that the monopoly scenario may be more relevant in the US than in other countries. Amazon for instance is a popular site in Holland, but the local company <a href="http://bol.com/">bol.com</a> is doing just as well. The local company has an advantage, as it knows the local market, culture and language.<br />
<br />
Finally, I don´t think there will ever be just 1 operating system for our devices. Microsoft managed to create a monopoly 30 years ago when the digital age was just starting, but no one will be able to repeat that now. With Apple, Google and Microsoft there is just too much money and power to let that happen. There is a fashion in OSs. One year iOS will be in vogue and the next year Android will be hip, or the newest Windows version will be the new must-have. I don´t see a monopoly in SmartPhone or Tablet OS any time soon.SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-49233708660036162802011-12-14T17:09:00.000+01:002011-12-14T17:09:07.966+01:00DCTM Tip: job pollingSomething has been annoying me and I finally took some time to look it up. It thought I'd spare you all the hassle and share what I found here.<br />
<br />
<b>Problem at hand</b>: whenever you start a DCTM job in a repository at a client, it will take 5 to 10 minutes before the job is actually started. That is annoying, especially when you are testing a custom job. I looked around in the usual places, but found nothing. Then I found the following in the DCTM Server Admin guide:<br />
<br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
</style>
<![endif]-->
<br />
<div class="MsoNormal" style="text-autospace: none;">
<b><span style="font-family: Arial-BoldMT-Identity-H; font-size: 14.0pt;">Setting the polling interval</span></b></div>
<div class="MsoNormal" style="text-autospace: none;">
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt;">The agent exec process runs
continuously, polling the repository at specified intervals</span></div>
<div class="MsoNormal" style="text-autospace: none;">
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt;">for jobs to execute. </span></div>
<div class="MsoNormal" style="text-autospace: none;">
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt;">To change the polling interval add the</span></div>
<div class="MsoNormal" style="text-autospace: none;">
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt;">-override_sleep_duration argument
with the desired value to the agent_exec_method</span></div>
<div class="MsoNormal" style="text-autospace: none;">
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt;">command line. Use Documentum
Administrator to add the argument to the command</span></div>
<div class="MsoNormal" style="text-autospace: none;">
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt;">line. For example:</span></div>
<div class="MsoNormal" style="text-autospace: none;">
<b><span style="font-family: CourierNewPSMT-Identity-H; font-size: 9.0pt;">.\dm_agent_exec -override_sleep_duration
120</span></b></div>
<div class="MsoNormal" style="text-autospace: none;">
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt;">The polling interval value is
expressed in seconds (120 is 2 minutes expressed as</span></div>
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt; mso-ansi-language: EN-US; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;">seconds). The minimum value is 1 second.</span><br />
<br />
<div style="font-family: inherit;">
<span style="font-size: small;"><span>Bonus: you can also set the number of jobs that will be run in 1 polling interval:</span></span></div>
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10pt;"><span style="font-size: small;"><span style="font-family: inherit;"> </span></span></span><br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
</style>
<![endif]-->
<br />
<div class="MsoNormal" style="text-autospace: none;">
<b><span style="font-family: Arial-BoldMT-Identity-H; font-size: 14.0pt;">Setting the number of jobs in a polling
cycle</span></b></div>
<div class="MsoNormal" style="text-autospace: none;">
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt;">By default, the agent exec
executes up to three jobs in a polling cycle. To change the</span></div>
<div class="MsoNormal" style="text-autospace: none;">
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt;">maximum number of jobs that can
run in a polling cycle, add the -max_concurrent_jobs</span></div>
<div class="MsoNormal" style="text-autospace: none;">
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt;">argument with the desired value to
the agent_exec_method method command line.</span></div>
<div class="MsoNormal" style="text-autospace: none;">
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt;">For example:</span></div>
<div class="MsoNormal" style="text-autospace: none;">
<b><span style="font-family: CourierNewPSMT-Identity-H; font-size: 9.0pt;">.\dm_agent_exec -max_concurrent_jobs 5</span></b></div>
<div class="MsoNormal">
<span style="font-family: PalatinoLinotype-Roman-Identity; font-size: 10.0pt;">Use
Documentum Administrator to modify the command line.</span><span style="color: #1f497d; font-family: "Calibri","sans-serif"; font-size: 11.0pt;"></span></div>SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-62660745225130906492011-12-01T15:46:00.001+01:002011-12-02T11:14:49.755+01:00Can CMIS cope in the world of real ECM applications ?I was inspired by an FME Group post <a href="http://blog.fme.de/allgemein/2011-11/cmis-for-emc-documentum">comparing CMIS to DFC</a>. In neatly describes the pros and cons of using Documentum Foundation Classes vs. the Content Management Interoperability Services. For documentum customer this can be used to determine the right interface for your application: Documentum specific, or international standard.<br />
<br />
I think the comparison can show a few things about the CMIS standard and where it stands in its current 1.0 version. CMIS is aiming to provide a product independant interface to ECM systems, to allow software companies to write ECM applications that work, no matter which ECM system is used to store the documents in. Check the <a href="http://en.wikipedia.org/wiki/Content_Management_Interoperability_Services">CMIS page on Wikipedia</a> for more information.<br />
<br />
So, how does the current version of CMIS live up to that idea?<br />
First of all, CMIS offers a full set of essential content management operations, to create ,import, or find documents and their metadata. It has folder structures and access control. It supports user authentication. All very good stuff. It also has its limits.<br />
<br />
CMIS allows only single object operations. A logical choice imo, though it does mean that batch updates and deletes are not supported. To me this is no big deal, since batch-wise updates and stuff like that is mostly in the domain of the Super User, or Application Maintenance people and they will most probably need a proprietary tool for their work any way.<br />
CMIS has a query language that can be used to find documents or folders. Full-text search can be used, when supported by the underlying ECM system. INSERT, UPDATE, or DELETE queries are not supported however. JOIN queries are only partly supported by some implementations (currently only by Documentum and Nuxeo) <br />
<br />
CMIS has no support for Transactions. So if you need to combine several updates into 1 logical operation, your application will need to provide its own transaction logic.<br />
<br />
CMIS supports permissions on objects, yet only, read, write, or 'all' rights can be specified for a user or group. There is no function to request the permissions for a given user on a given object. Only the permissions for the current user can be requested.<br />
<br />
<br />
More advanced ECM functionality, such as Renditions, are not fully supported yet. Only a few vendors offer read-only access to renditions through CMIS, none offer functionality to add a rendition to a document. Even more advances functions, such as workflows, are not supported at all.<br />
<br />
As you can see, CMIS supports most basic ECM functionality. It is suitable for writing applications that only need basic ECM functions, such as DropBox-like browser apps, or those sexy mobile applications that are mostly used for consuming information. Applications like that using CMIS will be usable with most major ECM products. This is great news!<br />
More advanced applications will run into its limitations, with no support for transactions, renditions and such. Let's hope CMIS 1.1 brings us some of those features.SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-8343310017994260922011-10-26T17:37:00.000+02:002011-10-26T17:37:07.006+02:00Finding DFC javadocsToday I needed to do some programming against the Documentum API to add some custom logic to a workflow. Now the object model for Documentum workflow is somewhat complicated. It has process objects, workflow objects, work items, packages and attachments to name a few. So I thought it would be helpful to have a look at the DFC javadocs to get some info on the methods I needed to call.<br />
<br />
Unfortunately I had no javadoc of a recent Documentum version at hand. So I went on a documentation search:<br />
<br />
<ul>
<li>I searched Powerlink and easily found javadocs for DFC 4i</li>
<li>I searched EMC Developer Network, but again only old stuff and messages of people looking for the same documentation</li>
<li>In the end I turned to the good old <a href="https://emc.subscribenet.com/control/dctm/index?manu=DCTM">Download Center</a> and there is was, in the section Documentum Foundation classes</li>
</ul>
<b>TIP:</b> for people with no or limited access to the Download Center: I later found out that a copy of the DFC 6.6 javadocs is actually shipped with the xCP 1.5 Information Center.<br />
It's in the plugins directory a file called com.emc.documentum.foundation.classes.javadoc_6.6.0.201009171023.jar.<br />
If you unjar this file, you will get the DFC javadoc documentation.<br />
<br />
<br />SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-4920733614534015682011-09-22T15:55:00.002+02:002011-09-22T15:56:02.660+02:00SharePoint Documentum FrameworkI was reading through my old posts and saw the one about Documentum Sharepoint integration.<br />
I felt there is something that I need to clear up: SDF is not available for just anyone.<br />
<br />
EMC currently offers 3 products that can be used to integrate Documentum with SharePoint:<br />
<ol>
<li>MyDocumentum for SharePoint</li>
<li>Repository Services for SharePoint</li>
<li>SharePoint Documentum Framework</li>
</ol>
I mentioned all that in <a href="http://dutchdocuments.blogspot.com/2010/10/documentum-sharepoint-integration.html">my previous post</a>. There is a difference between the first 2 and the third however.<br />
The first 2 are offered a products that you can just buy and install. The SDF is not officially offered as a separate product. It is a product that you can buy, but it is only sold as part of an implementation deal with EMC Professional Services. EMC will not let the customer, nor a partner do the implementation of SDF, unless they are subcontracting for EMC Professional Services.<br />
<br />
For some customers this should be no issue. For others this would mean that using SDF is not really an option. Fortunately there are 2 other integration products to choose from.SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-91620573598568284412011-09-22T15:33:00.001+02:002011-09-22T15:33:10.078+02:00Social Media and complianceMore and more people are worried about how the latest trends in technology are going to affect their IT systems and ultimately their business. How is your information infrastructure affected by the fact that more and more people are bringing smart phones and tablets to work? How much of your employee's FaceBook and Twitter chat is relevant to the business? Does cloud computing offer opportunies or threats? What does all that mean to my regulatory compliance policies?<br /><br />We don't have all the answers yet, but something needs to be done to prevent total information chaos from spreading through your IT landscape and beyond.<br />First of all we need to realize that there is no clear distinction between the internal and the external network any more. With people working om mobile devices, using Dropbox and chatting on social networks, it is no longer possible to keep all business data within the company firewall. You can try to contain the situation by blocking social sites, by only allowing authorized devices on your company network and by refraining from using cloud services. You can even try to monitor your employee's tweets.<br />You will fail. The modern user will find a way to read his company email on his iPhone. He will switch to a new social network site once you think you've blocked them all. Most importantly, he will communicate with colleagues or even competitors while out of the office. The beast of personal communication is out of the cage and he is not going back in.<br /><br /><b>So, what to do?</b><br />My advice is that we should stop trying to control everything. We only need to control the information that is needed for compliance. But what do we need for compliance. I propose to use some common sense and apply some policies form the past to the current digital age.<br />
<br />40 years ago everything was still on paper and we had a clark filing all the paperwork in the basement. That was our records archive and it complied with the regulations at the time. Of course there was lots of social communication then too. Colleagues would discuss business over lunch, journalists would call and people would talk to clients and competitors on conferences. None of that was recorded, so it could not be archived. Businesses did however realize that these informal communications could impact the business, so they made codes of conduct. Don't discuss a client's business with another client, don't speak of our new developments with our competitors and similar rules were determined.<br />Employees were made to understand the risks to the business and trained in the code of conduct. Those who didn't comply were warned and then fired.<br /><br />Let's do the same thing in the social media age. Let's take advantage of the upside of <br />working from anywhere, cloudcomputing and social networks. But let's do it responsibly. Educate employees on the (legal) risks the business is running and that business communications need to be stored and archived. Create a Code of Conduct that describes in broad terms which types of media are deemed suitable for business communication.<br />
Media that are not deemed suitable so should be treated with care. a chat message or tweet may feel just like part of an informal phone conversation, but it is not. It is recorded and easily reproduced, forwarded or retweeted. Make clear in your policies that this is not the domain for sensitive business information.<br />
Once you've determined which media and applications your company will use for official communication, then all others can be placed in the informal phone-like communication category. Then you can say that if someone tweets 'We have a deal' it can be treated just like calling someone and saying 'We have a deal'. You still need the signed contract and the contact will be treated as a record, not the phone call.<br />
<br />
<b>Summary</b><br />
In order to avert compliancy chaos we need:<br />
<ul>
<li>Determine what will be our company's official communication channels</li>
<li>Have a Code of Conduct</li>
<li>Train our employees to use only the official means for official communication</li>
<li>Train them to be carefull with other digital communications</li>
<li>Trust them to do their job</li>
</ul>
<br />
<br />
<br />
<br />Tell me what you think. How will you handle the regulatory nightmare that is coming our way?SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-7561781821873764212011-03-17T09:36:00.000+01:002011-03-17T09:36:26.268+01:00Technology RFPLast week I received an RFP to respond to. Some company wants a DMS with workflow and an RM component. There is a list of several hundred requirements that need to be fulfilled and standards to be met. The only thing that is missing is a business case. There was no mention of what the system was actually going to be used for. That made a technology alarm bell ring for me.<br />
<br />
As a provider of ECM solutions, I like to do successful projects. To me, being successful means adding value to the client's business. When I'm done they should either make more money, spend less, or have increased the quality of their work or product. Introducing new technology such as ECM can lead to such successes, but not by itself. It needs purpose. By itself it's just a pretty box that can do neat tricks.<br />
<br />
I can take my own company as an example. I'm in a company of technology consultants working for clients throughout the country and even abroad. One day someone said "We should work together more closely. Since we're now a certified Microsoft partner, we should use MS Instant Messaging, so we can see who's on-line and get instant feedback". We tried, but in practice most people are off-line. We introduced some technology, but it fails to provide any value.<br />
<br />
Last week we had a company meeting. We spoke of trends in the market and how they affect us. We decided we should invest in social media, to better understand their use, so we can better advice our clients about them. We thought about which media could benefit our own business best and we chose to start using Yammer. It has already been more successful than the old solution has ever been.<br />
<br />
That's just one example of what it takes to successfully introduce new technology. You need to start with a shared strategy first and then implement technology and change processes to fulfill that strategy. It is even preferable to have strategy without technology, than technology without strategy, as Joe Shepley points out <a href="http://bit.ly/fnGp7F">in this article</a>.<br />
<br />
So, I'm off to the client to find out what they intend to use their new DMS system for...SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-3754077302592590712011-01-10T22:58:00.000+01:002011-01-10T23:03:34.463+01:00ACM? Adaptive Case ManagementThere's a new Acronym roaming around in the content managment and process management space: ACM.<br />
Adaptive Case Management. Does it bring anything new, or is it just new marketing hype?<br />
Well I think it has enough potential to merrit a post, so I'll tell you more about it.<br />
<br />
For years there has been a huge gap between structured and unstructured processes. Structured processes have been automated and optimized using workflow and Business Process Management solutions. Unstructured processes have mostly been more difficult to capture. Knowledge Management implementations just present some documents or work items and let the user sort out what he needs to do to get his job done.<br />
Though Knowledge Management tools help a knowledge worker, they are either too free form, or too complex to be called efficient. What would be usefull is a tool that <i>guides</i> the user, without forcing him into a strict process. A tool that provides hints, tips and information relevant to the activity the user is performing, so the user can make quick and high quality decisions.<br />
<br />
Lately the Case Management paradigm was introduced to combine some BPM and KM functionality. In Case Management a folder with case related information is routed through a mostly structured business process. Role based views, task lists and searches seek to provide the user with context information.<br />
It works pretty well, but everything is pre-configured by product specialists, so it is still mostly suited for structured processes.<br />
<br />
Along comes Adaptive Case Management. ACM will be to unstructured processes what CM is to structured one's. ACM will enhance KM or ECM solutions. Where CM focuses on the case, ACM will focus on the person and the job he is trying to perform. An ACM system will offer a user tasks to perform and suggest next steps. For a task it will show relavant context data to help the user decide.<br />
Most innovative feature: an ACM system will adapt as you go. The list of next steps will be shown with the most popular choices first. When you select the 'call customer rep' activity, the system knows which customer you're working on and will show a list of customer reps for that customer, with the one you called most recently on top. If you're having trouble deciding what to do, the system will show a list of peers who have worked on similar cases.<br />
ACM will be personalized. The user can decide how he wants his user interface organized. He can move, resized and close widgets and open new one's.<br />
<br />
All this is just a promise at the moment. Software vendors are just getting to grips with the new paradigm at the moment. I can't wait for the first products to show up though. ACM sounds like a real step forward and I'd love the opportunity to put it to the test.<br />
<br />
ACM: business processes are personal again :)<br />
<br />
Some interesting references:<br />
CMS wire on ACM: <a href="http://www.cmswire.com/cms/enterprise-cms/what-is-adaptive-case-management-008277.php">http://www.cmswire.com/cms/enterprise-cms/what-is-adaptive-case-management-008277.php</a><br />
Max Pucher of ISIS on ACM: <a href="http://isismjpucher.wordpress.com/2009/11/04/adaptive-case-management/">http://isismjpucher.wordpress.com/2009/11/04/adaptive-case-management/</a>SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-83250352558679654672010-12-13T16:43:00.000+01:002010-12-13T16:43:47.312+01:00Tip: Documentum docbroker blacklistThis will be the first in a (hopefully) long list of technical tips for EMC Documentum.<br />
If you're implementing, or maintaining Documentum, enjoy !<br />
<br />
----------<br />
<br />
Did you know that Documentum DFC keeps a blacklist of bad docbrokers?<br />
I found out about this today, after I had some trouble logging into DA, while I had no trouble using RPSA on the same App server. The message I got was:<br />
java.io.IOException: DFC_DOCBROKER_EXCLUDED<br />
<br />
I read up on this error and it turns out that DFC tries to contact a docbroker a few times and if there is no response, it will put that docbroker on a black list and not contact that docbroker again. This is useful if you have aq chain of Primary and Backup docbrokers. This mechanism will cause DFC to go to a backup docbroker when the one it was using goes down.<br />
In my case, there is no backup docbroker and once your only docbroker is on the black list, you'rein trouble.<br />
<br />
In my case this happened because I started DA while the system was still busy starting up. Because of the black list, it is not enough to wait a while and retry when you get this error. Things need to be restarted and more patience applied, or ...<br />
<br />
There is a setting in <b>dfc.properties</b> that controls the number of attempts that DFC makes to contact a docbroker, before putting it on the black list:<br />
<b>dfc.docbroker.exclude.failure_threshold</b><br />
The default is 3 <br />
<br />
I increased it to 6. I haven't seen the DFC_DOCBROKER_EXCLUDED exception since.<br />
<br />
<br />
Anyone have a similar experience?SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-45299052145108854052010-10-28T20:50:00.000+02:002010-10-28T20:50:20.215+02:00Keynotes at Momentum 2010I just realized I promised <a href="http://wordofpie.com/">Pie</a> I would compare the keynotes at Momentum for him, since he couldn't be there, so here's a post about that.<br />
<br />
There was some discussion before the opening keynote whether Mark Lewis was going to show up at all, since the rumor was that he had been promoted out of the way, but he was there giving the opening keynote. Rick Devenuti, the new EMC IIG Division chief presented the closing keynote.<br />
There's some good and bad in my comments, so if you like only the good things in life, you should skip the next paragraph.<br />
<br />
The bad: I have to agree with Lee Smith, would concluded in <a href="http://ecmobservations.wordpress.com/2010/10/28/momentum-2010-keynote/">an article about the keynote</a> that a real ECM vision was lacking from Mark's keynote. I understand that customers who had come to here about ECM were disappointed.<br />
<br />
The good: if you're willing to look beyond the above, then it wasn't that bad at all. Mark had a lot more energy than in his keynote at EMC World last year. Last year he was explaining what a cloud was to us all and he really looked like Joe Tucci had personally made him do it. Now he was looking like he was telling his own story. One about the future of IT as he sees it. And he had some good points. for instance: Firewalls are no longer a usefull paradigm in the context of information security. More and more users are buying their own devices (iPads, Android phone, etc) and are expecting to be able to use them for private and business functions. With all these devices connecting to your business information in more and more diverse ways, firewalls are just not going to cut it, nor are VPN's. That was a bit of an eye opener for me. Mark didn't really present a solution though. I came up with IRM, but that comes from me, not him.<br />
<br />
So, not at all compared to previous keynotes, but we know he'll never be a presenter like Whitney.<br />
<br />
Finally, a comparison with the keynote Rick Devenuti gave later that day. I'll be brief. The good was the first part, where Rick spoke about the operational changes they've implemented in the previous year and the focus they've had on the quality of the product (refering to the 6.6 release that is mostly providing bug fixes and preformance/stability improvements). The rest of the speech just made me feel like I was hearing Mark last year. Uninspired and lacking any vision. Too bad.SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com1tag:blogger.com,1999:blog-5979915007011002160.post-13999140449865027892010-10-28T09:34:00.000+02:002010-10-28T09:34:40.269+02:00Documentum Sharepoint integrationThe Momentum 2010 session about Sharepoint integration was on my list, because I'm currently working on an RFP where this is the major requirement. Some of the client's requirements are pretty steep, so I was really looking forward to what's in this product's future.<br />
<br />
Well, there was a lot of good news. The Documentum Sharepoint integration products 6.6. versions will be released in a matter of weeks. My Documentum for Sharepoint 6.6 will bring some more webparts and support for Sharepoint 2010.<br />
<br />
Repository Services for Sharepoint 6.6 will provide a slightly different model from the previous version. Repository Services sits between the Sharepoint UI and its storage in SQLServer. In the 6.5 version Repository Services would take the contents of any Shrepoint documents and store the in Documentum, along with a copy of the meta data.<br />
<br />
In 6.6 the content is initially stored on a filesystem. A new journaling mechanism will then move the content from the filesystem into the Documentum repository batchwise.<br />
There are 2 advantages to the journalling mechanic:<br />
- You can add business rules to the journalling, so for instance only documents with a certain status will be moved into the Documentum repository<br />
- It will improve Sharepoint performance, since content retrieval from a filesystem is generally faster then from a docbase.<br />
Disadvantage: an extra filesystem component to manage<br />
<br />
There is a new product/developer option in this field: SDF (Sharepoint Documentum Framework)<br />
This is a framework that EMC has been building and using in projects since 2007. There are already 40.000 people using this in production.<br />
SDF is a customization framework that enables you to leverage most Documentum functionality from within a Sharepoint site. It is based on DFSX, so it can use all the DFS webservices. Many have already been turned into Sharepoint webparts, such as Browse, Search, Inbox, Query, WorkQueues, Records Management and IRM.<br />
SDF also enables us to add custom menu items to Sharepoint that can call DFS, or your own custom webservices. This can be configured using XML configuration files (it start to feel like WDK for Sharepoint).<br />
SDF is also integrated with Sharepoint workflows. It adds an activity template that calls DFS a webservice, so you can add Documentum functions to your workflows.<br />
Lastly I saw a screenshot where a form built with FormsBuilder was displayed inside Sharepoint, using picklists from Documentum. Very nice !<br />
<br />
Thanks to Micheal Mohen for saving my RFP.SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-47095211528399116002010-10-28T09:29:00.000+02:002010-10-28T09:29:44.486+02:00Documentum and xCP roadmapAnother interresting presentation at Momentum 2010 was the xCP roadmap session.<br />
<br />
Documentum 6.7 will be released Q2 next year. It will bring some minor upgrades, such as broad 64-bit support on both the client and server side, and more SSO support (non-Windows Kerberos and WebSeal).<br />
<br />
xCP 2.0 will come end of next year. This will include some major changes.<br />
An all new xCP Application builder will be the new tool for application configuration. It will replace both Process Builder and Forms Builder and will add most of the configuration functionality that is now in Composer (creating types, lifecycles, etc.). It will also be used for deployment.<br />
Composer is still there, but it will only be used by the developers. All they do with Composer is program Java code and produce Jar files.<br />
The way deployment works will also be changed. The xCP App Builder (xAB?) can be used to pull all configuration and customization together and package that into a vApp ready for deployment with vSphere. Sounds promising ...<br />
<br />
This separation of tools sounds like an improvement to me. The UI mockup I saw looked promising. Let's just hope that all functionality of the olders tools will show up in the new ones (I'm still using Application Builder for some things).<br />
<br />
On the DFS front the news is that Documentum is moving toward RESTful services. D6.7 should see a bunch of REST services appearing in DFS and they should all be there in D7. I also heard about DFSX in another session. DFS Xtended adds some useful features to make it even easier to use. The example I heard was the addition of Kerberos SSO support.SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-58474398580770919322010-10-27T17:12:00.000+02:002010-10-27T17:12:30.873+02:00Documentum's Future ArchitectureI'll start my first serious blog with the a recap of yesterday's talk of the town: the architecture session by Jeroen van Rotterdam on Momentum 2010 in Lisbon. It started as a 45 minute session, but at the end Jeroen was not even half way through, so an extra session was scheduled at the end of the day and that also ran late. Jeroen can really speak with a passion about his life's work.<br />
<br />
This was by far the most interresting session of the day. Not only did it give a deep technical perspective of what Documentum will be like in a few years, to me it also provided a link between all the Cloud hype I've been hearing and why that should interrest me as a Documentum architect.<br />
All this new technology is cool:<br />
- We can finally have a Documentum system on-line 24x7 out-of- the-box<br />
- Add processing as-you-go, no down time<br />
- Application and even object type definition updates as-you-go<br />
- Types and apps are versioned; you can run your old application for old data and start using the new version on new data<br />
- Multi-tenant possiblities<br />
<br />
All this will be possible with the <strong>Next Generation Information Server </strong>(NGIS). It is a new product, built from the ground up to be used in multi-tenant cloud environments. It's called Information Server for a reason. It's usability goes beyond the ECM use case. It cannot manage just content, it will be used to handle any kind of information. It's got flexibility written all over it. Get some new data, or extra customers? Just add some processing nodes and they will be served. Have a defective node? Some other nodes will take over its work. This thing is like the Internet: some part may go down, but as a whole it will never fail.<br />
<br />
The DataModel consists of objects with Traits. Objects of itself are just empty shells with an object ID. All the rest is added with Traits. A Trait consists of some data, services and events. This provides a powerfull model for combining object data and the associated logic. Gone is dm_sysobject with all it's 75 properties taking up your database space. If you want versioning, just add the Version trait. If you declare a record, add the Record trait (at run-time just like you do with Aspects today). <br />
Data type definitions can be versioned, so you don't need to take your application off-line to upgrade the type definition or logic.<br />
<br />
If you ignore all the multi-tenant cloud stuff, there's a lot there that my customers can use today (though mostly centered around availability and TCO). I've seen projects where a single deployment to production could take 2 weeks. With NGIS this will take minutes.<br />
Application composition and deployment will be completely different from what we're doing today, so I am expecting a big migration effort for current installations. That's the kind of work I am expecting to be hired for.<br />
<br />
A new day is dawning for Documentum and I like what I see on the cloudy horizon.SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0tag:blogger.com,1999:blog-5979915007011002160.post-39853179791356509112010-10-27T11:27:00.000+02:002010-10-27T11:27:35.479+02:00A new blogI did it. Like millions before me I started a blog. I've been waiting for a good opportunity for a while and here it is. I'm currently at Momentum 2010, a user conference for people who work with EMC Documentum. There were some very good sessions yesterday and they inspired me to write about them.<br />
<br />
So thanks to <a href="http://wordofpie.com/">Word of Pie</a>, <a href="http://infiniteblend.blogspot.com/">InfiniteBlend</a> and <a href="http://bigmenoncontent.com/">Big Men on Content</a> for showing me the way. I'll be following in your steps.SanderHendrikshttp://www.blogger.com/profile/11340567145694258259noreply@blogger.com0