Archive for Documentum

Video Interviews

Video recorded interviews – caveats and benefits

Circa 1998: a tall, well dressed man came for an interview at a systems integrator where I was employed and one of three interviewing candidates for a programmer position.
First impression given was one that would present well to a customer – in this case it wasn’t a customer-facing role.
After settling into the interview, the candidate began answering a trivial non-technical question before his facial muscles contracted,  his head tipped back, he was “somewhere else”.
The seizure lasted long enough for us to unconsciously seek non-verbal cues from our fellow interviewers before the candidate snapped back completing his answer and seemingly oblivious to what had happened.  As the interview progressed both candidate and interviewers relaxed and the session concluded with a written technical test in which he scored 99% and little repetition of the same incident.

We didn’t hire him – it was unanimous but a difficult decision which we three gave more consideration to than all other candidates. My own score in that technical test was 84%. The previous best was 86%, in our hearts we wanted to give him a chance but felt he was just too intelligent and soon tire of the “trivia” lined up for this programming role. While not suitable for a real-time “air traffic controller” type role, the question-mark hanging over our heads prior to the face-to-face was why someone (who would be a good candidate for a NASA-grade programme) would want to work as a programmer doing (what would likely be to him) such trivial stuff.
We concluded another company requiring his level of skill would snap him up – they would also be smart enough to see past a speech impediment but we later learned from the agency that he’d really struggled for months and months to get employed and urged us to reconsider. While it may be appeasing personally and fill an emotional need to be a good person, as an older, wiser person I reflect on our final decision because this candidate was actually an opportunity to help develop our business: He may not be hired as an “air traffic controller” but the sort of person you would want writing the code in the flight management system of a new aircraft you were boarding on a stormy day.

Anyway, because of this:

http://www.nypost.com/p/news/business/jobs/new_screen_tests_uJ431dRpMGhsZO95yx2usJ

I ended up in a long dialogue with a specialist recruiter and did this:

In the New York Times article,  a Hire-Intelligence HR manager, Ryder Cullison, is cited as stating “Video interviews will be the norm in three years.”
I think so too! But I would hope employers tread equally as carefully in their decision making using this form of media as it could rule out some good candidates.

My belief is video interviews should not be relied on entirely. Telephone interviews are the same but we have to work with what is achievable.
The perspective I put on my own YouTube in this post is detailed below – and highlight what I see as details coming under two headings – “value” and “lack of value”.
It should also be obvious that no candidate or interviewer is perfect. Of course some are better than others but putting the most effort into something should yield a better result. The video interview could be an extra step towards a possible hire or seal the fate of a good candidate.

Value

  • Presentation of a candidate in a formal situation is revealed both audibly and visually. Presentation may be relevant in certain roles – such as pre-sales customer facing.
  • A live video interview is of great value if recorded for detailed review later. 60% of communication is non-verbal. If those reviewing are “tuned in” and the candidate is one of the 95% of us unable to prevent revealing truthfulness through body language, a review will help determine if the candidate is out of their comfort zone on the topic in question.
  • To physically attend an interview takes a great deal of preparation and has cost associated with expensive travel and time out of the current role. Someone has to pick that bill up. A Skype interview costs nothing and an effective way of lending itself to a “yay or nay” to take it to the next level.
  • An opportunity for other key decision-makers to provide their input based on questions presented for them at a live interview which they could not attend.
    Orchestrating an interview which has to involve a project manager, technical architect and 2 people from different continent is costly to a business. Some are going to phone-in anyway – if they can actually make it – as per what was the plan.
  • Pre-recorded “generic” interviews can be edited to remove a lot of waffle. I don’t generally waffle but you can see the interview of me was edited to get to key points. It’s because it needed to be kept short – anyone viewing it the capacity to hire is probably very busy.
    Although I knew what questions were going to be asked two weeks ahead of time, I didn’t rehearse the answers and didn’t include all the information that I would have liked (some I wanted to keep was removed) and could have done a better job of some of the answers. Nothing was asked of me that would put me out of my comfort zone so it doesn’t give the viewer the opportunity to see how I operate under pressure.

Lack of value

  • Presentation is revealed – this can also be a negative if,  in the unconscious mind of the interviewer, they don’t like what they see its going to be hard to get past this stage. A candidate that would otherwise be successful at a telephone interview may actually have the chance to work on their relationship – but it’s a bit more complicated than that in reality.
  • Stock questions and answers: Years and years of being asked the same questions is a chance to rehearse answers. You are not telling the potential hirer stuff they don’t want to hear – hopefully. In this particular interview, nothing was asked of me that would put me out of my comfort zone so it doesn’t give the viewer the opportunity to see how I operate under pressure.
  • It could make a candidate overly nervous. It seems not many want to be scrutinised in this way – post interview – and know there is a recording of them in some company archives – especially if they make a hash job of the interview.
  • Some just can’t face a camera but are otherwise excellent hires – that’s the way it is! In fact, I didn’t feel comfortable at all uploading the video to YouTube and circulated it to a few close friends before writing this. Being camera-shy could realistically cause a company to reject a candidate – missing on an opportunity for both.

Conclusion

