Skip to Main Content
Merative Ideas Portal

Shape the future of Merative!

We invite you to shape the future of Merative, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:

Post your ideas

Start by posting ideas and requests to enhance a product or service. Take a look at ideas others have posted and upvote them if they matter to you,

  1. Post an idea

  2. Upvote ideas that matter most to you

  3. Get feedback from the Merative team to refine your idea

Help Merative prioritize your ideas and requests

The Merative team may need your help to refine the ideas so they may ask for more information or feedback. The offering manager team will then decide if they can begin working on your idea. If they can start during the next development cycle, they will put the idea on the priority list. Each team at Merative works on a different schedule, where some ideas can be implemented right away, others may be placed on a different schedule.

Receive notification on the decision

Some ideas can be implemented at Merative, while others may not fit within the development plans for the product. In either case, the team will let you know as soon as possible. In some cases, we may be able to find alternatives for ideas which cannot be implemented in a reasonable time.


Merative External Privacy Statement: https://www.merative.com/privacy

Status Future consideration
Created by Guest
Created on Jul 21, 2016

Extensions required to CMIS Infrastructure in order to integrate with OpenText

This customer support case offers a tweak to our code to get it to play nice with Open Text. Addressing this ticket comes in 2 parts:
1. Ask [Deleted] Fagan if we're even allowed by legal to use the code offered to us here.
2. Assuming we're allowed, test the code with FileNet and AlFresco and deliver it only if it works with these CMS.

Here's the description on the CS ticket....
A Proof-Of-Concept (POC) was implemented on the CPIN project, where it was demonstrated that C�ram-CMIS integrates successfully with the OpenText Content Management System. However, a few extensions were made to the CMIS Infrastructure code in order to successfully integrate with OpenText for document creation, retrieval and modification. This Support Case describes the extensions, so they can be tested and if possible, introuced in a future release of the product.

Submitter Steps to Reproduce:
1) For document creation: The following java class - EJBServer/components/CMISInfrastructure_src/curam/cmis/client/chemistry/doc/impl/CMISDocumentUpload.java
contains a call to the setContentStream() method on the Document Object.

// check out and update with file content
ObjectId pwcObjectId = doc.checkOut();
Document pwc = (Document) this.sessionHolder.session().getObject(pwcObjectId);
pwc.setContentStream(contentStream, true);

Since the content stream does not exist at the time of this method call and since the repository has to create the content stream with this method call, we had to change boolean flag to FALSE in the method call. Additionally, a call to the setContentStream() on the checked out document was causing the OpenText Content Server to throw an 'Internal Server Error' Exception. Debugging the code and analysing the HTTP traffic between C�ram and OpenText (with the help of WireShark) did not reveal any helpful information regarding this Exception. Interestingly, on introducing exception handling on the client side, it was verified that this exception had no impact on successfully filing (creating) the document on the Content Server. Therefore, in the above code snippet, the call to the setContentStream() was refactored and rewritten as -

try {
pwc.setContentStream(contentStream, false);
} catch {CmisRuntimeException ex) {
// Intentionally ignore this exception from OpenText
}
2) For document modification: The following code snipped in the java class -
EJBServer/components/CMISInfrastructure_src/curam/cmis/client/chemistry/doc/impl/CMISDocumentReplace.java had to be refactored in order to successfully update documents on the OpenText Content Server.

List parents = doc.getParents();
List parentsUnderRoot = new ArrayList();
for (Folder folder: parents) {
if (folder.getPath().startsWith(withinFolder)) {
parentsUnderRoot.add(folder);
}
}
// While customers are free to use multi-filing, there is one restriction.
// There must be only one location within the root folder specified.
if (parentsUnderRoot.size() == 0) {
throw new FileNotFoundException(cmisFilename + "|" + withinFolder + "|" + objectID);
} else if (parentsUnderRoot.size() > 1) {
throw new CMISMultiFilingException(cmisFilename, withinFolder, objectID);
}
StringBuffer filepath = new StringBuffer(parentsUnderRoot.get(0).getPath());
filepath.append('/');
filepath.append(cmisFilename);

In the above code, the method getParents() on the object of type FileableCmisObject incorrectly returns only the root C�ram directory (this is the root directory set as part of the system admin properties) and does not return a list of parent folders that contain the document. As a fix, the code above was replaced with the following code snippet:

// Get the complete path to the document
StringBuffer filepath = new StringBuffer(getDocumentPath(doc.getId()));

/* Where getDocumentPath(documentID) was defined
as a private method in the same class as follows - */
private String getDocumentPath(final String documentId) throws FileNotFoundException {

try {
CmisObject cmisObject = sessionHolder.session().getObject(documentId);
Document object = (Document) cmisObject;
return object.getParents().get(0).getPath() + "/" + object.getName();
} catch(CmisObjectNotFoundException ex) {
AppException e1 = new AppException(..., ex);
e1.setStackTrace(ex.getStackTrace());
e1.setLoggable(true);
throw e1;
}
}

This code returns the complete path to the document on the Content Server starting from the C�ram root directory. This ensured that the document was updated successfully. I have attached a draft of the POC findings which describes the above extensions to the OOTB CMIS Infrastructure code. Please refer to the doc for more detailed explanations of the extensions that had to be made to successfully integrate with OpenText using the CMIS infrastrucure on the CPIN project. Thanks!

Customer Name Ontario - Ministry of Community and Social Services
  • Attach files
  • Guest
    Reply
    |
    Aug 5, 2016

    Hi,

    We acknowledge that this is a valid enhancement request. It will be considered for inclusion in a future release of the product. Thank you for your interest in the Cúram product.

    Thanks,
    Eloise O'Riordan, Cúram SPM Offering Management team