Showing posts with label documentum. Show all posts
Showing posts with label documentum. Show all posts

Tuesday, August 7, 2012

ADTS 6.7 Word to PDF (page numbering incorrect)

Hello readers,

While using ADTS 6.7 to convert Word to PDF I encountered the problem that simple page numbering is not working correctly.
The solution to this problem is simple.

Add the following registry entry to the DTS/ADTS Server:
[HKEY_LOCAL_MACHINE\SOFTWARE\Adlib\Adlib Express\1.0.0\Native App Settings\Microsoft Word]
"PrintInBackground"=dword:00000001
Restart Adlib and DTS/ADTS Services.

Kind regards, Marcus

[Source: EMC Technical Support]

AdvancedPDFProcessor - Time Out Within Advanced PDF Plugin

Hello readers,

Today I was again struggling with ADTS 6.7 to convert Word to PDF.
I know that I solved the problem before...

After a bit of digging I found the solution.
The problem is the Adlib software while running on a server in domain.

The log message
INFO [***] AdvancedPDFProcessor - Time Out Within Advanced PDF Plugin

The solution
- Run "C:\Program Files (x86)\Documentum\CTS\Adlib\Express Web Services\Connector\ExponentConnector.exe".
- Browse to "Tools" > "Exponent Connector Options" and select "Exponent Managers" tab
- It should have two entries one with machine name and other with full machine name with domain. If not add the missing one.
- Carry out similar steps with "C:\Program Files (x86)\Documentum\CTS\Adlib\Express Web Services\Manager\ExponentManager.exe".
- Restart all CTS/ADTS and Adlib services.

Kind regards, Marcus

[Source]

Decrypting passwords in Documentum

Hello readers,

In some situations you need to recover an encrypted password.
If you have a super user account you can use the following API command.
decrypttext,c,
This will give you the password in plain text.

Kind regards, Marcus

Friday, January 27, 2012

xCP Information Center

Hello readers,

Are you working on xCP projects and/or problems?
Do you need the right documentation? But you don't want to search on Powerlink?

The EMC Documentum xCelerated Composition Platform (xCP) 1.6 Information Center is a dedicated web-based documentation system comprised of product documentation for Documentum 1.6 xCP components to help you build dynamic case-based applications. This information center enables you to navigate through available documentation and supports full-text searches, allowing you to quickly find information across the documentation set.

https://community.emc.com/docs/DOC-8250

Kind regards, Marcus

Tuesday, September 20, 2011

Documentum Housekeeping Jobs

Hello readers,

Sometimes when we develop applications with Documentum the repostory/docbase gets corrupted and unusable. To fix this Documentum has a couple of special jobs.

Please read this very well written whitepaper "Seven Jobs Every Documentum DeveloperShould Know and Use" from M. Scott Roth.

Kind regards, Marcus

Thursday, August 11, 2011

Restarting tomcat application server

Hello readers,

While developing with Taskspace I find myself often restarting tomcat on Windows.
A quick method to do this is a BAT file to also clear the cache folders.
Below you will find the script.

@echo OFF
:stop

@echo stopping service
sc stop tomcat6
ping 127.0.0.1 -n 20 -w 1000 > nul
sc query tomcat6
find /I "STATE"
find "STOPPED"
if errorlevel 0 goto start
goto stop
:start
@echo removing work
rmdir /S /Q "C:\Program Files\Apache Software Foundation\Tomcat 6.0\work"
@echo removing temp
rmdir /S /Q "C:\Program Files\Apache Software Foundation\Tomcat 6.0\temp"
@echo making new temp dir
mkdir "C:\Program Files\Apache Software Foundation\Tomcat 6.0\temp"
@echo removing presets
rmdir /S /Q "C:\Program Files\Apache Software Foundation\Tomcat 6.0\documentum\presets"
@echo removing cache
rmdir /S /Q "C:\Program Files\Apache Software Foundation\Tomcat 6.0\documentum\cache"
ping 127.0.0.1 -n 3 -w 1000 > nul
@echo starting service
sc start tomcat6


Kind regards, Marcus

Friday, July 22, 2011

Fix process form relations

Hello readers,

It could occur that the form relation with the process is gone and you cannot select it in the process anymore. This can be done by selecting "remove form" in the Activity Inspector of Process Builder. A quick way to fix this:

create dm_relation object set relation_name = 'dm_process_form', set parent_id = (select r_object_id from dm_process where object_name = '{process object name}'), set child_id = (select r_object_id from dm_xfm_form where object_name = '{task object name}'), set permanent_link = 1;

