OpenText Content Manager SDK 23.3 and 23.4
Release Notes

Table of Contents

Content Manager 23.3

BREAKING CHANGE - Database.ConnectAs() removed.

Database.ConnectAs() has for quite some time just been an alias for setting Database.TrustedUser. ConnectAs() has now been removed, and any code that relied on it should be setting Database.TrustedUser instead.

BREAKING CHANGE - Extraneous string constructors removed.

Many SDK objects have a string constructor, allowing the user to create an object with a specific name, e.g. new Record(db, "REC_001"). String constructors were previously generated automatically for all object types, even though there are a number of objects they do not make sense for. String constructors have now been removed from the following objects: Communication, ConsignmentApprover, ConsignmentIssue, ConsignmentRejection, History, ScheduledTask and TodoItem.

Content Manager 10.1

BREAKING CHANGE - Record Revision Changes

Prior to Content Manager 10.1 Record Revisions were managed using the child list model similar to that used by RecordRenditions, meaning a Record would have a child list of RecordRevisions. The child list model is designed to provide high speed access to a small list of items. In 10.1 Revisions have been promoted to being a first class object at the same level as other objects such as Records, this allows a Record to have many more revisions than can be contained in a child list. Therefore instead of have to first find the Record and then inspect its ChildRevisions list you are now able to do a search directly for Revisions.

Changes include:

Classes

New method

NOTE GetRevisions is a convenience method, the search clauses are the primary way to find revisions.

Deleted property

  • Record.ChildRevisions

IMPORTANT - Revision count performance

Due to the changes in Record Revisions the property Record.RevisionCount is now an expensive property, requiring an extra SQL request. Where possible avoid this property, Record.RevisionNumber is often a feasible replacement.

Create Record from OneDrive document

It is now possible to store the One Drive details for a document on a Record. This is used by the Content Manager Teams integration to indicate that while the document is stored in Content Manager the primary instance of this document is actually in OneDrive. Creating a Record in this way will prevent users from modifying the document in Content Manager, they should make modifications in OneDrive and rely on the Teams integration to update the document in Content Manager.

New methods

Manage In Place

Properties and methods to support the new manage in place feature.

New method

New properties

New values in enum EstoreTypes:

  • MipIdol
    • MipFS
    • MipOneDrive
    • MipAmazon
  • MipAzure

Provide a fully functional API to manage Record Action Tracking

Prior to Content Manager 10.1 the Record Action tracking was only partially exposed in the SDK.

New classes

New properties

Use CopyRecordOptions to create new parts

The CopyRecordOptions object now has a new constructor allow you to specify what sort of copy this is, New Version, New Redaction, New Part or Copy.

Improve timing of date registered/ date last updated to more closely match real time record creation

In CM 10.1 there is a new property called LatestTransactionDate which is superior to use when sychronising changes within Content Manager with external systems. For this use case, it replaces the property Date Last Updated, It is superior because the date time is allocated by the RDBMS at time of transaction commit (or by the WGS if the RDBMS does not support date time stamping). Date Last Updated is allocated in the business logic layer and is really more of a row stamp to indicate when stale data is being updated. It can lag the actual commit time by a number of seconds when working with complex transactions. In a multiple WGS environment, it is theoretically possible for a record to be updated with a new Date Time Update which may before the latest value of Date Time Updated across the entire set of records.

So, for external synchronizing applications, use the new LatestTransactionDate property when doing incremental updates.

There is a new search method provided called "latestTrans" which works identically to the existing "updated" search method.

The property LatestTransactionDate is available for Record, Location, Schedule and Classification objects. Retrieving this property value will always involve a round trip to the database server as it is not cached anywhere on any clients. This is done to ensure the integrity of the value. This property is also available when using TrimSearchDataStream retrieval class.

If you have an existing synchronizing application, it should be a simple matter to switch from using DateUpdated to LatestTransactionDate.

Support for multiple storage pools for document stores

New class

New property

Provide meta-variables to substitute for an Alert Subscriber

When configuring Alerts in addition to alerting a selected person it is now possible to choose a Record property (.e.g. Assignee, Creator, Editor). The new subscribers objects are added to the Alert.ChildSubscribers property using two new overloads to the AlertSubscribers.NewSubscriber method.

Cannot make a container inactive even though all the contents are inactive

Fixed a problem that prevented the MakeInactive() function from working on Container when all contents where already inactive.

New file type options methods

New File Type user options methods:

  • GetContentIndexStatus
  • SuppressRenderingList
  • BlockedFileTypesList
  • IsFileTypeARendition
  • DisableEstoreCompression
  • IsSuitableForOCR

Option to Automatically send Reminder Notifications for Overdue Actions

Instead of receiving only one email when an action becomes overdue users can receive repeated reminder emails.

New property

Flag selected issues as being suppressable on Consignments

New methods:

Option to exclude records that need external confirmation from a consignment

New consigmnent property ExcludeXDMSRecords.

Location delegates may now approve consignments

To allow Location delegates to approve consignments first enable the system option.

New properties

Introduce a consignment template that can be used for automating the process of creating consignments

To store a bunch of repeatable settings for consignment creation, there is now a new Consignment Template object.

New ability to find Offline Records while Database is disconnected

Offline records are stored in the local hard drive, the new static method OfflineRecord.FindOfflineRecord finds an offline record at the path specified.

Automatic container creation for Check in Styles

Check in Styles now allow for the specification of a Container to be automatically created for records created using this check in style.

New properties:

New methods:

Enhancements to database and workgroup server configuration tools

New class

New methods:

Improvements to ImportHistory

Existing event and history methods

Record.LogEvent Database.LogExternalEvent Record.ImportHistory

Background to changes

In 10.1 there has been a review of how these functions work with the aim of clearing up the confusion about how the events surface in Content Manager and how some of the parameters are handled. The original format of the ImportHistory function was designed to support just the standard Records Management "movement history" event. This event is designated in Content Manager as the "curLocChanged" event and the parameters were designed to suit this event. When more exotic events are being imported the parameters are not as useful. Events in Content Manager are characterized by a number of attributes:

Event Type - an enumeration denoting which actual event happened
Main Object - which object the event happened on
Related Object - an (optional) object that was also related to the event
User - the login location responsible for creating the event.