My position on the “interview thing” has always been the same, if an interviewer has a requirement and properly read my CV then there is not going to be an issue because my “resume” is an accurate document. I don’t know how unique I am in this but on several occasions I’ve asked “to leave the door open but wish to terminate the interview” mid-execution.
In the last 2 years I was telephone-interviewed and a parameter revealed causing me decide there and then I wanted to pursue another opportunity. The guy interviewing thanked me saying,  “I really admire your cander”. Perhaps I will work for that company again in the future. I hope so.

I worked with a business professional who had Cerebral Palsy – of course you couldn’t tell that from his well-written emails any more than determine his skin colour. He is an amazing, well-liked and talented individual who is also well-read and an interesting person doing a great job for his employer. But (for me) the jury is out on whether a trend in video interviews gives those with a physically impairing condition ‘disadvantage’ I hope those on a selection board are themselves selected to make viable choices and realise the potential in any potential hire without seeing blockers which aren’t really there.

I have also worked in teams where one may present themselves (how do I say this? erm..) their eccentricity may not be what is accepted as a social norm. To me, these people are not having something to hide, have great minds  and ones I have ended up “taking notes” to “better myself”.
I don’t believe any form of interview is the cure-all for getting a good hire and believe both live and recorded video interviews are useful but come with baggage and fear prejudice could rule out some good hires. Some of the faults are not the candidates: nowhere on my CV does it state that I have experience of developing complex workflows in Documentum xCP 2 but I still get asked.

Leave a Comment

Documentum 7 install notes.

Documentum 7, Oracle Linux, 32 bit Oracle Client, 64 bit database

Just a note about my notes.

I dont have the need (a.t.m) for Documentum 7. Nor do I have the desire to prep myself by RTFM’s.  If I read the manuals (and followed them) things would install properly more often (but not always).
I make a living out of fixing other folks stuff and dabbling is a great way for me to learn. So this is me mucking about in 64bit Centos and Oracle Linux (amounts to almost same thing really) 64bit 11r2 server and 32 bit client.

Oracle VirtualBox Guest Additions

yum install kernel-uek-devel-2.6.39-300.17.3.el6uek.x86_64
yum update kernel*
yum install -y gcc kernel-devel
yum install kernel sources
reboot

X Windows Apps (xclock etc.)

yum install -y xorg-x11-apps

 

Additional packages

yum install libstdc++.i386
yum install libstdc++.i686
yum install unixODBC
yum install unixODBC-devel
yum install libaio
yum install oracle-rdbms-server-11gR2-preinstall

Note the preinstall will only be found if /etc/yum.repo.d/ contains correct public-yum-ol6.repo and parts are enabled accordingly.

cd /etc/yum.repos.d/

wget http://public-yum.oracle.com/public-yum-ol6.repo
Then yum install oracle-rdbms-server-11gR2-preinstall

Post install of oracle pfile requirement

SQL> create PFILE = ‘my_init.ora’ from SPFILE = ‘spfileorcl.ora’;

File created.

SQL> startup

Auto startup of oracle can be achieved by following instructions here:

http://www.oracle-base.com/articles/linux/automating-database-startup-and-shutdown-on-linux.php

This works for 11.2

Oracle 32bit client

New user (in my case dmadmin) to install oracle client 32 bit on 64bit machine throws error:

java.lang.UnsatisfiedLinkError: /tmp/OraInstall2012-12-30_04-42-17PM/jdk/jre/lib/i386/xawt/libmawt.so: libXext.so.6: cannot open shared object file: No such file or directory

unless yum install libXext.so.6

Oracle installer reports dependency required: yum install glibc-devel.i686

OraInventory must be writable.

sqlplus wont run without yum install libaio.i686 and ORACLE_HOME set correctly

32 bit Oracle client documented to be required,. Running on Oracle Linux x64 with 64bit database.
Seems even in D7 the 32 bit client is required still. What a ball ache.

Installing pre-req

LibX’s are definitely in the D7 documentation.

Documentum GUI installer wont run without

libXp.i686
libXi.i686
libXtst.i686
libstd++.i686

.bash_profile for dmadmin

# User specific environment and startup programs
ORACLE_HOME=/app/client/dmadmin/app/dmadmin/product/11.2.0/client_1
PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/dmadmin1/bin:/app/client/dmadmin/app/dmadmin/product/11.2.0/client_1/bin
PATH=$PATH:$HOME/bin
export ORACLE_HOME
export ORACLE_SID=ORCL
export TNS_ADMIN=$ORACLE_HOME/network/admin
export DOCUMENTUM=/app/documentum/dmadmin
export DOCUMENTUM_SHARED=$DOCUMENTUM/shared
export LC_ALL=C
export DM_HOME=$DOCUMENTUM/product/7.0
export JAVA_HOME=$DOCUMENTUM_SHARED/java/1.6.0_31
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$DM_HOME/bin:$DOCUMENTUM_SHARED/dfc:$JAVA_HOME/jre/lib/i386/server

Software already installed message (Documentum D7)

Hidden file planted in home dir of installation owner called .com.zerog.registry.xml causes this message to appear.

This file is written by InstallAnywhere which is by Zero G Software Inc.

Configure Tomcat

