It looks like this was not working before, we have just noticed it as we’re moving towards all smart actions requiring the approval process. (But again, the smart action without approval works as expected).
from institutions.forest.js
function init() {
Liana.collection("Institution", {
searchFields: ["id", "name"],
actions: [
{
name: "Create Institution",
type: "global",
fields: [
{
field: "id",
type: "Number",
isRequired: true,
},
{
field: "name",
type: "String",
isRequired: true,
},
{
field: "rssd",
type: "Number",
isRequired: false,
},
{
field: "rank",
type: "Number",
isRequired: false,
},
{
field: "depositShare",
type: "Number",
isRequired: false,
},
{
field: "voa",
type: "Boolean",
isRequired: false,
},
{
field: "voi",
type: "Boolean",
isRequired: false,
},
{
field: "stateAgg",
type: "Boolean",
isRequired: false,
},
{
field: "ach",
type: "Boolean",
isRequired: false,
},
{
field: "transAgg",
type: "Boolean",
isRequired: false,
},
{
field: "aha",
type: "Boolean",
isRequired: false,
},
{
field: "availBalance",
type: "Boolean",
isRequired: false,
},
{
field: "accountOwner",
type: "Boolean",
isRequired: false,
},
{
field: "loanPaymentDetails",
type: "Boolean",
isRequired: false,
},
{
field: "studentLoanData",
type: "Boolean",
isRequired: false,
},
{
field: "accountTypeDescription",
type: "String",
isRequired: false,
},
{
field: "phone",
type: "String",
isRequired: false,
},
{
field: "urlHomeApp",
type: "String",
isRequired: false,
},
{
field: "urlLogonApp",
type: "String",
isRequired: false,
},
{
field: "oauthEnabled",
type: "Boolean",
isRequired: true,
},
{
field: "urlForgotPassword",
type: "String",
isRequired: false,
},
{
field: "urlOnlineRegistration",
type: "String",
isRequired: false,
},
{
field: "class",
type: "String",
isRequired: false,
},
{
field: "specialText",
type: "String",
isRequired: false,
},
{
field: "specialInstructions",
type: "Json",
isRequired: false,
},
{
field: "specialInstructionsTitle",
type: "String",
isRequired: false,
},
{
field: "address",
type: "Json",
isRequired: false,
},
{
field: "currency",
type: "Enum",
enums: ["USD", "AUD", "CAD", "BRL"],
isRequired: true,
},
{
field: "email",
type: "String",
isRequired: false,
},
{
field: "active",
type: "Boolean",
isRequired: false,
},
{
field: "status",
type: "Enum",
enums: [
"online",
"offline",
"maintenance",
"testing",
"investigating",
],
isRequired: true,
},
{
field: "topInstitution",
type: "Boolean",
isRequired: true,
},
{
field: "newInstitutionId",
type: "Number",
isRequired: false,
},
{
field: "autoMode",
type: "Boolean",
isRequired: true,
},
{
field: "accuity_data_id",
type: "Number",
isRequired: false,
},
{
field: "showAccountSelectionOAuth",
type: "Boolean",
isRequired: false,
},
{
field: "timeZone",
type: "Enum",
enums: Object.values(validTimeZones),
isRequired: false,
},
{
field: "displayName",
type: "String",
isRequired: false,
},
{
field: "script data",
reference: "ScriptData.id",
isRequired: false,
},
{
field: "account support",
reference: "AccountSupport.id",
isRequired: false,
},
{
field: "branding",
reference: "branding.id",
isRequired: false,
},
{
field: "country code",
reference: "CountryCodeReference.institutionId",
isRequired: true,
},
],
},
],
});
}
And from our institution model
const Institution = sequelize.define('Institution', {
'id': {
primaryKey: true,
allowNull: false,
type: DataTypes.INTEGER,
unique: true
},
'name': {
type: DataTypes.STRING
},
'rssd': {
type: DataTypes.INTEGER,
allowNull: true,
defaultValue: -1
},
'rank': {
type: DataTypes.INTEGER,
allowNull: true
},
'depositShare': {
type: DataTypes.FLOAT,
allowNull: true
},
'voa': {
type: DataTypes.BOOLEAN,
defaultValue: false
},
'voi': {
type: DataTypes.BOOLEAN,
defaultValue: false
},
'stateAgg': {
type: DataTypes.BOOLEAN,
defaultValue: false
},
'ach': {
type: DataTypes.BOOLEAN,
defaultValue: false
},
'transAgg': {
type: DataTypes.BOOLEAN,
defaultValue: true
},
'aha': {
type: DataTypes.BOOLEAN,
defaultValue: false
},
'availBalance': {
type: DataTypes.BOOLEAN,
defaultValue: false
},
'accountOwner': {
type: DataTypes.BOOLEAN,
defaultValue: false
},
'loanPaymentDetails': {
type: DataTypes.BOOLEAN,
defaultValue: false
},
'studentLoanData': {
type: DataTypes.BOOLEAN,
defaultValue: false
},
'accountTypeDescription': {
type: DataTypes.STRING
},
'phone': {
type: DataTypes.STRING
},
'urlHomeApp': {
type: DataTypes.STRING(1150)
},
'urlLogonApp': {
type: DataTypes.STRING(1150)
},
'oauthEnabled': {
type: DataTypes.BOOLEAN,
defaultValue: false,
allowNull: false
},
'urlForgotPassword': {
type: DataTypes.STRING(1150)
},
'urlOnlineRegistration': {
type: DataTypes.STRING(1150)
},
'class': {
type: DataTypes.STRING
},
'specialText': {
type: DataTypes.STRING
},
'timeZone': {
type: DataTypes.ENUM(Object.values(validTimeZones)),
allowNull: true
},
'specialInstructions': {
type: DataTypes.JSON,
validate: {
isValidSpecialInstruction(value) {
const result = specialInstructionSchema.validate(value);
if (result.error) {
throw new Error('Special Instructions is not formatted correctly');
}
}
}
},
'specialInstructionsTitle': {
type: DataTypes.STRING,
allowNull: true,
},
'address': {
type: DataTypes.JSON,
validate: {
isValidAddress(value) {
const result = addressSchema.validate(value);
if (result.error) {
throw new Error('Address is not formatted correctly');
}
}
}
},
'currency': {
type: DataTypes.STRING,
defaultValue: 'USD',
allowNull: false
},
'email': {
type: DataTypes.STRING
},
'active': {
type: DataTypes.BOOLEAN,
defaultValue: false
},
'status': {
type: DataTypes.STRING,
allowNull: false,
defaultValue: 'online',
validate: {
isIn: [['online', 'offline', 'maintenance', 'testing', 'investigating']],
}
},
'overallStatusTemp': {
type: DataTypes.STRING,
allowNull: false,
defaultValue: 'online',
validate: {
isIn: [['online', 'offline', 'maintenance', 'testing', 'investigating']],
}
},
'transAgg_status': {
type: DataTypes.ENUM(...STATUS_OPTIONS),
allowNull: true,
},
'voa_status': {
type: DataTypes.ENUM(...STATUS_OPTIONS),
allowNull: true,
},
'voi_status': {
type: DataTypes.ENUM(...STATUS_OPTIONS),
allowNull: true,
},
'stateAgg_status': {
type: DataTypes.ENUM(...STATUS_OPTIONS),
allowNull: true,
},
'accountOwner_status': {
type: DataTypes.ENUM(...STATUS_OPTIONS),
allowNull: true,
},
'ach_status': {
type: DataTypes.ENUM(...STATUS_OPTIONS),
allowNull: true,
},
'aha_status': {
type: DataTypes.ENUM(...STATUS_OPTIONS),
allowNull: true,
},
'availBalance_status': {
type: DataTypes.ENUM(...STATUS_OPTIONS),
allowNull: true,
},
'topInstitution': {
type: DataTypes.BOOLEAN,
defaultValue: false,
allowNull: false
},
'checkImage': {
type: DataTypes.BOOLEAN,
defaultValue: false
},
'newInstitutionId': {
type: DataTypes.INTEGER,
allowNull: true
},
'requiresFinicityCallout': {
type: DataTypes.BOOLEAN,
defaultValue: false,
allowNull: false
},
'autoMode': {
type: DataTypes.BOOLEAN,
defaultValue: true,
allowNull: false
},
'accuityData': {
type: DataTypes.STRING,
allowNull: true,
},
'showAccountSelectionOAuth': {
type: DataTypes.BOOLEAN,
defaultValue: false
},
'statusCode': {
type: DataTypes.STRING,
defaultValue: false,
allowNull: true
},
'externalId':{
type: DataTypes.STRING,
defaultValue: null,
allowNull:true
},
'displayName': {
type: DataTypes.STRING,
allowNull: true
}
},
{
tableName: 'institutions',
timestamps: true,
createdAt: 'createdAt',
updatedAt: 'updatedAt'
}
);