I dug through the SDK docs and think I've figured out what's going on. Laserfiche 10.4 introduced a set of features we collectively call "Flexible Records Management".
Flexible Records Management
Laserfiche Records Management has been updated to enable greater organizational flexibility in how records are handled, while still enforcing security restrictions to help them meet their compliance needs. Cutoff and retention policies can now be assigned directly to any entry in the repository, without needing to be located within record series. In addition, holds (previously called freezes) can be placed on any entry in the repository, regardless of its folder structure or whether it is a record.
I recall the previously documents could only inherit their cutoff criteria from the parent record folder/series. Because the last released version of the SDK is 10.2, it and its documentation do not include the new Flexible RM features. (SDK 10.4 coming soon).
However, Workflow 10.4+ SDK Script activities already load the RepositoryAccess (RA) 10.4 library by default, which does include the property you need. In short, the RecordProperties class now has a CutoffCriterionID property just as RecordSeriesProperties does. See sample code snippet below, which I verified successfully builds. Note that I had to explicitly add a using statement for Laserfiche.RepositoryAccess.Records namespace.
namespace WorkflowActivity.Scripting.SDKScript
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using Laserfiche.RepositoryAccess;
using Laserfiche.RepositoryAccess.Records;
/// <summary>
/// Provides one or more methods that can be run when the workflow scripting activity is performed.
/// </summary>
public class Script1 : RAScriptClass104
{
/// <summary>
/// This method is run when the activity is performed.
/// </summary>
protected override void Execute()
{
// Write your code here. The BoundEntryInfo property will access the entry, RASession will get the Repository Access session
DocumentInfo DocInfo = new DocumentInfo(this.BoundEntryId, this.RASession);
RecordProperties RecProps = DocInfo.GetRecordProperties();
int cutoffId = 1; //ID of the cutoff criterion to apply to the record
RecProps.CutoffCriterionId = cutoffId; //Sets the ID of the cutoff criterion of the represented record
RecProps.Save();
}
}
}