Used Apache Tomcat 7.0.21, under ./conf is web.xml

<init-param>

<snip……..>
<param-name>enablePooling</param-name>
<param-value>false</param-value>
</init-param>

Leave a Comment

Documentum Installation owner as LDAP user – Question of ‘performance’

Due to new corporate policy changes, instruction was received by Security telling this EMC/Documentum Customer to change all Unix-owned installed applications to LDAP-authenticated from local host authentication.

Has anyone ever done this or is running a Documentum system which is owned a user account which authenticates by LDAP? I detailed it here and looking for some feedback on the lines of “we have done this and the outcome was successful/unsuccessful”.

The part of changing the repository installation owner user account is not necessarily the main issue (though the nature of LDAP is that uniqueness of usernames must be provided which means jiggery pokery with all but one of the many separate installs across the domain) – its performance around LDAP which is the unknown.

Not to cause confusion: Documentum users are LDAP-authenticated anyhow – not the issue. Security tells us we must modify the GxP existing Documentum systems to LDAP on our Red Hat servers – this being something I’ve not seen it done before and not aware by dm_buddies have either.

It is implicit from Documentum documentation that domain authentication is supported but Windows does it differently from Unix and the docs don’t distinguish.

Performance I think is the big question – how many hits does the unix dm_check_password have in a day? Hard to measure and case by case but we do know the exercise with an SAP application was rolled back due to the massive number of hits against the LDAP servers saturating them.

My own proposal is untested and follows with three theoretical environments (Prod – dmadminp, Stage dmadmins and Dev, dmadmind):

1. make dmadmin (install owner) an inline user. Saves mucking about with object ownership and getting involved in the docbase.

2. re-own the binaries in each environment with the newly created LDAP user – e.g.  dmadminp, dmadmins, dmadmind

3. create a relevant super user in the docbase called dmadminp, dmadmins or whatever?

But anyway, anyone have any comments they can post me about this?

Thanks in advance.

Kevin

Comments (2)

documentum content storage areas (dm_location) in xml format

In one of the monitoring widgets I’ve written to monitor Documentum regulatory systems, I perform a check against each server in a highly available configuration to determine the NAS is available to that content server host and that paths specified in dm_location_s.file_system_path are valid and accessible. Code is not deployed to validated systems – it’s not allowed – but the tool is able to make an inquiry and retrieve back details from a remote system.  This one-liner Bash script pulls back from the Oracle database the file system paths and, if they are accessible, puts a line in an XML block containing the max disk size, disk used, disk available, and percentage full. You need to log into the content server host and have the db user/pass@schema information.

The One-Liner

Bash Shell Script to output results in XML format (thanks also to Nominal Animal from linuxquestions.org for some input )

<pre>/export/home/dmadmin > echo "<locations>" ;printf 'set feedback off \n set pagesize 0\n set linesize 300\n select file_system_path from dm_location_s;\n' | sqlplus -s user/pass@schema | while read item ; do  [ "${item:0:1}" = "/" ] && df -P -h "$item" | sed -e 1d|head -3 | awk -v ITEM=$item '{print " <location>\n  <name>" ITEM "</name>\n  <max>" $2 "</max>\n  <avail>" $4 "</avail>\n  <used>" $3 "</used>\n  <pc>" $5 "</pc>\n </location>\n"} END { } ' ; done ; echo "</locations>"

Output

<locations>
<location>
<name>/data/nas_store/repo/content_storage_01</name>
<max>350G</max>
<avail>86G</avail>
<used>265G</used>
<pc>76%</pc>
</location>

<location>
<name>/opt/documentum/dba/log</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/dba/config</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/dba</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/dba/auth</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/dba/secure/ldapdb</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/share/temp</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/share/temp/dm_ca_store</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/product/6.7/convert</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/fulltext/dsearch</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/product/6.7/install/external_apps/nls_chartrans</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/dba/dm_check_password</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/dba/dm_check_password</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/dba/dm_assume_user</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/dba/dm_secure_writer</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/opt/documentum/dba/dm_change_password.local</name>
<max>15G</max>
<avail>1.4G</avail>
<used>13G</used>
<pc>91%</pc>
</location>

<location>
<name>/data/nas_store/repo/thumbnail_storage_01</name>
<max>350G</max>
<avail>86G</avail>
<used>265G</used>
<pc>76%</pc>
</location>

<location>
<name>/data/nas_store/repo/streaming_storage_01</name>
<max>350G</max>
<avail>86G</avail>
<used>265G</used>
<pc>76%</pc>
</location>

<location>
<name>/data/nas_store/repo/distributed/uklhrrepovmd4l_repo/repo/content_storage_01</name>
<max>350G</max>
<avail>86G</avail>
<used>265G</used>
<pc>76%</pc>
</location>

<location>
<name>/data/nas_store/repo/replicate_temp_store</name>
<max>350G</max>
<avail>86G</avail>
<used>265G</used>
<pc>76%</pc>
</location>

<location>
<name>/data/nas_store/repo/replica_content_storage_01</name>
<max>350G</max>
<avail>86G</avail>
<used>265G</used>
<pc>76%</pc>
</location>
</locations>

Leave a Comment