If you have multiple versions of a process or form please use the r_object_id's instead of the sub-queries.

Kind regards, Marcus

Wednesday, July 6, 2011

Documentum User Inbox Query

Hello readers,

A really simple yet effective DQL query is the following:

EXECUTE get_inbox WITH name='{user}';

It gives you information about the task but also the workflow and the included packages.

Kind regards, Marcus

Thursday, June 9, 2011

Fetch all Form Adaptor DQL queries by DQL (Forms Builder)

Hello readers,

This query is very nice to quickly look into all the DQL queries used in Form Adaptors made in Forms Builder.

select r_object_id, object_name as adaptor, title as description, param_value as dql
from dmc_xfm_adaptor_config where impl_class like '%DataSourceAdaptorService';


Kind regards, Marcus

Wednesday, March 16, 2011

Disabling e-mail notifications

Hello readers,

The Documentum Content Server will send e-mail notifications for certain events by default. To turn off all e-mail notifications you just have to add or adjust one setting in the "$DOCUMENTUM\dba\config\documentum\server.ini" file.
mail_notification = F
Restart the repository for the change to take effect.

Kind regards, Marcus

Friday, November 5, 2010

New dqMan is coming!

Hello readers,

Good news, a new version of dqMan is coming.
You can find a nice looking video on (http://www.fme.de/dqMan-Xtended-Video.753.0.html).
This video summarizes the core features of dqMan.

"The Xtended version now provides an object navigator, giving you direct access to all properties of an object and all relations to other objects. With a mouseclick you can browse through the objects of your repository. Another useful feature is the object compare function, allowing detailed consistency checks between any objects from any repository. Or copy attribute definitions between types or repositories, edit attribute value assistances and value mappings, restore deleted objects without leaving dqMan and many more... . And welcome a new member of dqMan suite, the daMan, focused on important aspects of audit trail management."

Kind regards, Marcus

Tuesday, November 2, 2010

dqMan Templates

Hello readers,

Here are some dqMan templates I would like to share with you.
They helped me a lot over the past few years.

Running Workflows
select p.object_name as process_name, wf.supervisor_name, wi.r_performer_name, a.object_name as activity_name, wi.r_creation_date as wi_creation_date, wi.r_runtime_state as wi_state, wf.r_start_date as wf_start_date, wf.r_runtime_state as wf_state, wi.r_exec_os_error as error, wi.r_act_seqno, 'after this' as r_object_id, a.r_object_id as activity_id, wi.r_object_id as workitem_id, wf.r_object_id as workflow_id, p.r_object_id as process_id
from dmi_workitem wi, dm_workflow wf, dm_process(all) p, dm_activity a
where wf.process_id = p.r_object_id
and wi.r_workflow_id = wf.r_object_id
and a.r_object_id = wi.r_act_def_id
and p.object_name = '{Process Name}'
and a.object_name like '{Activity Name}%'
and wf.supervisor_name like '{Supervisor Name}%'
and wi.r_performer_name like '{Performer Name}%'
and wi.r_runtime_state {Runtime State}
order by wf.r_object_id desc, wi.r_act_seqno desc

{Options
  Process Name.Label = "Process Name"
  Process Name.Mandatory = "yes"
  Process Name.ValueList = "select object_name from dm_process order by object_name"
  Process Name.ValueListType = "DQL query"
  Runtime State.Label = "Runtime State"
  Runtime State.Mandatory = "yes"
  Runtime State.ValueList = "= 0","= 1","= 2","= 3","= 4","= 5","<> 2","> 2"
  Runtime State.ValueListType = "Fixed list"
}


Running Workflow Activities
select w.r_object_id as workflow_id, wi.r_object_id as workitem_id, wi.r_performer_name, p.object_name, a.object_name as activity_name, wi.r_runtime_state, r_exec_os_error as os_error
from dm_process(all) p, dm_workflow w, dmi_workitem wi, dm_activity a
where w.r_object_id = '{Workflow Id}'
and w.r_object_id = wi.r_workflow_id
and wi.r_act_def_id = a.r_object_id
and p.r_object_id = w.process_id
order by wi.r_object_id desc;


Object in Workflow?
select distinct p.r_workflow_id, pc.object_name, p.r_package_name, p.r_package_type, p.r_component_id
from dmi_package p, dm_process(all) pc, dm_workflow w
where w.r_object_id = p.r_workflow_id and w.process_id = pc.r_object_id and any p.r_component_id = '{Object Id}'
enable (row_based);


Workflow Packages
select distinct r_package_type, r_component_id
from dmi_package
where r_workflow_id = '{WorkflowId}'
order by r_package_type
enable(ROW_BASED);


Fetch Workflow SDT
select *
from {std_name}_sp
where workflow_id = '{workflow_id}'

{Options
  std_name.Label = "STD Name"
  std_name.Mandatory = "yes"
  std_name.ValueList = "select name from dm_type where super_name = 'dmc_wfsd_element';"
  std_name.ValueListType = "DQL query"
  workflow_id.Label = "Workflow ID"
  workflow_id.Mandatory = "yes"
}


My Inbox Tasks
SELECT qi.r_object_id, p.object_name as process_name, qi.task_name, qi.task_state, qi.name as performer, qi.date_sent, wi.r_object_id as workitem_id, wf.r_object_id as workflow_id, p.r_object_id as process_id
FROM dmi_queue_item qi, dm_workflow wf, dm_process(all) p, dmi_workitem wi
WHERE qi.router_id = wf.r_object_id
and wf.process_id = p.r_object_id
and qi.item_id = wi.r_object_id
and qi.delete_flag = false
and qi.name = USER
ORDER BY qi.date_sent DESC


User Group Memberships
select distinct r_object_id, group_name, group_display_name from dm_group where group_class = 'group' and ANY i_all_users_names = '{User Name}' order by group_display_name;

{Options
  User Name.Mandatory = "yes"
  User Name.ValueList = "select user_name from dm_user;"
  User Name.ValueListType = "DQL query"
  User Name.Label = "User Name"
}


Kind regards, Marcus

Thursday, October 14, 2010

How to duplicate an object

Hello readers,

While configuring a new documentum environment I was in need of a second configuration object. At first I just created the object and entered all attributes by hand although most values are the same as the first config object. I felt like an idiot to just type everything by hand, so I figured out how to duplicate the config object to save some time and keep things simple.

This is how it's done:
begintran,c
set,c,{r_object_id},object_name
{new object_name value}
saveasnew,c,{r_object_id}
commit,c

We need to use an API script to perform the task. As you can see the object_name is changed on the original object. However the change is not saved, it's used for the new object. When we commit the API commands, the original change will be lost but the new object will have the new object_name. In short, a new identical object is created and only the object_name is different.

Note: This can also be done for folders.

Kind regards, Marcus

Monday, August 30, 2010

The world of dqMan

Hello readers,

Most people I talk to about Documentum are using Samson, DQLTester, Delilah, or RepoInt. Over the last year I'm using dqMan to query on the Documentum repositories. It supports a rich set of features that will speed up your development times.

Aside from the querying part it can also do API scripts and even generate them by using API templates. You can have a DQL result list and generate another DQL batch for each row or create an API script. Very useful fixing stuff or when you want to kill a lot of workflows.

My personal favorite is the "favorites" library. I can store all my common used queries and I can exchange them with me colleges. It also let you open multiple tabs for different repositories (or the same by using a copy button) and dumped objects. You can easily switch between tabs to compare and do complex stuff.

Another cool feature is that you can build "input templates". These are placeholders within a query for object_ids, object_names or whatever you like and let a prompt window choose a value for it by another DQL, a fixed list or just a simple textfield, you name it.


But most of all it's free as the air around you.
Download dqMan it's worth a try!


Kind regards, Marcus

Monday, August 9, 2010

Unable to Set the PresetContext for PresetService

Hello readers,

If you are developing in Documentum Taskspace you may encounter the following error message while you login.
Unable to Set the PresetContext for PresetService. PresetService will not be available.
UPDATE:
First try to clean the caches and empty the "C:\Documentum\Presets\" folder both on the application server. Sometimes the configuration is cached wrong.


ELSE:
This will most likely be the problem that the wrong ACL is set for your configuration objects. You can find the objects in "/System/Applications/YourApplication/Presets/".

All the configuration objects in this folder (and subfolders) need to have the "dmc_wdk_presets_acl" ACL. The owner needs to be "dmc_wdk_presets_owner". 


Make sure that all sub-folders and all underlying objects have the correct ACL!

Now Taskspace will have full access to the objects and the problem should be solved.

Kind regards, Marcus

Monday, June 7, 2010

About Documentum

Hello readers,

This is my first blog post about Documentum. I decided to start a blog about it, because I like to help people and to share my knowledge with the rest of the world.

To make things easier I will post tips and tricks about the things I came across while working with Documentum. But you can also expect some news items about EMC software and there partners aswell.

I hope this blog will be useful to some people out there.

King regards,
Marcus