Nicknames in Content Server née Livelink

Very useful but no one really uses them effectively. As is customary in OpenText terse documentation one sees this when perusing Nicknames

Quickstart Help
Assigning Nicknames to Items
A Nickname is a word or phrase assigned to all Content Server items. If you do not specify a Nickname for an item, the item’s Object ID is automatically assigned as the Nickname. When you choose to specify a Nickname for any item, you can choose one of three Nicknames provided by Content Server, or you can choose your own alphanumeric word or phrase.
OT HELP

OK So I have a Folder in Livelink .I create that as in Administrator Documentation in a Development instance.I give it a good name as in “AdministratorDocumentation” and then it can be put in portals as <LivelinkURL>/Open/AdministratorDocumentation. This is amazing this was before bit ly services like URL rewriting came about .Extremely useful so all one needs to do is transport that freely into your next and next and you will have a decent URL that holds .Everyone does it I think .I try to use its ability whenever possible.

Present day predicament-My colleagues want to use Web Reports as that is the quickest wins in any project where you get customer Wows. So I have this question. If my URL in DEV is http://myserver?func=ll&objid=20099999&RunReport how do we put this in a Portal so that they have easy to use URL’s. So I sprang into action. Gave the WR a nicknames how does one pass parameters no dice. No OT help.No advanced WR help nothing in OT’s cantankerous new website where one types anything and you get pages and pages of results that do you no good 🙂

Anyways fired up Builder ,the present day seeside(CSIDE) and in about 10 minutes or so came up with this. Nickname ospace has tons of logic to convert to smartui so my tests and my customer is happy on a classic offering 🙂 just figure this one out I didn’t know this until I debugged using WR with parameters with a nickname sharing for the community. To outlive the parameter naming problems what I do is if my LR has 3 parameters ,I go to the blue parameter extractor in the WR screen and run it this actually works for me well.

 <URL UPTO THE CGI SCRIPT>/cs.exe/Open/WKSPACTION?inputlabel1=0&inputlabel2=APPU
Advertisement

Take Some REST

Open Text Programming has gone modern now we have REST in abundance. developer.opentext.com is a self registering site and most of Content Server a.k.a Livelink is hidden very carefully under a heading. Unless you are an advanced programmer who knows how to create dummy responses to REST API Requests most of us will require a working livelink system without which the free site only serves as reference documentation. I wish the POST of the website actually worked on the other side with some carefully crafted mechanisms. In contrast look at the OTDS offering. It gives you access to do it live in one’s OTDS using curl.

The OT Developer Site

Shortcomings perhaps OT can easily fix!

Most of the time developers who know languages and have a general idea about modern technologies get frustrated very easily as they expect modern methods like Google ,Bing, Github etc. to get easy to understand examples and re-purpose. The problem with the OT REST API is it does not level set expectations at all. To draw an example consider when OT moved form a mature LAPI to the CWS Programming .There were Programming examples that included setup of one’s environment in Java or .NET, there were 3 or 4 most common tasks across Livelink a.k.a Content Server .Fast Forward to REST about 6 years earlier than before OT programmers showed use of POSTMAN and common tasks. Just like one day communities vanished OT retired the entire code snippets an voila a brand new website as above beautiful to look at but hardly useful. I cannot fully understand Swagger documentation maybe since I haven’t spend any time learning it. It is akin to looking at JavaDocs doesn’t/wouldn’t ring a bell to the “Accidental Programmers”.

Advise

SmartUI

Use of the SmartUI is the best debugger. The REST API is what the SmartUI is written in so if you know debugging with Fiddler or Network tools that is the simplest way one can progress in a timely manner. In many questions posed here when I get time all I do is look at in SmartUI and tell the forum how to do it.

POSTMAN

One cannot stress the usefulness of this tool for e.g. one can do what is OT Swagger saying with this and straightaway extrapolate the code .If modern programmers do not know this what a REST API does is send a payload(including headers) to a website(Livelink is a web application) so using HTTP one can even use TELNET to talk to the server 🙂

Implementation Notes of REST API as written in developer.opentext.com

Is it correct Yes absolutely would a novice programmer understand it ?questionable. Does everyone understand what a Header is as the entire REST is basically authenticated in other languages(software packages) by a API Token.