Clean up temp agentexec files from Documentum Content Server

If too many files appear in one directory then dm_logPurge will fail.

If you are going on a customer site to do stuff on the clients Documentum system and have a set number of days in which you will need to snapshot their Unix/Linux Documentum system then It should be born in mind that too many temporary files in $DOCUMENTUM/dba/log/<docbaseid>/dmagentexec will add hours++ to your assignment.

From the shell (and could be done before the planned visit by their Unix bod so its good prep)

As user <install owner> (so $DOCUMENTUM is properly set)

find $DOCUMENTUM/dba/log/<docbaseid>/agentexec -mtime +10 -exec rm {} \; &

Will do the trick but use it wisely and test with ls instead of rm. this process could run hours/days but if there are millions of files in there then your snapshot may also take that long + some more.

The & puts it in the background.

Leave a Comment

Documentum Advanced Document Transformation Services – Foreign Character hicups

Applies to Documentum Transformation Services 6.7 (at least)

If you set up the server to have Japanese, Korean, Chinese or other non-English char sets then you may run into a number of problems with Documentum Advanced Document Transformation Services.

Problem 1. – The death of Adlib Process Manager

Adlib Process Manager keeps stopping: This can happen if you set up your system to support non-Unicode programs (as can be determined from Control Panel -> Clock,Language, And Region -> Region and Language -> Administrative Tab) before installing ADTS.

Go into here: \CTS\Adlib\Process Manager and identify the file nlog.properties and ensure it does not contain invalid characters at the beginning of the file. e.g. it should begin:

<nlog xmlns=”http://www.nlog-project.org/schemas/NLog.xsd&#8221; xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”&gt;

And since obviously your region settings indicated that you are interested in multibyte Korean, Chinese, Japanese rendering then check also the value of SUPPORT_EXTENDED_FONT in CTS\config\advancedpdf\advancedpdf.xml. The value should be true or the characters will render into nonsense.

Restart the box if you changed this.

Problem 2. – PostScript doesn’t work

Check Default Printer is indeed the correct Postscript device with the Port being set to C:\DISTASST.PS

If your server has been setup according to the installation guide then it should be possible to create a file in the root of C:\ with this name.

Use MS Word on the ADTS Server to create a document containing some text (include a word that you would not normally find) then print to the default printer. This  should produce a file in
C:\DISTASST.PS with the correct/current timestamp. Just because the C:\DISTASST.PS appears doesnt mean you are out of the woods where ADTS is concerned.
You can open the PS in notepad and search for the word that was in the Office document just created. It should be there.

Delete that file.

If you have a failed attempt to generate a PostScript file the you may find an error message such as:

com.documentum.cts.plugin.common.CTSPluginException: Media Plugins failed in Transcoding the profile document_to_psinvokeSyncMethod error for syncTransformToPostscript in the CTS_log

Go to the location

\CTS\docbases\config\temp_sessions\<session>\<documentid>.pdf

Check the pdf file can be opened by clicking on it.
If the Adobe product (in our case AdbeRdr934_en_US) complains that fonts are not installed then this is likely to be your problem.

Assumption is that the server has Internet access. Allow the fonts to be downloaded and installed.

In the DefaultApp_log you should find the text

The PDF file C:\DISTASST.PS is created !!! (and I don’t know why it says PDF file because its actually a PostScript).

… which is a good sign. If you don’t find this text then likely you wont find a rendition. And just because you can print from MS Office to a PS file that doesn’t mean ADTS is working yet.

In the mean time, you can check if a rendition exists using a DQL such as select * from dmr_content where any parent_id=’<id of the file you tried to render>’

If the rendition has not made it from ADTS back to your repository then check Control Panel -> Devices and Printers and double-click the Default PostScript Printer  – which should be the Adlib Express PS Postscript Print Driver.

If there are items queued then make a note of them before either resume or remove them.
Retry the Controlled Print (if using DCM) or however you send a document for rendering to PS from Documentum.
Again check the log for the text ” PDF file C:\DISTASST.PS is created !!! “

If the text is there check for the rendition.

Final tips on diagnosing systems which stop rendering

Documentum Advanced Document Transformation Services is my least favourite product and generally requires a monkey to sit and nurse it. Part of it’s problem is that it is built using MS Office products rich in security features and so forth.
1. Check Internet access is not suddenly compromised and that Adlib can get to it. It picks up settings in IE so make sure IE can get to the Internet.

2. Make sure your MS Office suite is properly licensed. If you installed a trial because your (dis)organisation couldnt hand you a license key at the install time then expiration of an MS product will cause it to fall over.

3. Documents in your repository which are send for rendering and are failing – well, copy a document direct to the rendering server and try to open it with that. Documents containing Macro’s and other risky stuff are challenged by the built-in security of MS Office. You may need to reconfigure your MS Office products to seamlessly open docs without user challenging.

4. PDF documents that have non-us charactersets may not have all the Adobe fonts installed. Make sure to have handy a test document in pdf format. It might be that Adobe requires to download fonts to make the document open. This is a step that requires the user to permit the dowloading of the fonts. Once installed that will enable Acrobat to function properly.