Changes to event logging and import history

These concepts are now better described by new versions of the functions:

Record.LogEventEx( Events eventType, String eventDetails, Location onBehalfOf, // if null, the current user is assumed String eventDetailsSummary, TrimObject relatedObject); // can be null

Record.ImportHistoryEx( Events eventType, TrimDateTime historyDate, String userLogin, String eventDetails, TrimObject relatedObject, // can be null bool isSecurityViolation); // only used for events that involve owner, home and assignee

As part of the review, some business rules were added to ensure that relationships between the event type, the main object and the related object all make sense. So, it is possible that using these methods may raise an exception if the supplied combination is wrong. Valid combinations at the time of writing are listed below.

In addition, the display of event information in Content Manager was designed around the way Content Manager created events and how it formatted the Event Description string when creating events. This could make some events added by the SDK to not appear properly in the Content Manager user interface. To alleviate these anomalies whilst still presenting a consistent user interface to existing Content Manager users, the following minor adjustments were made to the following display properties:

EventDescription(Caption:Event Description): this formats the eventType, eventDetails and relatedObject into something fairly comprehensive. And SDK supplied value for eventDetails will now appear in this property.

RawEventDescription(Caption:Event Details): this contains the eventDetails string as passed by the SDK call or the eventDetails string generated by Content Manager if the event was created by Content Manager.

RelatedObject(Caption:Related Object): this is a string display of any related object associated with the event. Currently only if the related object can be displayed.

Table of events with main and related object rules. (Auditable indicates the event can be stored in online/offline audit logs).

  • AccessControlChanged:auditable
    • main - activity
    • main - fieldDefinition
    • main - agendaItem
    • main - agendaItemType
    • main - autoPartRule
    • main - classification
    • main - documentQueue
    • main - externalLink
    • main - hold
    • main - location
    • main - lookupItem
    • main - lookupSet
    • main - meeting
    • main - meetingType
    • main - minuteItemType
    • main - origin
    • main - record
    • main - statistics
    • main - recordType
    • main - report
    • main - savedSearch
    • main - schedule
    • main - searchForm
    • main - space
    • main - stzReport
    • main - workflowTemplate
    • main - keyword
    • main - todoItem
    • main - userLabel
    • main - workflow
  • AccessExclusionsChanged:auditable
    • main - classification
    • main - record
    • main - recordType
  • ActionAssigned:auditable
    • main - record, related - recordAction
  • ActionCompleted:auditable
    • main - record, related - recordAction
  • ActionCurrent:auditable
    • main - record, related - recordAction
  • ActionReassigned:auditable
    • main - record, related - recordAction
  • ActionRemoved:auditable
    • main - record
  • ActionUndone:auditable
    • main - record, related - recordAction
  • ActivityAssigned:auditable
    • main - activity , related - location
  • ActivityCompleted:auditable
    • main - activity , related - location
  • ActivityCurrent:auditable
    • main - activity , related - location
  • ActivityEscalated:auditable
    • main - activity , related - location
  • ActivityNeedsAuthorization:auditable
    • main - activity , related - location
  • ActivityReassigned:auditable
    • main - activity , related - location
  • ActivitySkipped:auditable
    • main - activity , related - location
  • ActivitySuspended:auditable
    • main - activity , related - location
  • ActivityUndone:auditable
    • main - activity , related - location
  • AgendaItemApproved:auditable
    • main - agendaItem
  • AgendaItemRescheduled:auditable
    • main - agendaItem
  • AgendaItemTypeRescheduled:auditable
    • main - agendaItem , related - meetingType
  • AgendaNowReady:auditable
    • main - meeting , related - record
  • AuditSettingsChanged:auditable
    • main - database
  • AutoPartCheck:auditable
    • main - record, related - record
  • BasicRecordDisposed:auditable
    • main - record, related - consignment
  • BreachDetected:auditable
    • main - record, related - location
  • BulkLoaderRunComplete:auditable
    • main - originHistory
  • BypassACLAdded:auditable
    • main - location
  • CaveatRemoved:auditable
    • main - classification
    • main - location
    • main - record
    • main - recordType
    • main - securityGuide
    • main - space
  • ClassificationApproved:auditable
    • main - classification
  • ClassificationChanged:auditable
    • main - record
  • CloseDateChanged:auditable
    • main - record
  • ConsignmentAcknowledged:auditable
    • main - consignment
  • ConsignmentApprovalComplete:auditable
    • main - consignment
  • ConsignmentApprovalReset:auditable
    • main - consignment
  • ConsignmentApproved:auditable
    • main - consignment
  • ConsignmentApproverReassigned:auditable
    • main - consignment , related - location
  • ConsignmentDisposed:auditable
    • main - consignment
  • ConsignmentIssueResolved:auditable
    • main - consignment , related - record
  • ConsignmentReadyForApproval:auditable
    • main - consignment
  • ConsignmentReceived:auditable
    • main - consignment
  • ConsignmentRecordExcluded:auditable
    • main - consignment , related - record
  • ConsignmentRecordRejected:auditable
    • main - consignment , related - record
  • ConsignmentRecordRejectionCancelled:auditable
    • main - consignment , related - record
  • ConsignmentRejected:auditable
    • main - consignment
  • ConsignmentSent:auditable
    • main - consignment
  • ContactAdded:auditable
    • main - record, related - location
  • ContactRemoved:auditable
    • main - record, related - location
  • ContainerChanged:auditable
    • main - record, related - record
  • ContentAdded:auditable
    • main - record, related - record
  • ContentIndexAdd:
    • main - originHistory
    • main - record
  • ContentIndexRemove:
    • main - classification
    • main - record
  • ContentRemoved:auditable
    • main - record, related - record
  • CopiedAccessControlChanged:auditable
    • main - classification
    • main - meetingType
    • main - recordType
    • main - workflowTemplate
  • CreateDateChanged:auditable
    • main - record
  • CsDeclassifyChanged:auditable
    • main - record
  • CsDowngradeChanged:auditable
    • main - record
  • CurLocAssigned:auditable
    • main - record, related - location
  • CurLocChanged:auditable
    • main - record, related - location
  • DataCleanup:auditable
    • main - database
  • DataConversionCompleted:auditable
    • main - database
  • DateDestructionChanged:auditable
    • main - record
  • DateInactiveChanged:auditable
    • main - record
  • DateLastActionChanged:auditable
    • main - record
  • DatePublishedChanged:auditable
    • main - record
  • DateRetentionChanged:auditable
    • main - record
  • DirSyncConfigChanged:auditable
    • main - database
  • DispositionChanged:auditable
    • main - record
  • DocAnnotated:auditable
    • main - record
  • DocAttached:auditable
    • main - record
  • DocCheckedOut:auditable
    • main - record
  • DocExportedToXML:auditable
    • main - record
  • DocExtracted:auditable
    • main - record
  • DocLinkExtracted:auditable
    • main - record, related - recLinked* Document
  • DocLinkPrinted:auditable
    • main - record, related - recLinked* Document
  • DocLinkViewed:auditable
    • main - record, related - recLinked* Document
  • DocMailed:auditable
    • main - record
  • DocMailedLink:auditable
    • main - record
  • DocNewVersion:auditable
    • main - record
  • DocNotAnnotated:auditable
    • main - record
  • DocPrinted:auditable
    • main - record
  • DocPublished:auditable
    • main - record
  • DocRedacted:auditable
    • main - record, related - record
  • DocRemoved:auditable
    • main - record
  • DocRenditionAdded:auditable
    • main - record, related - recRendition
  • DocRenditionExtracted:auditable
    • main - record, related - recRendition
  • DocRenditionPrinted:auditable
    • main - record, related - recRendition
  • DocRenditionRemoved:auditable
    • main - record
  • DocRenditionViewed:auditable
    • main - record, related - recRendition
  • DocReplaced:auditable
    • main - record
  • DocRevisionExtracted:auditable
    • main - record, related - revision
  • DocRevisionPrinted:auditable
    • main - record, related - revision
  • DocRevisionRemoved:auditable
    • main - record, related - revision
  • DocRevisionViewed:auditable
    • main - record, related - revision
  • DocumentAuthorizationComplete:auditable
    • main - record
  • DocumentHashAdded:auditable
    • main - record
  • DocumentHashCheckFailed:auditable
    • main - record
  • DocumentHashRecalculated:auditable
    • main - record
  • DocumentHashVerified:auditable
    • main - record
  • DocumentReadyForAuthorization:auditable
    • main - record
  • DocumentReadyForDrafting:auditable
    • main - record
  • DocumentReadyForReview:auditable
    • main - record
  • DocumentReviewCommentsUpdated:auditable
    • main - record
  • DocumentReviewComplete:auditable
    • main - record
  • DocumentScanCompleted:auditable
    • main - request
  • DocumentShared:auditable
    • main - record, related - location
  • DocUndoCheckout:auditable
    • main - record
  • DocusignFailed:auditable
    • main - record
  • DocViewed:auditable
    • main - record
  • DueDateChanged:auditable
    • main - record
  • ElasticMetadataSchemaChanged:auditable
    • main - database
  • EstoreFull:auditable
    • main - electronicStore
  • EstoreNearingCapacity:auditable
    • main - electronicStore
  • ExternalEvent:auditable
    • main - actionDef
    • main - history
    • main - activity
    • main - fieldDefinition
    • main - agendaItem
    • main - agendaItemType
    • main - alert
    • main - archiveEvent
    • main - autoPartRule
    • main - barcodeScanner
    • main - census
    • main - checkinPlace
    • main - checkinStyle
    • main - classification
    • main - communication
    • main - consignment
    • main - consignmentApprover
    • main - consignmentIssue
    • main - consignmentRejection
    • main - consignmentTemplate
    • main - database
    • main - controlBarcode
    • main - documentQueue
    • main - electronicStore
    • main - storePool
    • main - mailTemplate
    • main - externalIcon
    • main - externalLink
    • main - externalWorkflow
    • main - externalWorkflowTask
    • main - externalWorkflowType
    • main - hold
    • main - jurisdiction
    • main - location
    • main - lookupItem
    • main - lookupSet
    • main - meeting
    • main - meetingType
    • main - metadataRule
    • main - minuteItem
    • main - minuteItemType
    • main - stopWord
    • main - offlineRecord
    • main - origin
    • main - originHistory
    • main - zipCode
    • main - record
    • main - recordAction
    • main - statistics
    • main - recordType
    • main - report
    • main - reportBitmap
    • main - request
    • main - revision
    • main - savedSearch
    • main - schedule
    • main - scheduledTask
    • main - searchForm
    • main - securityCaveat
    • main - securityGuide
    • main - securityLevel
    • main - sharePointItem
    • main - space
    • main - stzReport
    • main - workflowTemplate
    • main - keyword
    • main - todoItem
    • main - userLabel
    • main - htmlLayout
    • main - workflow
    • main - workingCopy
  • FileTypesModified:
    • main - database
  • Finalized:auditable
    • main - record
  • FolderShared:auditable
    • main - record
  • GlobalSettingsChanged:auditable
    • main - database
  • HighPriorityRequestAdded:auditable
    • main - request
  • HoldAdded:auditable
    • main - record, related - hold
  • HoldDatesChanged:
    • main - hold
  • HoldRemoved:auditable
    • main - record, related - hold
  • HomeAssigned:auditable
    • main - record, related - location, space
  • HomeChanged:auditable
    • main - record, related - location, space
  • IdolMetadataChanged:
    • main - record
  • IdolMetadata* ContainerSecurityChanged:
    • main - record
  • IdolMetadataSchemaChanged:
    • main - fieldDefinition
  • LabelAdded:auditable
    • main - record
  • LabelRemoved:auditable
    • main - record
  • LocationRelationshipAdded:auditable
    • main - location , related - location
  • LocationRelationshipRemoved:auditable
    • main - location , related - location
  • LoginDeactivated:auditable
    • main - location
  • MadeNotVital:auditable
    • main - record
  • MadeVital:auditable
    • main - record
  • MinutesNowReady:auditable
    • main - meeting , related - record
  • NewArchiveEventOccurrence:auditable
    • main - archiveEvent
  • NewInstantOnUser:auditable
    • main - location
  • ObjectAdded:auditable
    • main - actionDef
    • main - history
    • main - activity
    • main - fieldDefinition
    • main - agendaItem
    • main - agendaItemType
    • main - alert
    • main - archiveEvent
    • main - autoPartRule
    • main - barcodeScanner
    • main - census
    • main - checkinPlace
    • main - checkinStyle
    • main - classification
    • main - communication
    • main - consignment
    • main - consignmentApprover
    • main - consignmentIssue
    • main - consignmentRejection
    • main - consignmentTemplate
    • main - database
    • main - controlBarcode
    • main - documentQueue
    • main - electronicStore
    • main - storePool
    • main - mailTemplate
    • main - externalIcon
    • main - externalLink
    • main - externalWorkflow
    • main - externalWorkflowTask
    • main - externalWorkflowType
    • main - hold
    • main - jurisdiction
    • main - location
    • main - lookupItem
    • main - lookupSet
    • main - meeting
    • main - meetingType
    • main - metadataRule
    • main - minuteItem
    • main - minuteItemType
    • main - stopWord
    • main - offlineRecord
    • main - origin
    • main - originHistory
    • main - zipCode
    • main - record
    • main - recordAction
    • main - statistics
    • main - recordType
    • main - report
    • main - reportBitmap
    • main - request
    • main - revision
    • main - savedSearch
    • main - schedule
    • main - scheduledTask
    • main - searchForm
    • main - securityCaveat
    • main - securityGuide
    • main - securityLevel
    • main - sharePointItem
    • main - space
    • main - stzReport
    • main - workflowTemplate
    • main - keyword
    • main - todoItem
    • main - userLabel
    • main - htmlLayout
    • main - workflow
    • main - workingCopy
  • ObjectModified:auditable
    • main - actionDef
    • main - history
    • main - activity
    • main - fieldDefinition
    • main - agendaItem
    • main - agendaItemType
    • main - alert
    • main - archiveEvent
    • main - autoPartRule
    • main - barcodeScanner
    • main - census
    • main - checkinPlace
    • main - checkinStyle
    • main - classification
    • main - communication
    • main - consignment
    • main - consignmentApprover
    • main - consignmentIssue
    • main - consignmentRejection
    • main - consignmentTemplate
    • main - database
    • main - controlBarcode
    • main - documentQueue
    • main - electronicStore
    • main - storePool
    • main - mailTemplate
    • main - externalIcon
    • main - externalLink
    • main - externalWorkflow
    • main - externalWorkflowTask
    • main - externalWorkflowType
    • main - hold
    • main - jurisdiction
    • main - location
    • main - lookupItem
    • main - lookupSet
    • main - meeting
    • main - meetingType
    • main - metadataRule
    • main - minuteItem
    • main - minuteItemType
    • main - stopWord
    • main - offlineRecord
    • main - origin
    • main - originHistory
    • main - zipCode
    • main - record
    • main - recordAction
    • main - statistics
    • main - recordType
    • main - report
    • main - reportBitmap
    • main - request
    • main - revision
    • main - savedSearch
    • main - schedule
    • main - scheduledTask
    • main - searchForm
    • main - securityCaveat
    • main - securityGuide
    • main - securityLevel
    • main - sharePointItem
    • main - space
    • main - stzReport
    • main - workflowTemplate
    • main - keyword
    • main - todoItem
    • main - userLabel
    • main - htmlLayout
    • main - workflow
    • main - workingCopy
  • ObjectRemoved:auditable
    • main - actionDef
    • main - history
    • main - activity
    • main - fieldDefinition
    • main - agendaItem
    • main - agendaItemType
    • main - alert
    • main - archiveEvent
    • main - autoPartRule
    • main - barcodeScanner
    • main - census
    • main - checkinPlace
    • main - checkinStyle
    • main - classification
    • main - communication
    • main - consignment
    • main - consignmentApprover
    • main - consignmentIssue
    • main - consignmentRejection
    • main - consignmentTemplate
    • main - database
    • main - controlBarcode
    • main - documentQueue
    • main - electronicStore
    • main - storePool
    • main - mailTemplate
    • main - externalIcon
    • main - externalLink
    • main - externalWorkflow
    • main - externalWorkflowTask
    • main - externalWorkflowType
    • main - hold
    • main - jurisdiction
    • main - location
    • main - lookupItem
    • main - lookupSet
    • main - meeting
    • main - meetingType
    • main - metadataRule
    • main - minuteItem
    • main - minuteItemType
    • main - stopWord
    • main - offlineRecord
    • main - origin
    • main - originHistory
    • main - zipCode
    • main - record
    • main - recordAction
    • main - statistics
    • main - recordType
    • main - report
    • main - reportBitmap
    • main - request
    • main - revision
    • main - savedSearch
    • main - schedule
    • main - scheduledTask
    • main - searchForm
    • main - securityCaveat
    • main - securityGuide
    • main - securityLevel
    • main - sharePointItem
    • main - space
    • main - stzReport
    • main - workflowTemplate
    • main - keyword
    • main - todoItem
    • main - userLabel
    • main - htmlLayout
    • main - workflow
    • main - workingCopy
  • OwnerAssigned:auditable
    • main - record, related - location
  • OwnerChanged:auditable
    • main - record, related - location
  • PermissionsChanged:auditable
    • main - location
  • RecAddedToWorkflow:auditable
    • main - record, related - workflow
  • RecalcDispEvents:
    • main - record
  • RecNotesChanged:auditable
    • main - record
  • RecordCaveatAdded:auditable
    • main - record
  • RecordCaveatRemoved:auditable
    • main - record
  • RecordCopied:auditable
    • main - record, related - record
  • RecordExported:auditable
    • main - record
  • RecordIdChanged:auditable
    • main - record
  • RecordRecycled:auditable
    • main - record, related - record
  • RecordRelationshipAdded:auditable
    • main - record, related - record
  • RecordRelationshipRemoved:auditable
    • main - record, related - record
  • RecordRestored:auditable
    • main - record
  • RecordSecurityDeclassified:
    • main - record
  • RecordSecurityDowngraded:auditable
    • main - record
  • RecordSecurityUpgraded:auditable
    • main - record
  • RecordSuperseded:auditable
    • main - record, related - record
  • RecordWebPublished:auditable
    • main - record
  • RecRemovedFromWorkflow:auditable
    • main - record, related - workflow
  • RecSchChanged:auditable
    • main - record
  • RegDateChanged:auditable
    • main - record
  • ReindexExtra:
    • main - actionDef
    • main - fieldDefinition
    • main - autoPartRule
    • main - documentQueue
    • main - externalLink
    • main - externalWorkflow
    • main - hold
    • main - jurisdiction
    • main - location
    • main - lookupSet
    • main - meeting
    • main - mtgInvitation
    • main - meetingType
    • main - areOccurrence
    • main - origin
    • main - record
    • main - recordAction
    • main - recordType
    • main - request
    • main - scheduledTask
    • main - tskHistory
    • main - securityCaveat
    • main - securityGuide
    • main - securityLevel
    • main - workflowTemplate
    • main - todoItem
    • main - userLabel
  • ReindexField:
    • main - activity , related - fieldDefinition
    • main - archiveEvent , related - fieldDefinition
    • main - checkinStyle , related - fieldDefinition
    • main - classification , related - fieldDefinition
    • main - consignment , related - fieldDefinition
    • main - consignmentTemplate , related - fieldDefinition
    • main - externalWorkflow , related - fieldDefinition
    • main - hold , related - fieldDefinition
    • main - location , related - fieldDefinition
    • main - meeting , related - fieldDefinition
    • main - meetingType , related - fieldDefinition
    • main - record, related - fieldDefinition
    • main - request , related - fieldDefinition
    • main - schedule , related - fieldDefinition
    • main - securityGuide , related - fieldDefinition
    • main - space , related - fieldDefinition
    • main - keyword , related - fieldDefinition
    • main - todoItem , related - fieldDefinition
    • main - workflow , related - fieldDefinition
  • ReindexWords:
    • main - activity
    • main - archiveEvent
    • main - classification
    • main - cmmDetail , related - communication
    • main - location
    • main - locAddress , related - location
    • main - record
    • main - schedule
    • main - keyword
    • main - workflow
  • SapComponentExtracted:auditable
    • main - record, related - recSapComponent
  • SapComponentPrinted:auditable
    • main - record, related - recSapComponent
  • SapComponentViewed:auditable
    • main - record, related - recSapComponent
  • ScheduleReplaced:auditable
    • main - schedule , related - schedule
  • ScheduleReviewed:auditable
    • main - record, related - schedule
  • SearchExecuted:auditable
    • main - record
  • SecurityChanged:auditable
    • main - classification , related - unspecified, location
    • main - location , related - unspecified, location
    • main - record, related - unspecified, location
    • main - recordType , related - unspecified, location
    • main - securityGuide , related - unspecified, location
    • main - space , related - unspecified, location
  • SharePointLinkRemoved:auditable
    • main - sharePointItem , related - record
  • SignatureAttached:auditable
    • main - record, related - recRendition
  • SignatureCreated:auditable
    • main - record, related - recRendition
  • SignatureFailVerify:auditable
    • main - record, related - recRendition
  • SignatureVerified:auditable
    • main - record, related - recRendition
  • SignedRenditionPromoted:auditable
    • main - record
  • SpiEdited:auditable
    • main - record
  • SpiExposed:auditable
    • main - record
  • SpiManaged:auditable
    • main - record
  • SpiRelocated:auditable
    • main - record
  • SpiViewed:auditable
    • main - record
  • StorageExpiry* DateExtended:
    • main - record
  • StorageTransferred:auditable
    • main - agendaItem
    • main - agendaItemType
    • main - consignmentApprover
    • main - locEAddress
    • main - externalIcon
    • main - externalLink
    • main - recLinked* Document
    • main - location , related - locEAddress
    • main - meetingType
    • main - minuteItem
    • main - minuteItemType
    • main - origin
    • main - record, related - unspecified, recLinkedDocument, recRendition, recSapCompone
    • main - statistics
    • main - recRendition
    • main - report
    • main - reportBitmap
    • main - revision
    • main - recSapComponent
    • main - workingCopy
  • StorageTransferredInPlace:auditable
    • main - agendaItem
    • main - agendaItemType
    • main - consignmentApprover
    • main - locEAddress
    • main - externalIcon
    • main - externalLink
    • main - recLinkedDocument
    • main - location , related - locEAddress
    • main - meetingType
    • main - minuteItem
    • main - minuteItemType
    • main - origin
    • main - record, related - unspecified, recLinkedDocument, recRendition, recSapCompone
    • main - statistics
    • main - recRendition
    • main - report
    • main - reportBitmap
    • main - revision
    • main - recSapComponent
    • main - workingCopy
  • TitleChanged:auditable
    • main - record
  • TodoItemCompleted:auditable
    • main - todoItem
  • TodoItemReassigned:auditable
    • main - todoItem , related - location
  • TriggersChanged:auditable
    • main - schedule
  • UdfChanged:auditable
    • main - activity , related - fieldDefinition
    • main - archiveEvent , related - fieldDefinition
    • main - checkinStyle , related - fieldDefinition
    • main - classification , related - fieldDefinition
    • main - consignment , related - fieldDefinition
    • main - consignmentTemplate , related - fieldDefinition
    • main - externalWorkflow , related - fieldDefinition
    • main - hold , related - fieldDefinition
    • main - location , related - fieldDefinition
    • main - meeting , related - fieldDefinition
    • main - meetingType , related - fieldDefinition
    • main - record, related - fieldDefinition
    • main - request , related - fieldDefinition
    • main - schedule , related - fieldDefinition
    • main - securityGuide , related - fieldDefinition
    • main - space , related - fieldDefinition
    • main - keyword , related - fieldDefinition
    • main - todoItem , related - fieldDefinition
    • main - workflow , related - fieldDefinition
  • Unfinalized:auditable
    • main - record
  • UpdateStorageMetadata:
    • main - originHistory
    • main - record
  • UserHierarchyChanged:
    • main - location
  • UserLogoff:auditable
    • main - location
  • UserLogon:auditable
    • main - location
  • UserLogonFailed:auditable
    • main - database
  • UserLogonImpersonation:auditable
    • main - location
  • UserLogonImpersonationFailed:auditable
    • main - database
  • WorkflowInitiated:auditable
    • main - record, related - workflow

Content Manager 10.0

Content Manager SDK assembly and namespace renamed

The Content Manager .NET SDK assembly has been renamed from HP.HPTRIM.SDK.dll to TRIM.SDK.dll, and the SDK namespace has been renamed from HP.HPTRIM.SDK to TRIM.SDK.

To preserve compatibility with existing applications, the HP.HPTRIM.SDK.dll assembly will continue to be updated and shipped with Content Manager, however customers should prioritize migrating to using TRIM.SDK.dll, as usage of HP.HPTRIM.SDK.dll is now deprecated and HP.HPTRIM.SDK.dll will be removed from the product in a future release.

To migrate existing SDK applications, the following changes need to be made:

  • Change existing assembly references to HP.HPTRIM.SDK.dll, to instead refer to TRIM.SDK.dll.
  • Change namespace references in your code, from HP.HPTRIM.SDK to TRIM.SDK.

Please note that it is not supported for a process to load both the TRIM.SDK.dll and HP.HPTRIM.SDK.dll assemblies. As a consequence, if you have a record addin configured, which references a particular SDK assembly, then any SDK code you write must be compiled against the same SDK assembly as the record addin.

Deleted methods and properties:

  • Consignment.PrepareForTransfer() (see new functions WaitForTransferReceipt() and AcknowledgeTransferReceipt())
  • Consignment.CompleteTransfer() (see new functions WaitForTransferReceipt() and AcknowledgeTransferReceipt())
  • Database.GetNotifications
  • Database.GetLocationNotifications
  • Record.ElasticMetadataJSON
  • StartupUserOptions.WebClientPane1
  • StartupUserOptions.WebClientPane2
  • StartupUserOptions.WebClientPane3

Get the field definition for this word

If the word is sourced from a field the relevant FieldDefinition:

  • Word.Field

Create External Link from SDK

New ExternalLink object to allow for creation of External Links.

Monitor event processor

New properties:

Get a string listing all the record types to which this classification is allowed to be attached

Get the Location object which is the assignee of the first activity in this workflow

New property:

A boolean property indicating whether the current user can view all the details of this location

Gets a number indicating how many times the electronic document attached to this record has been viewed

Get a string which represents the global default for user preferences for the nominated application

New method:

Support aggregated search results

New class TrimAggregateResultIterator returned by new method GetAggregateResultIterator. Use these to get an aggregation of your search results.

Suppress document extract logging

New database property:

New search clause to do a raw elastic query

New member of SearchClauseIds:

  • RecordElastic

New search clauses to find all ancestors recursively

New clauses in SearchClauseIds:

  • LookupItemAllParentsOf
  • SpaceAllParentsOf
  • ClassificationAllParentsOf
  • ScheduleAllParentsOf
  • UserLabelAllParentsOf

UserLabel Owner now a modifiable property

Allows you to create User Labels for other users.

Copy security annotations to email headers

New database property:

Enhancements to Record recycle and restore

New method:

Custom Icons

A new interface to allow custom Icons to be added to the Content Manager user interface.

The Interface ITrimCustomIcon has been added to:

The new class ExternalIcon supports creation and management of customer icons.

Add saved search as a filter to Search Form

New search form property:

Superseded by information in Schedule

New properties:

Option to set how to deal with the situation when new contents get added to this container and it has a different scheduled disposal type

New property

Manually delete a single Record from the recycle bin

New method:

Attach 'Workflow' template or 'Action Tracking' Procedure to Classification as default to be applied to record when attaching Classification to record

New properties:

Link non Record objects to a ToDo item

New overload on the New method to specify which object to link to the TodoItem.

New properties for the linked object type and Uri.

New search method for Location Job Title

New Search Clause LocationJobTitle

Make Icon files available in the SDK

The icon files used in the CM client are now available as part of the SDK for use in applications that connect to CM.

New methods:

Find Saved Searches that have not been recently used

Added the ability to find Saved Searches that have not beed used since a specified date.

New property

New Search Clause SavedSearchLastUsedOn

System option to update Record Number on change of Classification

New property:

Improve display of decimal field values

Specify whether a field should allow negative numbers and how many decimal places to round to on display.

New properties:

Search by Edit Status

New Search Clause SearchClauseIds.RecordEditState, new enumeration DocumentEditStatus

Workflow Templates provide ability to activate Additional fields per template

Adds the ability to activate or deactivate 'additional fields' on individual Workflow templates. 

New methods:

New property:

Control whether clauses are added to recent search methods

When using TrimMainObjectSearch choose whether the search clauses should be added to Recent Search Methods:

New method:

Get blocked file extensions

A new property listing the file extensions blocked by the administrator:

Additions to FormDefinition

New properties have been added to FormDefinition related classes to support enhancements to the Record property page.

New properties:

Include Tags in the metadata options of electronic records

A new property to specify an Additional Field to be used to store tags from Office documents, these tags will be extracted as part of the auto-profiling process.

Introduce a UDF that can be updated once disposition is Destroyed

Some systems, for example those using manage in place, require the ability to update a field after the Record has been destroyed. Set this property to true to enable that.

Ability to suppress legal hold designation

Holds now support access control which allows the information that a Record is on hold to be suppressed.

New property:

New ACL enum HoldAccess with values:

  • Can Use
    • Can Update
    • Can Modify Access
    • Can Delete
  • Can View Details

Light weight Records

New lightweight Record Types allow for Records that faster disposal, see the help file more details.

New Record Behaviours:

  • BasicDocument
  • BasicContainer

New property:

Example

RecordType rt = new RecordType(database, RecordBehaviour.BasicDocument);
RecordBehaviour
Behaviours
Definition: RecordBehaviour.cs:16
@ RecordType
For Records that have a Record Type of

Indicator on a record when Notes have been added

New property:

Provide a version of TransferStorage just for older revisions

New method on Record:

New DocumentStoreIncrementalCheckTask

The DocumentStoreIncrementalCheckTask allows you to run an incremental document store integrity check, with settings to limit the number of documents scanned to only those added since a certain date.

Changes to Consignment processing

With the changes made to providing a command line option for consignment processing, it has been necessary to fix up an anomaly in the SDK Design.

New methods:

Removed methods:

  • Consignment.CompleteTransfer
  • Consignment.PrepareForTransfer

Unknown Location type validation

Gets or sets a GeneralExceptionHandling enum value indicating how to deal with unknown location types when verifying new record data entry forms that contain auto profiled contacts

Display Child lists in the .Net SDK

The COM SDK included a UI component to display and modify a child list (for example Record Revisions), this is now also available in the .Net SDK.

Sample Code

private IntPtr windowHandle = IntPtr.Zero;
private IntPtr getWindowHandle()
{
if (windowHandle == IntPtr.Zero)
{
windowHandle = new WindowInteropHelper(this).Handle;
}
return windowHandle;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Record record = new Record(_database, "REC_1");
PropertyEditor.EditChildList(getWindowHandle(), record, BaseObjectTypes.RecordRevision);
}
BaseObjectTypes
The BaseObjectTypes enum
Definition: BaseObjectTypes.cs:16

Provide a way of limiting users from extracting and printing sensitive documents

A new permission 'Extract Document' is now available. This permission is required to extract/print a document from Content Manager. In addition, to allow selected records to be locked, a further permission has been added, called 'Extract sensitive documents'. This would be allocated to higher level users such as records coordinators. Sensitive documents are defined as finalized records that are flagged as requiring restricted access to extract/print operations in the record's record type (see Electronic tab properties).

New property:

New Permissions in UserPermissions

  • UserPermissions.DocumentExtract
  • UserPermissions.DocumentExtractSensitive

Make Notes user stamp mandatory

New database property to allow the addition of a user stamp adding notes to be mandatory:

Detect whether a search is using the user's default sort and filters

Two new properties to indicate whether default sort and filters are in use on a search:

Improve performance and stability of document integrity check

The performance and reliability of the document store integrity has been improved and may be managed with these new properties:

InputDocument.SetAsAlreadyStoredItem SDK function sets record Date Modified to current date rather than Date Modified from document profile

InputDocument.SetAsAlreadyStoredItem() (and the corresponding InputDocument constructor) have been modified to accept an additional date parameter - alreadyInStoreDateModified. If this parameter is not blank, it will be used as the dateModified of the electronic document.

New property:

Allow content index updates of missing Records using the SDK so that users can automate the process

Previously the only way to update the content index for an object was via the desktop client. The TrimMainObject.Reindex() method allows reindex to be called from an SDK application. This has parameters to specify whether to generate a notification to reindex words, user-defined fields and/or the content engine.

More user-friendly style of displaying record types for selection

A new constructor on the TrimMainObjectSearch which both simplifies the return of Record Types for a particular purpose and also returns the current users favorite Record Types at the top of the list in order. The favorite Record Types are set using the method below.

New method:

New UserOptionSet SelectRecordType with properties:

  • SelectRecordTypeUserOptionsFavoritesFirst = SelectRecordTypeUserOptionsUseSavedSearch

Sample Code

var search = new TrimMainObjectSearch(db, RecordTypeFilter.ElectronicForCreateNoManual);
foreach (RecordType recordType in search)
{
Console.WriteLine(recordType.Name);
}
RecordTypeFilter
Record Type Filters
Definition: RecordTypeFilter.cs:16

More control on copying a record using Record.CreateNewCopy() method

Content Manager 9.4

BREAKING CHANGE - History.EventType changed enum type

  • In previous versions the property History.EventType was of type HistoryType. It is now of type Events which does not map directly to HistoryType. Any code that relies on this property will need to be reviewed.

Unrestricted file upload vulnerability

Refine a search to returned the current or latest version of documents

Include more functionality to handle deleted and cancelled record requests and audit all actions

Record Title as column in historical event search

No email notifications for requested records located in Space Management

Online Audit log - The audit history does not include all changes when a person location is associated to a position

Provide a default for the author property for a Document Queue

Automatic Sub folders sort order for Record Types

Search for records has no Hold returns records has Hold

Expose RestartDocumentReview to the SDK

Searching Browse Via Classification - ability to select a sort method for listed records under Classifications

HasMore property on TrimMainObjectSearch

Expose ChangeMatter and ChangeClient functionality in SDK

Knowledge workers can't request Pickup Requests

Implement a generic origin type for third party applications to use for bulk loading

SDK available as NuGet package

  • The SDK NuGet package is intended for developers, and contains a basic set of Content Manager DLL's needed for developing applications using the Content Manager SDK. It does not contain KeyView components, or other third party components.
  • For developers requiring the full set of Content Manager DLL's, it is recommended to run the Content Manager server or client installation packages.
  • To use the NuGet package from Visual Studio, please follow these directions:
    1. In Visual Studio, select Tools -> Options.
    2. Select NuGet Package Manager -> Package Sources.
    3. Click the green Add button, and add the location of this folder.
    4. In the Solution Explorer, right click on your C# project, and press "Manage NuGet Packages".
    5. In the "Package source" drop down box, select the package source you configured in (3).
    6. Click on Browse.
    7. Click on the "TRIM.SDK" package.
    8. Press Install, to add it to your project.

Provide a way of doing server side updates in a custom event processor and preserving the lastUpdatedBy (and dateLastUpdated) fields

Expose SDK connection pool configuration

Auto Profiling - provide a per-record option to choose the record title from the document properties or the document file name

Add access control to User Labels

Resolve ambiguities as to who can see a classification

Issues with "Due Date for completion of review process" and "Due Date for the reviewer to complete their work" fields.

Allocate a custom title to an alert.

Unable to send more than 100 Records at a time to External Link

  • ER KM02904803
  • An executable external link passes the selected Record URI's as a command line parameter, Windows restrictions means there is a limit to the size of the command line parameter. The new option 'send tagged URI's as a temporary file' causes the list of selected URI's to be written to a file and the name of the file is passed to the executable as demonstrated in this sample.

Specify which record type is allowed to be placed into closed containers

Add Notes to User Labels

Check-in Styles and Document Queues to include additional options

Send to Recycle Bin - Soft delete for Records

Hide custom record types from search response

Folder Synchronization - provide a way of detecting when content is removed from a folder for offline synchronization purposes

  • To sync the contents of a large folder, without re-fetching the entire contents, you need to get:
    • newly added Records, which can be done using a search, and
    • records removed (via deletion or movement), which can be done with this new method.
  • New method

Provide a data stream capability to avoid delays caused by object cache instantiation

Implement new Record methods for closing (and reopening) containers

Searches to be able to filter / clause based on enum

Need a way to inform SDK applications of object change notifications and other system messages

  • The CM client uses a subscriber service provided by the workgroup to keep caches up to date with changes that happen on other machines in the network. This enhancement allow SDK applications to be notified when an object in CM has changed. A use case for this might be to refresh a client side cache.
  • See the documentation for more information and sample code.

Content Manager 9.3

SDK no longer installed in GAC

  • In previous versions the .NET SDK has been installed in the GAC. This is no longer the case. To support dynamic loading of TRIM.SDK.dll, follow the pattern demonstrated in this sample.

Removed properties

  • The following properties are no longer required and have been removed from the SDK:
    • CommunicationDetail.AddressUri
    • Database.AutomaticallyOCR
    • Database.IdolSearchStyle
    • GisDataUserOptions.SeachPreference

Audits - Unable to see the Audit log for the records placed on hold as a group

Record import not working when lookup item additional field is on a record

Property on Offline Record object to tell us whether auto checkin has is enabled

Consignments

  • You can flag transfer or archive consignments to have all documents in the consignment converted to the long-term preservation format.
  • CR 64782
  • New methods / properties

History

RecordAction

Retention Schedules - provide support for event based scheduling

  • Some preliminary work has been done to support event-based retention scheduling. This has not yet been implemented fully in Content Manager and the work will be completed in the next major release. Events can be created however they cannot be associated with a retention schedule or used for disposal scheduling of records. Consider these objects “reserved for future use”.
  • CR 57424
  • New objects

View Panel - Add the To Do items in record View Panel

Record Type

Database

Request

UserLabel

DroppedFileUserOptions

Ability to manage favourite and recent search clauses in user profile

Providing a custom sort order specifically for Tray searches

Content Manager 9.2

Checking for duplicate documents by hash

try
{
string hash = db.CalculateDocumentHash("c:\\temp\\temp.doc");
TrimMainObjectSearch recordSearch = db.FindRecordsByHash(hash);
List<string> numbers = new List<string>();
foreach (Record rec in recordSearch)
{
numbers.Add(rec.Number);
}
if (numbers.Count > 0)
{
Console.WriteLine(string.Format("This document '\\temp\\abc.doc' is already registered, Record(s) = {0}", string.Join(", ", numbers)));
} else
{
Console.WriteLine("The document '\\temp\\temp.doc' is not registered in TRIM");
}
}
catch (TrimException ex)
{
Console.WriteLine(ex.Message);
}

Searching for Record types: 'can contain' and 'can be contained in'

Updates to Lookupsets

Issues with constructors

  • CR 61030
  • Comments
    • Some TrimMainObject-derived classes had issues with their constructors which have been fixed. These include:
      • Alert object would construct successfully but no alert appeared in the client.
      • RecordAction and Word had constructors for creating new instances. These have been removed.
  • Sample Code
    • The following example creates a new Alert.
Alert alert = new Alert(db);
alert.ObjectType = BaseObjectTypes.Record;
alert.EventType = Events.ObjectModified;
alert.Criteria = "electronic";
alert.ChildSubscribers.NewSubscriber(new Location(db, 9000000049));
alert.Save();
Events
The Events enum
Definition: Events.cs:16

IsValidFor throws an exception rather than returning false with information

Promote Revision function that works like the functions inside trim.exe

  • CR 60986
  • Comments
    • Ability to promote a revision to be the main document as could already be done through the native client.
  • Sample Code
    • Choose a particular record revision then promote it.
Record rec = new Record(db, 9000000000);
RecordRevision revision = rec.ChildRevisions.FindChildByUri(9000000001) as RecordRevision;
revision.Promote();

Database pool built into SDK

  • CR 61192
  • Comments
    • Calling Database.Connect() can take several hundred milliseconds to complete. This is not a problem in a client application where the connection is preserved for the life of the application, but for a web service application it adds significant overhead to each request. The database pool optimises this connection process by storing each instance of the database in a cache, and then on subsequent requests retrieving the cached instance instead of connecting a new instance.
    • Database pooling operated transparently as long as the database is connected in the appropriate way, as seen in the sample below.
  • New methods
  • Sample Code
    • The database instance will be cached if a workgroup server name, trusted user and dataset ID are specified. The instance will remain in the cache for 5 minutes.
db.Id = "K1";
db.TrustedUser = "fred";
db.WorkgroupServerName = "local";
db.Connect();
The Database object is the first object that must be created when using the Content Manager SDK....
Definition: Database.cs:16
string Id
Gets or sets a string containing the Database id for this Database. Setting this property will make a...
Definition: Database.cs:2146
Definition: ApiHost.cs:5
Definition: ApiHost.cs:5

Provide a HasPermission function for the TRIM main object

Prevent invalid extensions from interfering with the checkout process

  • CR 62054
  • Comments
    • Putting invalid characters in InputDocument.CheckInAs would cause an error when checking the document out. These characters are now stripped from the file name on check out.

SDK methods to support field sorting

SDK methods to support blocking of search methods

Exposing the Initiating Workflow template concept in the SDK

  • CR 64493
  • New methods / properties
  • Comments
    • This new property has been added in order that SDK applications can specify that a workflow be generated as part of the process of creating a new record. To do that you need to specify a valid workflow template in this property - the new workflow will be created based on that template. Note that this property is a little special in that it cannot be set for an existing record - if you try to do that you will get an error. It really is only applicable for new records. The value of the property is also "forgotten" once the record has been created.

Provide a way of "crawling" the repository without tripping the LastUpdatedOn date

  • CR 64506
  • New methods / properties
  • Comments
    • This ExtractDocument boolean property has been provided so that you can write an application that extracts a copy of a record's document without setting the Record.DateLastAction property. Typically the act of extracting a document can be seen as an "action" on a record and thus the DateLastAction is set, together with a consequential update to the Record.LastUpdatedOn property. If you turn it on, this property overrides the RecordType setting for "Set Last Action Date On View". It is useful for writing an app that must periodically check and extract any new content, and is relying on the LastUpdatedOn property to find recently updated records.