Creating a Node a Document

Some one in OT just took code in a Postman snippet and sanitized it ,does it tell you how to add a File ? This was not the case some time back .It had good instructions on how to do the Rest queries using POSTman.

Recent Postings that I contributed

These are links in my Personal Workspace in OT KB so you need a active license to see it.

If anyone likes to see them in Google Docs comment I can make that happen

WF REST API EXPERIMENTS.docx” This code shows how to get attachments in a Initiated workflow. There are almost no official examples except a discussion thread that serves as a community collaborated example.

JAVA REST API EXPERIMENTS .docx” This is code which I show that does not use any REST Clients but rely on POJO. Actually shows attaching a document through multipart-formdata.

Useful Hidden URL’s

OT hides many useful URL’s without providing much documentation an effort to codify what is available there

CommandUsageComments
admin.testargshttp://localhost/OTCS/llisapi.dll?func=admin.testargs&helpSA function that can tell you who the user is particularly helpful in debugging authentication.Also can be used to find memory leaks.REMOTE_USER will show up if the webserver has IWA enabled.
admin.threadstatushttp://localhost/OTCS/llisapi.dll?func=admin.threadstatuscan find the status of each running thread also a good way to know if a big web report is running or dead in its tracks 🙂
func=Admin.RebuildAncestors builds both DTreeAncestors and DBrowseAncestors tables
func=Admin.RebuildAncestors&target=DTAbuilds DTreeAncestors only
func=Admin.RebuildAncestors&target=DBAbuilds DBrowseAncestors only
func=attributes.dumpshows a table wise listing of category data structures.Many people do not know that CATS are a Data Structure in a filing system.I added one or two lines in that code to actually print out more info.Many organizations will use this utility to create tables that can be queried by integrators. Suggested by John Simon
Columns Customization Command Configure Container Options-somewhere hidden in there is a Customization if the check box for Enable browse list column customization is not present you are stuck?func=admin.navigationconfigOT is on a spree to hide anything that people knew ,they remove working links old posts and what not I keep forgetting administration URL’s




SOAPUI says <ErrorMessage>Cannot determine the workspace template for business object type ‘Item’, business object ID ’11R22.5GT-7:SET1′. (labblah.qellus.com:E:\OTCS16\logs\, thread 1)</ErrorMessage>
In the Configure Business Object if you don’t provide a Workspace Template .GUI will work but SOAP will fail
Default Document Typefunc=doctemplates.configureDocTemplates

Copy This To That

Recently I saw a post in OT Forum that caught my eye https://forums.opentext.com/forums/discussion/comment/935976#Comment_935976 What prompted me to write this is because the OT experts also advised using some other mechanisms (XML WF Extensions and use of WR). Now, normally I like to code as well as any other user in Livelink a.k.a Content Server so why this post is because I remember when OT announced the Item Handler and Item Reference(yes they are different) several years ago I believe when Tammy Jakubowski(now GCI) was the WF Product Manager at OpenText.It was downright confusing but did it work in complicated situation boy it did. So I also asked the same questions why would you need WF Attributes and Form attributes in the workflow because they both do the same thing. But this user kept telling me that Business Workspaces apparently has a WF Step that creates BWS’s and it would only work with WF Attributes and they didn’t want their users to see the WF Interface





I replied with a simple OOB implementation where I used a simple throwaway hardcoded documents inside my WF Attachments map and using two Item Handlers Copied what a user entered in a Form Value to a Category to the throwaway Object and using a second step copied that Category Values onto a WF Attribute.

I later explained to the user in a series of simple screencaps how one would do this as that user needed hand-holding and I find the OT Online Documentation horrendously confusing 🙂 https://knowledge.opentext.com/knowledge/cs.dll?func=ll&objId=77363139&objAction=browse

Quickly make a LL System without all the document data

Today I wanted to learn the new Distributed Agent framework in Oscript. To do that I quickly rigged up a VM and had a  oracle export done and imported so it looked like something  with some structure.I looked at the EFS attached it was our DEV machines and it had gigs and gigs worth of data.How do I get categories form this system without copying all that trash so I wrote a query to find all files in the category