5. RDP messages “A program running on this computer is trying to display a message” with two buttons, “View the message” and “Ask me later”. The chances are you have logged into your ADTS server as the installation owner and not logged out of the other RDP session as the same installation owner. The trick here is to view the message and let the console be displayed for the other user then press the Start button (in the mini console not the main RDP session) and select “log off”. That kills the other session and the system should not report any more messages like this. Wait a while in the session for the Adlib Express Server to start then disconnect the remote session (rather than log off).

Leave a Comment

Documentum Services starting and stopping (windows one liner does them all)

Sometimes it is necessary to stop and restart parts of a Documentum implemention.  The more Windows boxes you have, the more likely this is and subsequently more tedious.  Normal administration requires an individual login to a Windows server since you generally have to log on to various servers on a case by case basis – unless you use Window Remoting – which I recommend if you want to optimise your time and maintain a system in an available state.

If you have enabled remoting then you can have a single block of PowerShell code remotely go to those servers and do mundane stuff – such as stop and restart processes. Generally that block will wrap the two one-liners below to either stop or start the services on entire your system very effectively. In regulated systems there is no flexibility to make adhoc change so deploying blocks of code have to be recorded and this makes for even more effort. The solution below does not require changes so there is no requirement for IQ’s or SOP’s (except to enable Windows Remoting on a regulated server).

But until remoting is enabled you still have to log in then e.g. open the services panel and stop/start stuff. Once enabled, a short modification of the code below means you can do the whole system as quickly as clicking on an icon.

In the mean time, plan to still go to each server then open a PowerShell window on the server (second button to the right of the Start button), paste in one of the following:

To stop each Documentum Service

foreach ($svc in (Get-WmiObject -Class win32_service)){ foreach($s in 'DmWatchdog-D-xPlore','DmIndexagent','DmIndexagent','DmPrimaryDsearch','CTSMonitor','"Exponent Connector Service"','"Exponent Manager Service"','"Adlib FMR"','"Adlib Process Manager"'){if($s -eq $svc.name){ Stop-Service "$s" -Force;}}}

To start each Documentum Service

foreach ($svc in (Get-WmiObject -Class win32_service)){ foreach($s in 'DmWatchdog-D-xPlore','DmIndexagent','DmIndexagent','DmPrimaryDsearch','CTSMonitor','"Exponent Connector Service"','"Exponent Manager Service"','"Adlib FMR"','"Adlib Process Manager"'){if($s -eq $svc.name){ Start-Service "$s";}}}

You likely can see what the blocks of code are doing and there are opportunities to include unnamed processes in here or change the order.

This can take a lot of pain out of your day.

 

Leave a Comment

Documentum City – A modern approach to Documentum recruitment

Documentum City is becoming a well-known and highly valuable source of information for both Documentum Professionals and consumers of Documentum products. Essentially it is a dynamic website having unique properties lending themselves to project success.

Candidates are able to promote their skills and be found easily by consumers of Documentum products. Documentum City optimises candidate visibility – when they are becoming or currently available for new Documentum-related assignments.
It’s a modern ‘automation’ of the recruitment business.  That’s not to say there is no place for recruiters anymore because some of them are very good and offer a great deal of value to candidates and employers:  In Documentum, the two main leaders procurement are Stealth IT and Documentum City – companies having both a great deal of experience and moral fibre and therefore immense value-add.

But for Project Managers who’ve not identified the best suppliers, it’s obvious they have to deliver success but have little time to gas on the phone with “the overzealous sales people” and plough through hundreds of potentially unsuitable CV’s before locating a suitable gem. They also risk achieving this via a lengthy supply chain when they go to the wrong recruiter.

Documentum City can unite resource and demand effectively via its online and well thought out features. It’s as painless as it gets for users to register and have their information processed. It works in the interest of EMC (making customers deliverables more affordable) and less painful for all those involved in project delivery

The link to the site is here: www.documentumcity.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

QUERTY

Comments (1)

Documentum dm_agent_exec failing to run jobs, problem with api freezing (dfc 6.7)

Jobs failed to run (6.7 on RedHat)

Couldn’t find a support note for this one but found the cause eventually.

Issues in the infrastructure earlier in the week caused the repository to be unable to make connections to the database.
It was determined some time later that jobs were not executing as they should have been. dm_agent_exec was running but not logging. Killing the dm_agent_exec processes resulted in the expect emergence of new processes. These processes were not writing anything to the agentexec.log.

Tried to run dm_agent_exec manually and found it was freezing.

Diagnostic was to turn on the trace on dm_agent_exec manually – as follows:

$dm_agent_exec -docbase_name mydoc_build.mydoc_build -docbase_owner dmadmin1 -sleep_duration 0 -trace_level 10

What could be seen from this was the attempt to connect to the content server using API

Fri Feb 10 12:34:27 2012    input_index     95
Fri Feb 10 12:34:27 2012 [AGENTEXEC 9237] set_trace_header
Fri Feb 10 12:34:27 2012 [AGENTEXEC 9237] add_msg_param: 6.7.0050.0244  Linux
Fri Feb 10 12:34:27 2012 [INFORMATION] [AGENTEXEC 9237] Detected during program initialization: Version: 6.7.0050.0244  Linux
Fri Feb 10 12:34:27 2012 [AGENTEXEC 9237] do_get:  connect,mydoc_build.mydoc_build,dmadmin1,”,,,try_native_first
Fri Feb 10 12:34:28 2012 [AGENTEXEC 9237] do_get:  get,s0,serverconfig,object_name

