1. DQL to create user
create “dm_user” object
set client_capability=2,
set default_folder=’’,
set home_docbase=’’,
set mailto:user_address=’a@abc.com’,
set user_os_domain=’’,
set user_name=’’,
set user_os_name=’’,
set user_privileges=0;
2. DQL to execute stored procedure (works for all supported DBMSes)
execute exec_sql with query=’execute my_sp_test ”123”,”prasad” ‘;
3. Running DQL in batch mode
a. Create a dql file
b. Run the following from command prompt
$idql docbasename -Uusername -Ppassword -Rtest.dql
Example command
C:\Documentum\product\5.3\bin>idql32 docbasename-Uusername -Ppassword -RC:
\test.dql
test.dql would contain something like this
go
go
4. DQL to Get all Files under a Particular Cabinet
select r_object_id, object_name from dm_document(all) where folder(’/Cabinet name’, descend);
The above DQL gives all versions. To get only current versions
select * from dm_document where folder (’/Cabinet name’, descend)
5. DQL to get total number of documents and folders under a cabinet
SELECT count(*) as cnt, ‘Docs’ as category FROM dm_document(all)
WHERE FOLDER (’/Cabinet Name’,DESCEND)
UNION
SELECT count(*) as cnt, ‘Folders’ as category FROM dm_folder
WHERE FOLDER (’/Cabinet Name’,DESCEND)
6. DQL to find whether a document is a part of virtual document
SELECT object_name,r_object_id FROM dm_sysobject
WHERE r_object_id IN
(SELECT parent_id FROM dmr_containment
WHERE component_id = (SELECT i_chronicle_id FROM dm_sysobject WHERE r_object_id = ‘’))
7. Repeating attributes
Repeated attribute queries are always a fun. I am going to present here more repeated attribute queries. But for starters, recognize the importance of ANY keyword
select r_folder_path from dm_folder where object_name
=’myFolder’ and any r_folder_path =’/Cabinet Name/test’;
8. DQL to find object type of a document
select r_object_type from dm_document where object_name=’ObjectName’;
9. DQL for index
Following query creates index
EXECUTE make_index WITH type_name=’dmi_workitem’,attribute=’r_workflow_id’
Using the query below, one can find out whether index has been succesfully created or alternatively whether the index exists or not
Select r_object_id,index_type,attribute,attr_count,data_space from dmi_index where index_type in (select r_object_id from dm_type where name=’dmi_workitem’);
10. DQL to see sessions
execute show_sessions
11. Enable FTDQL
SELECT
r_object_id,
score,
text,
object_name,
r_object_type,
r_lock_owner,
owner_name,
r_link_cnt,
r_is_virtual_doc,
r_content_size,
a_content_type,
i_is_reference,
r_assembled_from_id,
r_has_frzn_assembly,
a_compound_architecture,
i_is_replica,
r_policy_id,acl_name,
r_creation_date,
r_modify_date,
subject
FROM
custom_document
WHERE
(custom_attr1 = ’search1′ AND
(custom_attr2 = ’search2′ AND
)) AND
(a_is_hidden = FALSE)
ENABLE
(FTDQL)
12. DQL to get current date, time
select DATE(now) as systime from dm_server_config;
13. DQL to list all available templates in Webpublisher
select * from my_document where folder(’/WebPublisher Configuration/Content Templates/myTemplates’,descend) and any r_version_label =’Approved’;
14. DQL to list objects having duplicate names
SELECT object_name, count(*) FROM dm_document
GROUP BY object_name
HAVING count(*) > 1
ORDER BY object_name
15. Clear INBOX
delete dmi_queue_item objects where delete_flag=0
16. DQL to retrieve all required attributes of a particular type
SELECT attr_name FROM dmi_dd_attr_info WHERE type_name=’dm_document’ AND is_required 0
17. DQL to list workflow attachments
select r_component_id, r_component_name from dmi_wf_attachment where r_workflow_id = ‘’
18. If your statistics are not up to date, database may choose a very inefficient execution plan. Be sure toupdate statistics often. It is recommended that you use the dm_UpdateStatistics job as it will calculateextended statistics on particular tables and columns which provide additional performance benefits. If the DBA uses their own scripts to calculate the statistics, then these enhancements will not be available.
19.Use the script “dctm_indexes_by_table.sql” to generate a list of all indexes on Documentum tables, ordered by table name. (Available from http://developer.documentum.com.)
Use the script “dctm_indexes_by_index.sql” to generate a list of all indexes on Documentum tables,
ordered by index name. (Available from http://developer.documentum.com.)
20.It is strongly recommended that all indexes on Documentum base tables be created from within Documentum and not at the database level.
There are two reasons for this:
The internal conversion process from DQL to SQL will check for the presence of a dmi_index object for repeating valued attributes and will generate different SQL according to what it finds.
If indexes are created directly through SQL*Plus, then Documentum will not know anything about them and will assume it is unindexed. This may result in a less efficient SQL query.
Secondly, if the indexes are created from within Documentum, and they are inadvertently dropped, the dm_DBWarning job will automatically recreate them at next execution.
The syntax for creating new indexes is as follows:
In DQL:
EXECUTE make_index WITH type_name=object_type,
attribute=attribute_name{,attribute=attribute_name,…)
or
Using APIs:
dmAPIGet(”apply,session,NULL,MAKE_INDEX,TYPE_NAME,S,object_type,ATTRIBUTE,S
,attribute_name(,ATTRIBUTE,S,attribute_name,…}
These indexes will be created in the tablespace identified by the index_store server.ini parameter.
Be sure to create the index on the appropriate type table.
For example, although ‘keywords’ is an attribute of the dm_document type, it is actually inherited from ‘keywords’ from the dm_sysobject type.
Drop the Index if Necessary
If there is no performance improvement, OR the optimizer is not using the new index, drop it using:
EXECUTE drop_index [[FOR] dmi_index_id] [WITH name = index_name]
or
dmAPIGet(”apply,session,dmi_index_id,DROP_INDEX [,NAME,S,index_name]“)
21. Using the iapi utility and the trace API you can generate log information that contains the SQL resulting from a DQL query.
This is useful when it is a DQL query that is performing poorly and you wish to test using a nonsuperuser account. Non-query type APIs are not traced.
Here is an example of tracing a simple DQL query.
trace,c,10,,DM_QUERY.
More on TKPROF here
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96533/sqltrace.htm
22. DQL Hints
SELECT object_name FROM dm_document ENABLE (RETURN_TOP 10)
For DB2, performance can be improved using
SELECT object_name FROM dm_document ENABLE (RETURN_TOP 10, OPTIMIZE_TOP 10)
The FETCH_ALL_RESULTS N hint fetches all the results from the database
immediately and closes the cursor. The hint does not affect the execution plan,
but may free up database resources more quickly.
To fetch all the results, set N to 0.
On SQL Server, it is recommended that you use SQL_DEF_RESULT_SETS
instead of the FETCH_ALL_RESULTS hint. SQL_DEF_RESULTS_SETS
provides the same benefits and is the recommended way to access SQL Server
databases.
Passthrough hints are hints that are passed to the RDBMS server. They are not
handled by Content Server.
To include a passthrough hint, you must identify the database for which the
hint is valid. To identify the target database, keywords precede the hints. The
valid keywords are: ORACLE, SQL_SERVER, SYBASE, and DB2. For
example, the following statement includes passthrough hints for SQL Server:
SELECT “r_object_id” FROM “dm_document”
WHERE “object_name” =’test’
ENABLE SQL_SERVER(’ROBUST PLAN’,’FAST 4’,’ROBUST PLAN’)
For portability, you can include passthrough hints for multiple databases in
one statement. The entire list of hints must be enclosed in parentheses. The
syntax is:
(database_hint_list {,database_hint_list})
where database_hint_list is:
db_keyword(’hint’{,’hint})
db_keyword is one of the valid keywords identifying a database. hint is any hint
valid on the specified database.
For example:
SELECT object_name FROM dm_document doc dm_user u
WHERE doc.r_creator_name = u.user_name ENABLE
(ORACLE(’RULE’,’PARALLEL’), SYBASE(’AT ISOLATION READ
UNCOMMITTED’),SQL_SERVER(’LOOP JOIN’,’FAST 1’)
Use FETCH_ALL_RESULTS if you want to reduce the resources used by the
database server by quickly closing cursors. On SQL Server, try
FETCH_ALL_RESULTS if using SQL_DEF_RESULT_SETS did not improve
query performance.
23. If the table is registered, check with the owner of the registered table, or a Documentum superuser, about giving you access to the table.
You will need at least a BROWSE permit on the registered table object in order to access it. If the table has not yet been registered, check with the table’s owner about registering it. Note that you must have READ access to the dm_registered object for this table in order to access it in any way (SELECT, INSERT, UPDATE, DELETE).
Note that if you specified the special dm_dbo document base owner, the first parameter will hold the actual name of the document base owner.
24. DQL to list docbrokers
execute list_targets
25. DQL to list worrkflow information
select task_name, task_state, actual_start_date, dequeued_date from dmi_queue_item where router_id = ‘workflowId’
26. Query to find active workflows, supervisors of the workflows
select r_object_id, object_name, title, owner_name,r_object_type, r_creation_date, r_modify_date, a_content_type from dm_document where r_object_id in(select r_component_id from dmi_package where r_workflow_id in (select r_object_id from dm_workflow where r_runtime_state = 1))
27. Though this is not DQL, I thought of mentioning here as it most widely used DFC operation
sysObject.queue (”dm_autorender_win31?, _
“rendition”, _
0, _
False, _
dueDate, _
“rendition_req_ps_pdf”)
28. To find ACLs related to dm_sysobject:
select r_object_id as obj_id, object_name from
dm_sysobject (all)
where acl_name =” and
acl_domain = ”
To find ACLs as the default ACL of a user:
select user_name from dm_user where acl_name=”
To find ACLs associated with a type:
select r_object_id, r_type_name from dmi_type_info where acl_domain=” and acl_name=”
When these queries do not return any related objects and you still cannot delete the ACL, use tracing:
In the Message Tester or IAPI, execute the command: apply,c,NULL,SQL_TRACE,LEVEL,I,1
Then, try to delete the ACL that is causing problem.
Turn off tracing by executing:
apply,c,NULL,SQL_TRACE,LEVEL,I,0
Examine the session log for the trace output, located in $DOCUMENTUM/dba/log//
Excerpt of the session log:
[DM_ACL_E_DESTROY_IN_USE]error: “Failed to destroy the ACL ‘Documentum Users’ in domain ‘dbabep’ because it is in use.”
[DM_SESSION_I_SESSION_QUIT]info: “Session 01000dcb80010ccf quit.”
Run the following query from Oracle SQL:
select r_object_id from dm_sysobject_s where acl_domain =’dbabep’ and acl_name =’Documentum Users’ union select r_object_id from dm_user_s where acl_domain = ‘dbabep’ and acl_name =’Documentum Users’ union select r_object_id from dmi_type_info_s where acl_domain =’dbabep’ and acl_name =’Documentum Users’
It will return the r_object_id value = 09000dcb800362c4.
Run the following query from IDQL:
select object_name
from dm_sysobject
where r_object_id=’09000dcb800362c4′
If the above query returned nothing, then this object cannot be accessed by any Documentum WorkSpace method, only via SQL in the underlying Oracle database. The following entries must be deleted at the RDBMS level: dm_sysobject_s and dm_sysobject_r tables; there are no entries in the dmi_object table
29. List of object types and corresponding identifiers. Helpful when reading the code.
00 dmi_audittrail_attrs
03 dm_type
05 dmr_containment
06 dmr_content
08 dm_application
08 dm_job
08 dm_procedure
08 dm_query
08 dm_script
08 dm_smart_list
09 dm_document
0b dm_folder
0c dm_cabinet
0d dm_assembly
10 dm_method
11 dm_user
12 dm_group
19 dm_registered
1f dmi_index
26 dmi_registry
27 dm_format
28 dm_filestore
28 dm_store
2c dm_distributedstore
2e dmi_type_info
2f dm_dump_record
30 dmi_dump_object_record
31 dm_load_record
32 dmi_load_object_record
37 dm_relation
3a dm_location
3b dm_fulltext_index
3c dm_docbase_config
3d dm_server_config
40 dm_blobstore
41 dm_note
45 dm_acl
46 dm_policy
49 dmi_package
4a dmi_workitem
4c dm_activity
4d dm_workflow
53 dm_literal_expr
5e dm_federation
5f dm_audittrail_acl
5f dm_audittrail_group
5f dm_audittrail
66 dm_alias_set
6a dmi_dd_attr_info
0b dm_taxonomy
0b dm_xml_application
6b dm_display_config
20 dmi_sequence
30. Job scheduler Query
SELECT ALL r_object_id, a_next_invocation
FROM dm_job
WHERE (
(run_now = 1)
OR ( (is_inactive = 0)
AND ( ( a_next_invocation <= DATE(’now’)
AND a_next_invocation IS NOT NULLDATE )
OR ( a_next_continuation DATE(’now’))
OR (expiration_date IS NULLDATE))
AND ( (max_iterations = 0)
OR (a_iterations Template Properties
3) Under Template Audit Trail Setting, select option ‘Always On’ – Audit trail data for each instance will be available and saved at workflow completions.
31. In a workflow, a performer can enter comments while he/she is performing the task. And those comments are carried to the next performer in this workflow. When using WebPublisher workflow report to review the workflow instances, and in workflow history, you are only able to get the truncated comments back from WP’s interface. Especially for those already aborted workflow instances, there is no way that you can get the complete comments back from WP’s GUI. In some cases, those comments are very important to our customers and they need to find a way to get those comments back.
Here is the steps to get those comments back:
==
1) Identify the workflow from the dm_workflow table, get the r_object_id of the workflow:
select r_object_id, object_name from dm_workflow where object_name = ‘your work flow name’
2) Identify the notes that are carried by this workflow:
select r_note_id from dmi_package where r_workflow_id = ‘ the object id of the workflow’
3) Get the content id of each of those note ids returned:
select r_object_id from dmr_content where any parent_id = ‘the note id’
4) Go to DA, Administration->Job Management->Administration, use the “GET_PATH” method to find out the path of the files which stores the comments.
32. Query to get all documents expired in previous 1 month
SELECT s.r_object_id, s.object_name, DATETOSTRING(”r.a_expiration_date”,’mm/dd/yyyy’) as creation_date
FROM dm_sysobject_s s, dm_sysobject_r r
WHERE s.r_object_id = r.r_object_id
AND s.r_object_type = ‘dm_document’
AND DATEDIFF(month,”r.a_expiration_date”,DATE(NOW)) >= 0
AND DATEDIFF(month,”r.a_expiration_date”,DATE(NOW)) <= 1
AND r.r_version_label = ‘Expired’
ORDER BY 3
33. DQL to find all the folders in a Cabinet, where the folders are contentless
SELECT f1.object_name, f1.r_object_id, f1.r_folder_path
FROM dm_folder f1
WHERE FOLDER(’/Cabinetname’,descend)
AND NOT EXISTS (SELECT f2.object_name FROM dm_sysobject f2 WHERE ANY f2.i_folder_id = f1.r_object_id)
ORDER BY object_name
34. Find Super Groups and sub groups
select distinct r_object_id, group_name as super_groups
from dm_group_sp where group_name not in (select gs.group_name
from dm_group_r gr, dm_group_s gs
where gr.r_object_id = gs.r_object_id
group by gs.group_name
having count(gr.i_supergroups_names) > 1)
union
select distinct r_object_id, group_name as sub_groups
from dm_group_sp where group_name in (select gs.group_name
from dm_group_r gr, dm_group_s gs
where gr.r_object_id = gs.r_object_id
group by gs.group_name
having count(gr.i_supergroups_names) > 1) ;
35. DQL for finding all checked out documents in a docbase
select * from dm_document where (r_lock_owner is not nullstring or r_lock_owner ” or r_lock_owner ‘ ‘)
36.DQL to list the users who has access to particular folder path
SELECT i_all_users_names FROM dm_group
WHERE group_name IN (SELECT r_accessor_name FROM dm_acl
WHERE object_name IN (SELECT acl_name FROM dm_folder
WHERE ANY r_folder_path = ‘/folderpath’))
ORDER BY i_all_users_names
37. Query to find out what user signed off on what document
SELECT “audited_obj_id” FROM “dm_audittrail” WHERE
“event_name” = ‘dm_signoff’ AND
“user_name” = ‘tom’ AND
substr (”audited_obj_id”, 1, 2) = ‘09’AND
“time_stamp” >= DATE(’01/01/1998′, ‘dd/mm/yy’) AND
“time_stamp” SELECT object_name, r_version_label FROM dm_sysobject where any r_version_label in (’WIP’) and r_object_id not in (select r_object_id from dm_sysobject where any r_version_label in (’Staging’, ‘Approved’, ‘Expired’) )
39. Query to get all expired documents in previous month
SELECT s.r_object_id, s.object_name, DATETOSTRING(”r.a_expiration_date”,’mm/dd/yyyy’) as creation_date
FROM dm_sysobject_s s, dm_sysobject_r r
WHERE s.r_object_id = r.r_object_id
AND s.r_object_type = ‘dm_document’
AND DATEDIFF(month,”r.a_expiration_date”,DATE(NOW)) >= 0
AND DATEDIFF(month,”r.a_expiration_date”,DATE(NOW)) <= 1
AND r.r_version_label = ‘Expired’
ORDER BY 3
0. Query to find the file system path location of a document
select doc.r_object_id, doc.object_name, MFILE_URL(”,-1,”) as mypath,doc.i_folder_id from dm_document doc
where
——————————————————————
Thursday, March 22, 2007
DQL Tips
————————————————————————————-
*** get CURRENT TIME on server ***
select DATE(NOW) as systime from dm_server_config
————————————————————————————-
*** get the implicit version label ***
select s.r_object_id,s.object_name,r.r_version_label from dm_sysobject s, dm_sysobject_r r where r.r_object_id = s.r_object_id and
r.i_position = -1
————————————————————————————-
*** include r_object_id to remove blank rows
select object_name, r_object_id, a_expiration_date from dfas_common where folder(‘/Raj Srinivasan’) and any a_expiration_date is not nulldate
————————————————————————————-
*** select documents with pdf renditions (optimized for performance) ***
select * from dm_document where exists(select * from dmr_content where any parent_id=dm_document.r_object_id and full_format=’pdf’)
————————————————————————————-
*** select all documents that have nulldate in repeating attribute
select object_name from dfas_common where folder(‘/Raj Srinivasan) and r_object_id NOT IN (select r_object_id from dfas_common where folder(‘/Raj Srinivasan’) and any a_expiration_date is not nulldate)
————————————————————————————-
*** select all documents that have nulldate in repeating attribute or a_expiration_date has past
select count(*) from dfas_common where folder(‘/content/Corporate Resources/Human Resources’,descend) and (any a_expiration_date <
date(today) or (r_object_id NOT IN (select r_object_id from dfas_common where folder('/content/Corporate Resources/Human Resources',descend)
and any a_expiration_date is not nulldate)))
————————————————————————————-
*** select folderpath with filename
select distinct s.object_name, fr.r_folder_path from dm_sysobject (all)
s,dm_sysobject_r sr,dm_folder_r fr where sr.i_position = -1 and
sr.r_object_id = s.r_object_id and fr.r_object_id = sr.i_folder_id and
fr.i_position = -1 and fr.r_folder_path like '/ChemNet/%'
order by fr.r_folder_path,s.object_name
————————————————————————————-
*** empty folders ***
SELECT r_object_id,r_folder_path FROM dm_folder f WHERE r_object_id NOT IN
(SELECT distinct i_folder_id FROM dm_sysobject WHERE any i_folder_id = f.r_object_id and folder('/content',descend)) and folder('/content',descend)
————————————————————————————-
*** NULL a_effective_date ***
select object_name from dfas_common where folder('/images', descend) and r_object_id NOT IN (select r_object_id from dfas_common where folder('/images', descend) and any a_effective_date is not nulldate)
————————————————————————————-
*** select component from workitem ***
select
r_component_id
from
dmi_package p
where
exists (select r_object_id
from dmi_workitem w
where
w.r_object_id = and
w.r_workflow_id = p.r_workflow_id and
w.r_act_seq_no = p.r_act_seq_no)
————————————————————————————-
*** select renditions ***
SELECT s.object_name, f.dos_extension
FROM dm_dbo.dm_sysobject_s s, dm_dbo.dmr_content_r c, dm_dbo.dm_format_s f
WHERE (c.parent_id = s.r_object_id)
and (c.i_format = f.r_object_id)
AND c.page=0 AND f.dos_extension ‘xml’
AND folder(‘/whatever’)
————————————————————————————-
*** find workflow given document ***
select * from dm_workflow where r_object_id in (select r_workflow_id from dmi_package where any r_component_id in (select r_object_id from
dm_sysobject (all) where i_chronicle_id in (select i_chronicle_id from dm_sysobject where r_object_id=”))) and r_runtime_state=’1′
————————————————————————————-
*** return only inherited attributes ***
SELECT attr_name FROM dmi_dd_attr_info WHERE type_name = ‘my_custom_type’ AND attr_name NOT IN
(SELECT attr_name FROM dmi_dd_attr_info WHERE type_name = ‘dm_document’)
————————————————————————————-
Documents that are uploaded in to docbase b/w Aug 2004 and Oct 2004
select a.r_object_id,a.r_creation_date,a.r_modify_date,b.user_group_name
from dm_document a, dm_user b
where (a.r_creation_date >= Date(’08/01/2004′,’mm/dd/yyyy’) and a.r_creation_date 0
————————————————————————————-
Subject: Why do we create four views for each subtype?
Note: For example the type dm_document has four views:
dm_document_sp
dm_document_sv
dm_document_rp
dm_document_rv
The two _sp and _rp views are used by DQL and the two
_sv and _rv views are used by the Object Manager.
Also, the _sp and _sv views are for single (non-repeating) attributes, while the _rv and _rp views are for repeating attibutes.
————————————————————————————-
Label Text of the either Sytem Type or Custom Type
select label_text from dm_nls_dd_info where parent_id in
(select r_object_id from dm_aggr_domain where type_name = ‘field_type’)
Results:
Content Location
Keywords Category
Business Unit Owner
————————————————————————————-
DQL to list all documents attributes and their associated folder path
select s.object_name, fr.r_folder_path
from dm_document s, dm_sysobject_r sr,
dm_folder_r fr
where s.i_is_deleted = 0
and sr.i_position = -1
and sr.r_object_id = s.r_object_id
and fr.r_object_id = sr.i_folder_id
and FOLDER(‘/ChemNet’, descend)
and fr.r_folder_path like ‘/ChemNet/%’
order by fr.r_folder_path,s.object_name
————————————————————————————-
*** Web cabinet of a content ***
SELECT object_name FROM dm_cabinet
WHERE r_object_id IN (SELECT i_cabinet_id FROM dm_folder
WHERE r_object_id IN (SELECT i_folder_id FROM dm_document (ALL)
WHERE object_name like ‘test%’)) AND r_object_type=’wcm_channel’
OR
select r_object_id, object_name from wcm_channel where r_object_id in
(select i_ancestor_id from dm_folder where r_object_id in
(select i_folder_id from dm_sysobject where object_name = ‘test’))
————————————————————————————-
*** To get the first level folders from the cabinets ***
select object_name from dm_folder where any i_folder_id in (select r_object_id from dm_cabinet where object_name=’Cabinets’)
————————————————————————————-
*** To show the previous Active content ***
select r_object_id,i_chronicle_id,DATETOSTRING(DATE(TODAY),’ddmmyyyy’) as sysdate from dm_document (ALL) where object_name like ‘test%’ and
FOLDER(‘/ChemNet/ChemonicsProcess/Bidding’) and
any r_version_label = ‘Active’
————————————————————————————-
To find the folders for particular group for specified permission
select for write object_name from dm_folder where acl_name IN (select object_name from dm_acl where any r_accessor_name = ‘dm_world’) and folder(‘/ChemNet’,descend)
or
select object_name from dm_folder where acl_name IN (select object_name from dm_acl where any r_accessor_name = ‘dm_world’ and any r_accessor_permit = ‘7’) and folder(‘/ChemNet’,descend)
1 – NONE
2 – BROWSE
3 – READ
4 – RELATE
5 – VERSION
6 – WRITE
7 – DELTE
————————————————————————————-
DFC to insert rows into registered table
public static IDfCollection execQuery(String queryString, IDfSession session)
throws DfException{
IDfCollection col = null; //Collection for the result
IDfClientX clientx = new DfClientX();
IDfQuery q = clientx.getQuery(); //Create query object
q.setDQL(queryString); //Give it the query
// example queryString: “insert into dm_dbo.your_registered_table
(field1, [field]) values(,[
col = q.execute(session, IDfQuery.DF_EXEC_QUERY);
System.out.println(“Query executed.”);
return col;
}
————————————————————————————-
How to avoid redundancy for this simple query?
select distinct d.object_name,sys.authors from dm_document d, dm_sysobject_r sys
where folder (‘/xyz/xyz_first’) and
d.r_object_id = sys.r_object_id and
(sys.i_position=-1 or (sys.i_position<=-2 and sys.authors is not null))
In this query,
37. Query to find out what user signed off on what document
SELECT “audited_obj_id” FROM “dm_audittrail” WHERE
“event_name” = ‘dm_signoff’ AND
“user_name” = ‘username’ ………………………….
then the error comes like
Error occured during query execution :[DM_QUERY_E_NOT_ATTRIBUTE]error: “You have specified an invalid attribute name (dm_signoff).”
Why it is coming like thar error,
Suppose, i want to know last operation in webtop,
i,e i done checkin operation on a document, and i log out from the webtop, then after when i am login that webtop, how to find that last operation (checkin on particular document).
please give the DQL query to retrive the last operation on webtop…
Thanks in Advance
SureshReddy Annapureddy
Hi there,
I tried to run the query to locate file system path location:
select r_object_id, r_modifier, wrmp_revision, wrmp_version, wrmp_revision_label, wrmp_version_label, title, object_name, wrmp_document_number, r_modify_date, wrmp_wbs_number, MFILE_URL(“,-1,”) as “filepath” from dm_document where r_object_type=’wrmp_coker_doc’ and r_modifier=’Authorized User’
First thing, dql did not like the double quotes in the parenthesis and I received the below error:
Query Error:[DM_QUERY_E_SYNTAX]error: “A Parser Error (syntax error) has occurred in the vicinity of: select doc.r_object_id, doc.object_name, MFILE_URL(“”
Next, I used single quotes and received this error:
Query Error:[DM_CONTENT_E_BAD_FORMAT]error: “Format ,-1, is invalid”
What am I missing here????
Charles
Should be 2 single quotes:
select doc.r_object_id, doc.object_name, MFILE_URL(”,-1,”) as mypath,doc.i_folder_id from dm_document doc
I think that is among the such a lot vital information for me.
And i am glad reading your article. However want to observation on few common
things, The website style is perfect, the articles is really excellent : D.
Excellent job, cheers
how to write a query to get all column names form dm_document
select distinct attr_name, label_text from dmi_dd_attr_info where attr_name in
(select attr_name from dm_type_s a, dm_type_r b where a.r_object_id = b.r_object_id
and a.name =” and (i_position*-1)-1 >= start_pos) and type_name=”
please, use the query genrated in DSL for sqlserver
Excellent blog post. I definitely appreciate this website.
Stick with it!
thanks ,,,, if i need to return the all attribute and value and after that set value and submit it !!! hoe i can do
What’s Happening i’m new to this, I stumbled upon this I’ve discovered It absolutely helpful and it has aided me out loads. I hope to give a contribution & help different users like its helped me. Good job.
I know this website provides quality based articles and other stuff, is there any other web page which
presents such information in quality?
Excellent goods from you, man. I’ve understand your stuff previous to and you are just too excellent. I actually like what you have acquired here, certainly like what you’re saying and the way in which you say it.
You make it entertaining and you still care for to keep it wise.
I cant wait to read far more from you. This is actually a wonderful web site.
Hi, I do think this is an excellent site.
I stumbledupon it 😉 I’m going to return yet again since i have book marked it. Money and freedom is the greatest way to change, may you be rich and continue to help others.
Hi, search for one of my doubt wrt DQL landed me here. Must say excellent post on different DQL covering basic DQL. 🙂
But I would like to know if we can find out the no of active session on documentum server for any specific time period. Like “execute show_sessions” returns current session on server but i want to know the no of active session for previous day for e.g.
I would be grateful if you can let me know how to find this using DQL.
Useful info. Fortunate me I found your website by chance, and I am stunned
why this accident did not took place earlier! I bookmarked it.
Jeannette, I guess I have to be a total geek, as people flip to me when
they require help. The reality is, with a great
number of WordPress groups available, you can find plenty of sources for asking
concerns or discovering the solution to a particular difficulty.
Since tthe admin of this web site is working, no question vey soon it willl be renowned, due to itts quality contents.
Hi
I want to delete some objects in cabinet level, if will destroty object. Is files will be removed permanently?
Great blog here! Also your web site loads up fast!
What web host are you using? Can I get your affiliate link
to your host? I wish my site loaded up as fast as yours lol
Is there a way where i can keep DQL in the loop just like we can do in SQL. I need to have a logic in DQL where i can delete i_folder_id till the last index i.e. i want to delete 0,1,2 and leave 3rd index so that it would become 0th one. Any ideas/hints ?
Excellent
Gastos . Pero ha tryiong no obstante. He estado usando – tipos
móviles del varias páginas web desde hace un año y estoy nervioso ansiosa acerca de cambiar a otra plataforma.
He oído Muy bueno cosas sobre blogengine.net . ¿Hay una manera que puedo importación toda mi wordpress Mensajes en él ?
Cualquier ayuda sería muy grandemente apreciada!
Fantastic blog! Do you have any tips and hints for aspiring writers?
I’m planning to start my own site soon but I’m a little lost on everything.
Would you propose starting with a free platform like WordPress or go for a paid option? There are so many options out there
that I’m completely overwhelmed .. Any tips?
Cheers!
Good day! Do you know if they make any plugins to safeguard against hackers?
I’m kinda paranoid about losing everything I’ve worked hard on. Any
suggestions?
how to create external acl?
i tried like this:
create dm_acl object
set class_name=0,
set r_is_internal=0,
set object_name=’acl_demo’,
set acl_domain=’Administrator’,
set r_accessor_name[0]=’roopa’,
r_accessor_permit[0]=4
Create through API,
create,c,dm_acl
set,c,l,object_name
Test_1234
set,c,l,acl_class
0
set,c,l,r_is_internal
0
set,c,l,owner_name
dm_dbo
save,c,l
grant,c,l,dm_owner,6,
grant,c,l,dm_world,0,
grant,c,l,roopa,4
save,c,l
Is there a way to remove the contents of an object?
I would like to preserve the metadata.
Get the i_contents_id for that object and delete the content from dmr_content
“delete dmr_content object where r_object_id=’content id'”
update the i_contents_id to 0000000000000000, so that it will be a contentless object and you can preserve the metadata.
Thank you.
how to create a folder structure using queries?
How to create 1000 folders using dql? Is it possible to create folder structure using queries?
Using DFC script, you can recursively call the create folder api command(see below) which will create folders according to your logic.
create,c,dm_folder
set,c,l,object_name
Test Folder Name
link,c,l,/Test Cabinet
save,c,l
There is no direct way to create a folder structure using DQL queries. But you can use DFC script or VBA code to create multiple folders as per your logic.
The other simplest solution (assuming that the underlying folder structure is identical in the cabinets) is this .
1. On your PC create a location with the entire folder structure ( you can do this manually or by whatever means you would like)
2. On DA create the Cabinets.
3. Open each cabinet and drop the top level of your ‘mock’ structure into it.
Hope this helps you.
Regards,
Robin
select r_object_id, object_name, title from dm_document where r_object_id in(select r_component_id from dmi_package where r_workflow_id in(select r_object_id from dm_workflow where r_act_name like ‘%QA%’ and r_performers not like ‘df_%’)) enable(row_based)
I would like to extend the above querie with a row from the dm_workflow table (r_last_performer and the r_object_id) but when I do I get a lot of the same results what do I do wrong?
my DQL looks like:
select d.r_object_id, d.object_name, d.title, w.r_object_id, w.r_last_performer from dm_document d, dm_workflow w where r_object_id in(select r_component_id from dmi_package where r_workflow_id in(select r_object_id from dm_workflow where r_act_name like ‘%QA%’ and r_performers not like ‘df_%’)) enable(row_based)
You can try using Join queries like below
select d.r_object_id, d.object_name, d.title, w.r_object_id, w.r_last_performer from dm_document d, dm_workflow w,dmi_package p where p.r_workflow_id=w.r_object_id and d.r_object_id=p.r_component_id and w.r_act_name like ‘%QA%’ and w.r_performers not like ‘df_%’ enable(row_based)
how to set object type mandatory attributes as mandatory while importing document to repository from dfc. so that if we not provide mandatory attributes the document will not get import to repository ?
Kindly help
You can use NOT NULL value while creating the Object type in DQL.
For Ex:
CREATE TYPE “employee”
(
“emp_first_name” string(32)
(SET “label_text”=’First Name’,
NOT NULL),
“emp_middle_name” string(32)
(SET “label_text”=’Middle Name’),
“emp_last_name” string(32)
(SET “label_text”=’Last Name’,
NOT NULL)
)
Also you can use Documentum Composer to create the object type and define the mandatory attributes.
Please refer to DQL Reference guide to get more details on Attribute Constraints.
Regards,
Robin
It would be great if I could post text and pics to the blog from my cell (iPhone). Maybe even video??. . I’m new at the whole blog thing, so it really would need to be free and pretty easy to use.. . THANKS!.
How to write a dql querry for 1.How many projects in each repository is Not having RFI folder and its subfolders?
I hope you are trying to retrieve the count of objects which does not exist in RFI folder.
If so , you can try the below query,
select count(*) from dm_document where any i_folder_id not in (select r_object_id from dm_folder where object_name like ‘%RFI%’)
Thanks For the Querry Robin
How to update ACL’s in a project to include Change Location in Extended Permissions for any group having Write or Delete access?
Please help me out with the querry.
you can’t update dm_acl objects using DQL, but you can use API script
retrieve,c,dm_acl where object_name=’ACLName’
grant,c,l,GroupName,7,change_location
save,c,l
Regards,
Robin
Hi Robin,
Cant we use the below script?
UPDATE dm_acl_r
SET r_accessor_xpermit =
r_accessor_xpermit + 65536 – BITAND(r_accessor_xpermit, 65536)
WHERE r_is_group = 1 AND r_accessor_permit >= 6;
I need extended permisions to be changed to that ACL. And moreover there may be 100 number of acl’s for a single project. How can we update them all at a time using the script?
I am getting while running that querry
Error processing command:DfException:: THREAD: ajp-bio-3.239.32.16-8009-exec-390; MSG: [DM_API_E_QUERY_FAIL]error: “Query failed: select r_object_id from dm_acl where object_name=’729118_exscth2_acl_105’”; ERRORCODE: 100; NEXT: null
***Script Aborted due to error***
how to find out older verition using dql ??
https://community.emc.com/thread/126654?start=0&
The above link may help you to find out
how to pull a report of all documents that a user has opened and/or downloaded in a folder using DQL query?
Hi,
i want to fetch all the folders present in all the cabinets using DQL [“SELECT object_name, r_object_id, r_folder_path FROM dm_folder WHERE FOLDER(’/Cabinetname’,descend) ORDER BY r_folder_path”]. In Dql tester its giving me response. but when i am using it in our code server time out. is there any way to resolve the situation?
How can we get all the documents from a folder, including the sub-folders?
I require a DQL query to find the user have admin priviledge
after uploading the indexing field, how can I enable the joblist so that I can send to workflow.
Do you have any video of that? I’d care to find out more details.
I’m really loving the theme/design of your site. Do you ever run into any internet browser
compatibility problems? A couple of my blog visitors have complained about my blog
not working correctly in Explorer but looks great in Safari.
Do you have any recommendations to help fix this issue?
I have read so many articles concerning tthe
blogger lovers but this paragraph is genuinely a good post, keep
it up.
Hi All,
Need a DQL query to find the total documents and total size utilized in docbase
I seldom comment, but i did a few searching and wound up here . And I actually do have 2 questions for you if it’s allright. Is it only me or does it look like a few of these responses look like they are coming from brain dead people? 😛 And, if you are writing at additional sites, I would like to follow anything fresh you have to post. Would you list of every one of your community pages like your Facebook page, twitter feed, or linkedin profile?
WOW just wһat I was ⅼooking fⲟr. Came here Ƅy
searching fօr fungsi gorden rumah sakit
The best deal I scored this weekend is the name brand formal wear I bought my boyfriend for $11 at Goodwill. I got a tie, dress pants, and a dress shirt all in new condition.
I was suggested this web site through my cousin. I ɑm now not positive whetheг tһis pᥙt up is ᴡritten throսgh һim as nobodу else understand such special
aƅ᧐ut my difficulty. Yоu are incredible! Thankѕ!
It’s neaгly impossible to find knowledgeаble people in this partіcular subject, however, you seem like yoᥙ know what you’re talking аbout!
Thanks
PWXm632I7Mk
Ԍood respond in return of tһis difficulty wіth
firm arguments and telling the whole thing abօut that.
Good way of explaining, and good paragraph to ցеt factѕ on the topic оf
mү presentation subject matter, ᴡhich i ɑm
ցoing tо pгesent in institution ⲟf higher education.
I ɗo not eѵen know the waу I finished up here, howeνеr
І bеlieved tһis submit waѕ оnce great. I dօn’t recognise who you
are but ϲertainly you’ге going to a famous blogger in case yоu aren’t alгeady.
Cheers!
Thanks for finally talking about >Uѕeful DQL Queries |
Share Documentum Knowledge – Robin <Loved it!
Just a short thank-you note for a putting together a fine product and an amazing group of people. My co-author and I just had a paper published in the Journal of Political Economy.
https://nuancedragon.blogspot.com/2020/08/nuance-dragon-supports-number-1-971-512.html
I blog frequently and I seriously thank you for your content.
The article has really peaked my interest. I am going to book mark your
website and keep checking for new details about once a week.
I opted in for your RSS feed as well.
What’s up, of course this piece of writing is really good and I have learned lot of things from
it on the topic of blogging. thanks.