.2016-12-06_13-40-50

Notice if I could get just those files needed into my VM it would work so after I put them in Excel and derived a formula I put them in Notepad++.The xCopy with the * creates the hierarchy so that I could copy the small category version files all in all about 1.76 MB very easily.

2016-12-06_13-44-46

so it created the necessary structure (So I don’t have to mess with the table entries)

2016-12-06_13-49-21

after I put them under my new VM’s  file path I can see my categories fine

2016-12-06_13-50-53

I am pretty sure I can do this for WF maps,form templates and such like but have to learn DA

To Undelete or Not

Many times Administrators and users do things stupidly and want to cover their tracks quickly and without creating unwanted attention.Most people working with livelink know that the application is responsible for the data integrity and referential integrity.So to do any proper reversal you would need to script something back.But again here you are at a disadvantage.If you resort to standard OT support the maximum you are going to get is “you have an error that is not easily fixable and we would recommend you to fix it with our professional services team”.To a org or a small company they do not have that many resources or money to do that,hence the administrator or  a power user turned developer would try to see if something can be done.Lo and behold the KB is consulted and most members who would like to show off will post in their comments.Now that goes for me also because there isn’t a day that goes by when I cannot respond to something.However I am very judicious when I tamper with the livelink database.That is really because I understand oscript and I see the many myriad transactions that happen when it is working,doing upgrades and such.But in many organizations people are well versed in Live Reports and many now have the Web Reports product which is an excellent alternative to certain kinds of programming or utility programs .This is where the start of the problems happen.Say you accepted a bad advice like fixing a column or data point in a table that the “learned KB people” advised,you would not probably notice this way into months or years at part of a upgrade so what you did in earnest will land you in irrecoverable or costly difficulties.So RESIST the urge to change values in OT given tables.If it is your table and you are responsible for it do so by all means.There is no problem with you playing in a VM and understanding it but just don’t think that touching llattrblobdata or llattrdata is all it requires to do category updates 🙂

That doesn’t absolve OT as a company,it is expected to do its fair share.Somethings might be

  1. Perhaps with support paid the customer gets 10 free incident fixes. OT absorbs the development  cost and passes the solution to a would be  admin/dev in the organization.
  2. A list of compiled easy to use reports and utilities,perhaps web reports, perhaps a compiled java app that uses REST or WSAPI or even a utility oscript module.
  3. Some re-assurance from support to quell the panic and perhaps advise the customer to do another thing like tell them a deleted user/users necessarily need not be considered a panic situation.

 

I had a short stint working with Documentum and I did not know if the utilities it delivered were high priced like what OT does but it had a language called DQL (Documentum Query Language).So any guys who is knowledgeable on the schema could run reports and turn them into DQL commands which would basically honor data integrity and referential integrity for them.This is in a way WR does but it takes enormous patience and complexity to work with it which again would mean should I have developers supporting my application.I would advise WR people in OT to provide clear crisp examples 1 to 5 liners that should work with any livelink any schema,kind of a pre built library more like the canned Live Reports

 

I tested a user deletion today and tried to see what all tables would be affected so for KB users if you want to see it is here.hopefully I will find a cheap hosting provider to put my content and not in KB as I have been burned in my earlier attempts.

“Why it may not be a good idea to update livelink tables.docx” can be accessed via the following link: https://knowledge.opentext.com/knowledge/cs.dll/Properties/61862916

 

 

 

Demise of communities.opentext.com

RIP communities.opentext.com

Years of developer activity retired…. Just like that

How would a developer who does not have access to KB find anything informative?

Is that intentional?

Why wouldn’t  OT give out a fair warning to migrate content for content owners?

Much of code I kept for public consumption was here

So if anybody is looking for that write me I will try to find from local copies

 

 

General Help Series 7 -Upgrading a Livelink System The 10.5 Part

Start with my first article in this series

BTW this is kind of a cookery show kind where they put the main course in the oven and take another finished one .I did not accomplish any of this in one day it took a lot of homework and trial runs.I read the case studies by the great Rob Coutts many times over.