And this is where it had frozen.

When manually trying from the shell:

Connected to Documentum Server running Release 6.7.0050.0244  Linux.Oracle

Session id is s0

API> get,s0,serverconfig,object_name

HANGS – the same thing.

On further inspection it could be see that a file that was in use by a process had been renamed by the NAS storage device and made hidden.
The file actually belonged to the cache in the $DOCUMENTUM_SHARED/cache folder.

The fix was to identify the process connected to the hidden file, kill the process, clear the cache and restart everything. Interestingly the repository was able to shut down – it uses API for that. The problem seemed only related to API calls around the server_config

On restart immediately dm_agent_exec was functional.

 

 

Leave a Comment

Content Server 6.7 Patch 4 automatic deployer (RedHat/Linux)

Patching anything can be boring. Patching a content server is no exception. Here is a 2-part script which makes life easier. If anyone knows how to upload shell scripts and properly format them in wordpress please let me know. However, PM me if you want the shell scripts mailed to you. If you have improvements please let me know.

This applies to Linux Content Server 6.7 Patch04 and requires a secure shell, access as the installation owner and access to a user with root or root access.

1. Login as the installation owner and copy up the patch04 “gz” file to $DOCUMENTUM
2. Stop Java Method Server and Content server
3. In the shell, execute patch04_step1.sh <REPO>
4. su root (not su -) or ask root user to execute the script run_as_root.sh which is automatically generated
5. exit back or otherwise log back in as installation owner.
6. execute patch04_step2.sh <REPO> <INSTALLOWNER>

Done.

I take no responsibility for anything so run at own risk

patch04_step1.sh


#!/bin/bash
# Patch deployment script version 1.0 for Content Server CS_6.7.0040.0238 Patch 4 - Script part 1
# Kevin Yeandel. Use at own risk. No responsibility taken by me.
# Prerequisits - Steps 1 to 4 of DocumentumContentServer_6.7_P04 have been completed.
if [[ -z $DOCUMENTUM ]] ; then
echo "\$DOCUMENTUM NOT SET" ;
exit 1;
else
echo "\$DOCUMENTUM set - OK";
fi

if [[ -z $DOCUMENTUM_SHARED ]] ; then
echo "\$DOCUMENTUM_SHARED NOT SET" ;
exit 1;
else
echo "\$DOCUMENTUM_SHARED set - OK";
fi

if [[ "$1" == "" ]] ; then
echo "USAGE $0 "
exit 1
fi

REPO=$1

if [[ ! -f "$DOCUMENTUM/dba/dm_start_$REPO" ]] ; then
echo "REPOSITORY $REPO does not seem to exist. Please check repository name"
exit 1
fi

#Define the patch file here (located in $DOCUMENTUM)
INITFILE=""
XML_STORE="N"
FAST="N"
XPLORE="Y"
PATCH=CS_6.7.0040.0238_linux_ora.tar
GUIDE="DocumentumContentServer_6.7_P04.pdf"
SIGNATURE="b7e8940dd6b129f5e0634d43c4bd204e"

# patch 03 was CS_6.7.0030.0232_linux_ora.tar
echo "Press enter to confirm the following 3 items or ctrl+c to abort"
echo "Item 1. FAST is installed:$FAST"
echo "Item 2. XPLORE is installed:$XPLORE"
echo "Item 3. XML_STORE is installed:$XML_STORE"
echo "(Where Y is Yes and N is No)"
read n

I_OWNER=`ls -l install.log | awk '{ print $3 }'`
GROUP=`ls -l install.log | awk '{ print $4 }'`
echo "GROUP is $GROUP"

if [[ $I_OWNER == `whoami` ]] ; then
echo "Patch execution by installation owner"
else
echo "You are not logged in as the installation owner. Quitting"
exit 1
fi

if [[ -f $DOCUMENTUM/$PATCH.gz ]] ; then
echo "file $PATCH exists"
else
echo "$PATCH.gz does not exit"
exit 1
fi

SUM=`md5sum $DOCUMENTUM/$PATCH.gz`

if [[ `md5sum $PATCH.gz | awk '{ print $1 }'` = $SIGNATURE ]] ; then
echo "SIGNATURE OK" ;
else
echo "The SIGNATURE ($SUM) does not match the patch (should be $SIGNATURE). Please validate your downloaded file"
exit 1
fi

#check step 1
INITFILE=`ps -fel | grep \./[j]boss `
if [[ $INITFILE = *$DOCUMENTUM_SHARED* ]] ; then
echo "Step 1 has not been completed. Please refer to $GUIDE. The Java Method Server is running. Please shut it down before running this patch install. Aborting."
exit 1
fi

