Workaround for incorrect date returned in Additional Fields

When posting a date to an Additional Field in the web service the date returned in the response is incorrect, even though the date set in CM is correct. The problem is caused by a bug in handling time zone offsets. The scenarios in this post assume that:

  • all actors (web service, client, WGS) are using the same time-zone settings, and
  • dates are always sent as UTC (not local) dates.
Read More

Update to site

As of Monday 15th July 2019 I have moved the hosting for this web site from Squarespace to Github pages. The main motivation for this was to consolidate with our samples repo. The only annoyances I expect for readers of this blog are:

  1. links to individual posts have changed, all posts can be found in the index
  2. the RSS feed link as changed, select the RSS link at the bottom of the page to subscribe to this blog.
Read More

Query CM from Excel

One of the outputs from my recent experimentation with PowerBI and Power Query is this saved search connector. I do not spend much time in Excel myself but I know that it is popular out there in the real world. If you would like to see something more/different contact me on the forum or through the usual channels.

Read More


Spending most of my days alone in an office I love the occasions when I get to meet some of the people who use CM. One of the most enjoyable experiences is hearing directly from people who need a particular fix/feature and then being able to go back to my office and make that happen.

I, along with various other CM developers, will be at Realize this year, I will not venture beyond Melbourne but members from the dev team will be at all the Realize events.

Come along, tell us your stories and shine a light into the long lonely months in the office.

Read More

Deleting files left behind by the Office Integration

The scenario:

  1. open Excel

  2. create a worksheet

  3. check the worksheet into CM using the Office Integration

  4. close Excel

  5. a temp file is left behind in Documents\Micro Focus CM

  6. the file is deleted the next time you open Excel (or another Office application).

The problem

The scenario described above occurs because Excel retains a handle on the file until it has completed closing, at which point the Office Integration has been unloaded and is unable to delete the file. Other Office applications (e.g. Word) release the file before they close allowing the Office Integration to delete the temp file.

A Workaround

While a future version of CM may contain a solution for this problem a work-around available today is to run a powershell script from the windows task scheduler to delete left over files.

The Script

The script below finds all files scheduled for deletion in the managed docs XML file, deletes them and removes the entry from the XML file.

$filePath = $env:APPDATA + "\Micro Focus\Content Manager\OfficeIntegration\managedDocs"

Read More

Dashboards and business intelligence

Last week I took some time out of my schedule to experiment with Power BI. While Power BI can access many data sources, including a JSON/REST web service such as the ServiceAPI, it is simplest to access data sources for which a connector exists. This led me to experiment with Power Query custom connectors.

The connector I show in the video below is not production ready but is far enough along to demonstrate its viability. Before proceeding I would like some feedback from anyone who might use this to answer questions like:

  • Is Power BI of interest?

  • What data would you want to extract from CM in Power BI?

  • What sort of Dashboards / Reports would you produce?

One nice thing about a custom connector is that it could quite easily be backwards compatible, so would work with existing CM implementations.

If you have any interest in this space and want to see this experiment go further send me a private message at the CM Forum.

Hello, World!

Read More

Parameterised Saved Searches

There are a few features in CM that you might not notice unless they are pointed out, one is parameterised saved searches. These can be used to provide users with pre-defined but customisable searches.

Read More

Deleting in the ServiceAPI

Strangely enough there are multiple paths via which you might choose to delete a Record in the ServiceAPI. When looking back on how this choice was made I tend to agree with Elizabeth Bennett that a good memory is unpardonable, but, is it a problem that there are multiple ways to delete a Record?

Delete via Record post

The first method is to use a service action, that is to post JSON similar to that below to the Record endpoint. Not only does this attempt to delete the Record but also allows you to make updates to properties (and save) the Record prior to delete being called.

    "Uri": 9000000544,
    "DeleteRecord": {
        "DeleteRecordDeleteContents": false

Delete via delete service

The other way to delete is simply to post to the delete service using a URL like this:


And the winner is…

Avoid the first option and use the second option. Why? The first option, in addition to deleting the Record, does all of the processing required when updating properties and fields. This is unnecessary when you are deleting and is likely to cause errors. The second option avoids all the unnecessary pipeline and simply deletes the Record making it much more robust.

Read More

Post a Record with HttpClient

If you are not using the full .Net framework, maybe you have a .Net standard library in a Xamarin application, then you will not have access to In place of this use System.Net.Http.HttpClient. This new sample is a very simple console app demonstrating how to post a JSON request.

Read More

Map Browser (experimental)

It was fun to take a few days recently (along with some colleagues) to do some experimental work on browsing Records on a map. The app below is strictly experimental, if you have any interest in this sort of thing lodge an enhancement request and tell me what your support request number is so that I can follow it up.

Read More

Loading the .Net SDK

If you relied on us loading HP.HPTRIM.SDK.dll into the GAC you may have noticed that the 93 installer no longer does this, which has eliminated a number of messy deployment issues for us. For more information see the Microsoft guidelines re GAC installation.

The good news

A key benefit of GAC installation was the ability to write version agnostic SDK applications, the good news is that you can still do this. All you need to do is intercept the assembly loading pipeline and you can specify that HP.HPTRIM.SDK.dll gets loaded from the location specified in the registry.

Read More

DataPort Custom Formatter

By default DataPort imports a tab delimited file. What is less well known is that you can write your own formatter to import an arbitrary file format. In this sample I import a very simple XML file. Even though the XML file itself is simple it is a little more complex to import than a tab delimited file due to the fact that it does not follow the essentially columnar layout of a tab delinted file.

We also have the code for our standard tab delimited formatter in the GitHub repo.

BTW, you may hear in the background the happy sounds of my 2 year old son playing in the backyard, enjoy!

Read More

Microsoft Office Web Add-ons

Recently I posted re some research we have done into Google Docs and Gmail integration. This post shows the result of similar research into building add-ons for Microsoft Office Online.

Online versions of Office applications are different to the native versions in some not so subtle ways, for example in Office Online your document is saved very frequently, also collaborative editing is encouraged, this impacts the design of a Content Manager add-on.

Currently we have a our SharePoint integration and the Web Client Office Online integration, so any potential Office Web add-on needs to be designed to solve a meaningful business problem. It is even conceivable that Email Link might provide a sufficient server side solution.

If you have an interest in Office add-ons get in touch via the usual channels.

Read More