For sanity we decided to use a new box for CS10.5

  1. Created a CS10.5 system added all the modules that we needed and connected to a dummy database and dummy EFS. Just for kicks we added some that did not exist in 971 like classifications and recman(forward thinking).Rudimentary checks to ascertain base functionality.Note all hot fixes ,patches relevant were also put.
  2. Cloned this server to 3 others for Front Ends and Agents.Just architectural things as after the LL installer creates the services just copy the OTHOME over ,give it distinct names etc.Sometimes if your copies are done with IIS and or any of livelink services running sometime corrupt dll copies end up so make sure you follow proper protocol.In most cases you do not need to run the optional modules installer on your 2nd to n CS servers.Most livelink needed dll’s oscript code will try to push it to windows systems folders on startup every time.
  3. Saved this and copied it as backups.
  4. It is worth verifying the DB type requirements for 10.5 for e,g your 971 DB might have been 11.2.0,2 but Cs10.5 need 11.2.0.4.these are database chores that your DBA should know. Always give lots of oracle memory like SGA etc .OT has a tech article on how it is to be done.
  5. Connected the binary to the prepped up 971 database.one of the first screens was the 971 box for Admin server,changed it to the new box .
  6. Wanted re-starts it is a good sign.One thing I do is since I know the DB Upgrade is done by a single thread I made the threads 8 on it.If you have lots of threads they indirectly add to the Oracle load.I also do my upgrades with debug=2 and wantlogs=true.It is almost impossible to live without BareTail or a good ASCII Editor.
  7. The other threads on it will just produce a warning message that the “upgrade is in progress”.
  8. Once the upgrade starts you should see the thread<nn>.out file issue oscript commands and its corresponding connect<nn>.out doing DB work.Your heart will rejoice if you have them on baretail 🙂 In my case a core upgrade will move my 971 schema(6.0.8) to CS10.5 (6.2.58).If it does that it is a successful upgrade. Times will vary depending on data and content and horsepower of your DB.Do not try to run arithmetic on the numbers does not mean continuous although looking at the db upgrade log one can see the steps.The places it breaks clues OT and even if you know Oscript you can chase a lot f them.In my case it was let’s say a very smooth upgrade.
  9. Since we had optional modules after the core upgrade all optional module schemas were introduced or upgraded.You should see it in bold letters in the pre upgrade page. “Your Content Server schema will Upgrade from <nn> to <nn>”.Classifications module will be introduced,Recman would be introduced(New things), ADN will upgrade from <nn> to <nn> .BTW I had to downgrade A D N to a lower one because the latest and greatest won’t cleanly co operate with the upgrade.You will not notice the difficulty if your database is new.
  10. The reason why OT says to upgrade OPT modules after core upgrade is it is easier for them to pinpoint the failure.
  11. The way livelink code works every time you re-start is it will read Opentext.ini and one of the first modules that loads is the DBWIZAPI .It will first try to ascertain whether core schema is what the binary says its is otherwise it will force a DB Upgrade.Before releasing the software to listen to request on 2099(suggested default),it will enumerate the module section ini to the schema section INI. So if one box had a schema aware module such as form and its INI said 2.0.4 and this box’s form module said 2.0.3 it will trigger the familiar error “You have blah blah in database but blah blah module is lower/higher”.That is the whole reason why experienced people and nowadays OT says get one server(Anchor) done correctly and clone that on other boxes.So whether you install opt modules after or before livelink code always checks this every time you re-start.
  12. The Admin Service left running on any box is no problem.It contains java code to talk to the search server.Also memcached is dependent on Admin Service.I don’t really know what cluster agent does  but it is OT’s answer to smart patching.Once you resister a Admin server to the database that is when the box can be used for certain things like augmenting search.
  13. We had to create a search as advised by OT so that items would come out indexed faster.I am always amazed at the search code but unfortunately one cannot see it completely as Oscript just talks to the java code.Perhaps if I had time and code was de compilable( I seriously doubt it,I have a feeling java is talking to C++ compiled code internally,how else would it scale so well).To have people always complain about search ….
  14. I installed all our custom modules created clones of this and called it many different roles and we were pleasantly done
  15. The rest was mainly releasing it to customers to test have their suggestions and voila…

General Help Series 6 -Upgrading a Livelink System the 971 Part