#check step 2
INITFILE=`ps -fel | grep "\./[d]ocumentum -docbase_name $REPO" | awk {'print $21'} | awk 'NR>0 && NRif [[ $INITFILE = *$REPO* ]] ; then
echo "Step 2 has not been completed. Please refer to $GUIDE. The Repository is running. Please shut it down before running this patch install. Aborting."
exit 1
fi
gunzip $DOCUMENTUM/$PATCH.gz
if [[ -f $DOCUMENTUM/$PATCH ]] ; then
echo "file $PATCH exists"
else
echo "patch tar file, $PATCH does not exit. Please check it gunzip'ed correctly before running this script again."
exit 1
fi

if [[ $XPLORE="Y" ]] ; then
echo "Step 3. Please ensure you have stopped the Index Agent and Index Server. If not do it now. Pressing ENTER confirms your agreement. Otherwise ctrl+c to abort to rerun this script again later."
read x
fi

echo "Step 4. If you have not backed up \$DOCUMENTUM please press ctrl+c to abort to rerun this script later, otherwise press ENTER to continue";
read x

echo "Step 5a. Prerequisit for running script is that the gz patch file has been gunzip'ed. Untarring files"

tar xvf $DOCUMENTUM/$PATCH
echo "Unpacked tar. "
echo "Step 5b. Moving and copying files"
echo "Step 5b. -1. Deployment of dmldap.jar"
mv $DOCUMENTUM/dmldap.jar $DOCUMENTUM_SHARED/jboss4.3.0/server/DctmServer_MethodServer/deploy/ServerApps.ear/APP-INF/lib/dmldap.jar
echo "Step 5b. -2. Deployment of server-impl.jar"
cp $DOCUMENTUM/server-impl.jar $DOCUMENTUM_SHARED/jboss4.3.0/server/DctmServer_MethodServer/deploy/ServerApps.ear/APP-INF/lib/server-impl.jar
echo "Step 5b. -3. Deployment of mthdservlet.jar"
mv $DOCUMENTUM/mthdservlet.jar $DOCUMENTUM_SHARED/jboss4.3.0/server/DctmServer_MethodServer/deploy/ServerApps.ear/DmMethods.war/WEB-INF/lib/mthdservlet.jar

#if xmlstore is configured
if [[ XML_STORE == "Y" ]] ; then
echo "Step 5c - xhiveconnector.jar"
cp $DOCUMENTUM/xhiveconnector.jar $DOCUMENTUM_SHARED/jboss4.3.0/server/DctmServer_MethodServer/deploy/XhiveConnector.ear/XhiveConnector.war/WEB-INF/lib/xhiveconnector.jar
fi

rm $DOCUMENTUM/xhiveconnector.jar

#Step 5(d) FAST is not deployed by this script but the files will be removed.
rm $DOCUMENTUM/adminagent.jar
rm $DOCUMENTUM/server-impl.jar
rm $DOCUMENTUM/libFastQueryPlugin.so
if [[ $XPLORE == "Y" ]] ; then
echo "Step 5e - deploying files for XPLORE - serverapps.ear to two locations"
cp -r $DOCUMENTUM/jboss4.3.0/server/DctmServer_MethodServer/deploy/ServerApps.ear/APP-INF/lib/* $DOCUMENTUM_SHARED/jboss4.3.0/server/DctmServer_MethodServer/deploy/ServerApps.ear/APP-INF/lib
cp -r $DOCUMENTUM/jboss4.3.0/server/DctmServer_MethodServer/deploy/ServerApps.ear/DmMethods.war/WEB-INF/lib/* $DOCUMENTUM_SHARED/jboss4.3.0/server/DctmServer_MethodServer/deploy/ServerApps.ear/DmMethods.war/WEB-INF/lib
fi
echo "Creating a root file for root user to execute which will execute Step 5g"
cat << EOF >$DOCUMENTUM/run_as_root.sh
if [ "\$(id -u)" != "0" ]; then
echo "ERROR - Script should be run as root"
exit 1
fi
cp $DOCUMENTUM/product/6.7/install/external_apps/checkpass/dm_check_password $DOCUMENTUM/dba
cp $DOCUMENTUM/product/6.7/install/external_apps/assumeuser/dm_assume_user $DOCUMENTUM/dba
cp $DOCUMENTUM/product/6.7/install/external_apps/checkpass/dm_check_password $DOCUMENTUM/dba
#note the following commented out file does not exist in the bundle on page 8 of the P03 ReadMe.
#echo "cp $DOCUMENTUM/product/6.7/install/external_apps/changepass/dm_change_password $DOCUMENTUM/dba"
cp $DOCUMENTUM/product/6.7/install/external_apps/assumeuser/dm_assume_user $DOCUMENTUM/dba
$DOCUMENTUM/dba/dm_root_task << xEOF
$GROUP
o
o
o
o
o
xEOF
EOF
chmod +x $DOCUMENTUM/run_as_root.sh
cp $DOCUMENTUM/shared/dfc.jar $DOCUMENTUM_SHARED
echo "Please execute $DOCUMENTUM/run_as_root.sh as a root user before running part 2 of this script."

patch04_step2.sh

#!/bin/bash
# Patch deployment script version 1.0 for Content Server CS_6.7.0030.0232 Patch 3 - Script part 2
if [[ -z $DOCUMENTUM ]] ; then
echo "\$DOCUMENTUM NOT SET" ;
exit 1;
else
echo "\$DOCUMENTUM set";
fi

if [[ -z $DOCUMENTUM_SHARED ]] ; then
echo "\$DOCUMENTUM_SHARED NOT SET" ;
exit 1;
else
echo "\$DOCUMENTUM_SHARED set";
fi

REPO=$1
PASS=$2

if [[ "$1" == "" ]] ; then
echo "USAGE $0  "
exit 1
fi

if [[ "$2" == "" ]] ; then
echo "USAGE $0  "
exit 1
fi

REPO=$1

if [[ ! -f "$DOCUMENTUM/dba/dm_start_$REPO" ]] ; then
echo "REPOSITORY $REPO does not seem to exist. Please check repository name"
exit 1
fi

ROOT_TASK=`ls -l $DOCUMENTUM/dba/dm_check_password | awk '{ print $3 }'`
I_OWNER=`ls -l $DOCUMENTUM/install.log | awk '{ print $3 }'`

echo "root task: $ROOT_TASK"
if [[ $ROOT_TASK == "root" ]] ; then
echo "dm_check_password is owned by root (OK)"
else
echo "Looks like part 1 of this script was executed but root task step has not been executed. Quitting"
exit 1
fi

if [[ $I_OWNER == `whoami` ]] ; then
echo "patch execution by installation owner"
else
echo "You are not logged in as the installation owner. Quitting"
exit 1
fi

echo "Step 8. Starting docbroker (if required)"
$DOCUMENTUM/dba/dm_launch_Docbroker
sleep 5
echo "Step 8a. Starting docbase (if required) and waiting 60 seconds"
$DOCUMENTUM/dba/dm_start_$REPO
sleep 60
echo "Step 8b. Starting java method server (if required)"
nohup $DOCUMENTUM_SHARED/jboss4.3.0/server/startMethodServer.sh &

echo "Please ensure to start the IndexAgent and IndexServer in the case that xPlore or FAST is required. Press ENTER to confirm and continue."
read x
echo "Steps 9 and 10 - install MessagingApp and Workflow dar files. "
echo "Step 9d. Creating a temporary xml file to prepare to install dar files."
cat << EOF >$DOCUMENTUM/build.xml
<!--?xml version="1.0" encoding="UTF-8"?-->
This is the ant script code to install a dar in the docbase




EOF
echo "Step 9e. Launching dar installer"
$JAVA_HOME/bin/java -Dlogpath=/tmp/$REPO\.log -cp $DM_HOME/install/composer/ComposerHeadless/startup.jar org.eclipse.core.launcher.Main -data $DM_HOME/install/composer/workspace -application org.eclipse.ant.core.antRunner -buildfile build.xml
echo "Please check the log in /tmp/$REPO.log"

echo "Step 11. Installing lifecycle.jar"
iapi $REPO -U$I_OWNER -P -e << EOF
retrieve,c,dmc_jar where object_name = 'lifecycle.jar'
checkout,c,l
setfile,c,l,$DOCUMENTUM/lifecycle.jar
checkin,c,l
exit
EOF
status=$?

echo "EVIDENCE confirming jar has been installed follows:"
idql $REPO -U$I_OWNER -P -e << EOF
select r_modify_date, r_creation_date from dmc_jar where object_name='lifecycle.jar';
go
exit
EOF
status=$?
echo $status
echo "Step 6. This is moved to last and is just cleaning up files from the application of the patch."
rm -rf $DOCUMENTUM/jboss4.3.0
rm -rf $DOCUMENTUM/shared
if [[ -f $DOCUMENTUM/lifecycle.jar ]] ; then rm $DOCUMENTUM/lifecycle.jar ; fi
if [[ -f $DOCUMENTUM/MessagingApp.dar ]] ; then rm $DOCUMENTUM/MessagingApp.dar ; fi
if [[ -f $DOCUMENTUM/Workflow.dar ]] ; then rm $DOCUMENTUM/Workflow.dar ; fi
if [[ -f $DOCUMENTUM/mthdservlet.jar ]] ; then rm $DOCUMENTUM/mthdservlet.jar ; fi
if [[ -f $DOCUMENTUM/dmldap.jar ]] ; then rm $DOCUMENTUM/dmldap.jar ; fi
if [[ -f $DOCUMENTUM/build.xml ]] ; then rm $DOCUMENTUM/build.xml ; fi
if [[ -f $DOCUMENTUM/server-impl.jar ]] ; then rm $DOCUMENTUM/server-impl.jar ; fi
if [[ -f $DOCUMENTUM/xhiveconnector.jar ]] ; then rm $DOCUMENTUM/xhiveconnector.jar ; fi
if [[ -f $DOCUMENTUM/adminagent.jar ]] ; then rm $DOCUMENTUM/adminagent.jar ; fi
if [[ -f $DOCUMENTUM/run_as_root.sh ]] ; then rm $DOCUMENTUM/run_as_root.sh ; fi

echo "Please refer to the patch documentation technical notes and any final deployment tasks. This automation is complete."

Leave a Comment

Older Posts »
Follow

Get every new post delivered to your Inbox.