Recently I was tasked with  upgrading our systems from its initial version to two times jump so 971 to 10.5.I will chronicle my experiences here. Perhaps provide a structure.I also want to quell some myths about the whole process just to make sure you can do this logically and correctly.

First create a draft plan,in my draft plan I included this.I would need at least one VM that can house or Production 971 Binaries,a clone of the database and a clone of the EFS.If one had been storing items in perhaps Archive Server one should have a playing copy of that also. An OTAS based livelink upgrade can pose its challenges if not done correctly but it is no different than a EFS if you do it wrong you can write test data into your productive store 🙂  This involves talking to other people like DBA’s and Storage folks as a heavily used LL system can have tons and tons of data.You will most likely encounter the after effects of long time use,different administrators and their styles etc.So after a few failed  attempts I understood why OT says a DB5 verification is very important.The Verification basically runs single threaded and will try to pinpoint anomalies in the database.Most likely it will pinpoint content loss such as bulk imports etc without actual version files et al .In my case the database had wrong pointers,duplicate dataid’s (wow),removed KUAf Id’s(somebody had fun with a oracle tool).So after going back and forth between OT and us I just thought like this and created a program(oscript) to check important structures.I list 3,your mileage will vary but essentially I grabbed all categories ,form templates and wf map structures.None of these checks happen in DB5 it just looks for existence.In hilarious cases I uncovered a category data structure mysteriously would turn up as a drawing PDF.One could argue that the users would have noticed, so this was an old category that nobody noticed.You don’t have to do this but each of those anomalies would prevent a upgrade and it is back and forth with OT support so I did it just to get some time advantage.

The second thing was I had to get all the optional modules  and our system is no different from any other system a lot of optional modules some inserting schema some not.

The third thing was our systems were customized with Oscript to provide enhanced user experience  as well as awesome home written modules that takes the tedium of long running things like category upgrades,permission pushes et al a very intelligent add on to the OI module that people can use generically to upload their data like that.So our team sat down and thought of what we could retire and what we should re-code,refactor so many of them were thrown out .Many useful ones we kept.We particularly liked the Distributed Agent framework,ours is very similar to that but if time comes and there is an appetite we would code it for that.

About the re-coding effort here’s the clunker,we were to use CSIDE .Naturally all of my team are hard core Builder aficionados and boy that was a journey.I probably think we were the first org to do something with CSIDE so naturally I gave them a lot of screenshots and dumps and OT dev was very receptive.In extremely tight time constraints we developed parallel modules in 97 1 and 10 and just just sucked them up for our SRC code maintaining thing called TFS. We also learned how to work parallel on oscript but not being a code churning house our code is not that complicated so if I was working on a module somebody else was working on another as well.

So the environment prepared was

  1. 971 VM with the same Oracle client and the same DB type of clone.
  2. I removed Prod EFS and Prod Admin server info from clone.
  3. We decided to rebuild search index as nobody had any clue whether it was good and it was eons before new search technology.
  4. A base install of LL was done and the working 971 binary copy from prod was  put as an overlay.Now many starting out people do not know this technique where you can get a copy of your prod binary replete with patches et al into a playing system.BTW this is what you hear as the “Parallel Upgrade” approach .Its database connection was redefined .In very olden times when there was no differentiation between 32 and 62 bits and VM’s were not popular and cheap, it was possible to use the existing boxes and run the upgrade.This was the “Update an Instance” method.This is largely vestigial at this time and very error prone not to say you would have a real hard time going back to the working version 🙂
  5. All old 971 custom modules were removed so this database had only knowledge of OT software core and optional.
  6. Did my health check I said earlier like look at cats,form templates and wf maps,removed any that would hamper a upgrade.

 

At this point one can take this to a CS10.5 binary and start the upgrade.That is my next article.

 

BTW- I am not a novice when it comes to Upgrades I started using livelink software in 1999 and has worked in version 8.1.5 so I pretty much know the heartbeat of an upgrade and gets pleasure in challenges and how one methodically removes the challenges.Do not try an upgrade if you have not dry run the procedure without fail a couple of times.In most cases the upgrade can be done timely the planning can take weeks,if not months.