Purpose: This article will outline how to create new portfolios within the Orion system. Households are one part of a Portfolio, the other two records being a Registration and an Account. All three records are required to create a portfolio:
- Household – (also known as Client) (Rep assignment, Address, Name, SSN for head of household).
- Registration – (Account Type(ie 401K), SSN, BirthDate, Beneficiaries)
- Account – (Custodian, Management Style, Fund Family, Model Assignment
Simple Use Case: A firm has a CRM or New Account Process which begins in another platform, but has the feature of creating that new portfolio in Orion as needed.
Scope and Outputs: This will allow you to create data for new entities in Orion and provide details on the required items for entity creation.
Process Overview:
- Compose the information for the entity to be created.
- Send the required data to Orion to create the new entity.
Process Steps:
- GET template for creating a new Portfolio.
GET /Portfolio/Accounts/NewPortfolio/New
POST the required data for creating a new Portfolio.
POST /Portfolio/Accounts/NewPortfolio OR
POST /Portfolio/Accounts/NewPortfolio?generateAccountNumber={generateAccountNumber}
Here are the Required fields (noted by the *), and some of the more common fields.
CLIENT RECORD
*LastName, FirstName and Name fields must be populated. (Name is generally “firstname lastname” but not required to be. If adding to existing Household or Registration only entity ID is required.)
*StatusType Must have a value (default is recommended: “Pending Review”)
ssN_TaxID (not required, but helps with householding)
representativeId (if not filled in, it will be populated with a default rep) GET: /Portfolio/Representatives/Simple
NOTE: If using an already existing household, only the Client.Id property needs to be populated.
REGISTRATION RECORD
*LastName, FirstName and Name fields must be populated (Name is generally “firstname lastname” but not required to be. If adding to existing Household or Registration only entity ID is required.)
*TypeId (this is the account type, not required if adding to existing registration; see: GET v1/Portfolio/Registrations/Types)
DOB
ssN_TaxID
NOTE: If using an already existing registration, only the Client.Registration.Id property needs to be populated.
ACCOUNT RECORD
*FundFamilyId see: GET v1/Portfolio/FundFamilies
*CustodianId see: GET v1/Portfolio/Custodians/Simple
The following fields may be populated with defaults when calling the template GET /Portfolio/Accounts/NewPortfolio/New – If they are not you must include data.
*PayMethodId – Include the pay method see GET:/Billing/PayMethods
*FeeScheduleID Include Fee Schedule ID See GET:/Billing/Schedules
*MasterPayoutScheduleID Include payout schedule ID See GET:/Billing/MasterPayoutSchedule
aggregateModel– assigns a model to the account. see: GET v1/Trading/ModelAggs/Simple *please see notes below
CustodialAccountNumber – the custodial account number if you already have it from the custodian.
NOTE: If you know the account number, please include this upon creation under the “custodialAccountNumber”: null, of the account payload. If you do not know the account number, you can later add this data by adding an asset to an existing account and inputting the account number at that time.
This sample will create a new Household for a client named “Household Creation” with only the required fields completed. NOTE: If you are creating a new registration and account only, you can include the client id for an existing household, or both client and registration id if creating only a new account in an existing registration. Example listed below.
Code:
{
"client": {
"id": 0,
"name": "Household Creation",
"billing": {
"billClientId": 0,
"statusType": "Pending Review",
"masterPayoutScheduleId": null,
"feeScheduleID": null,
"relatedClients": null
},
"recurringAdjustments": null,
"feePayingAccounts": null,
"tieredFeeAccounts": null,
"householdBills": null,
"financialPlanningFee": null,
"portfolio": {
"startDate": null,
"isActive": true,
"representativeId": 12,
"categoryId": 1,
"statementDeliveryMethodId": 1,
"videoStatementDeliveryMethod": "Unassigned",
"createdBy": null,
"createdDate": "0001-01-01T00:00:00-06:00",
"editedBy": null,
"editedDate": "0001-01-01T00:00:00-06:00",
"firstName": "Household",
"lastName": "Creation",
"city": null,
"state": null,
"isUsResident": true,
"email": null,
"name": "test test",
"salutation": null,
"lastStatementSentTo": null,
"address1": null,
"address2": null,
"address3": null,
"zip": null,
"country": null,
"homePhone": null,
"homePhoneExt": null,
"fax": null,
"faxExt": null,
"pager": null,
"pagerExt": null,
"mobilePhone": null,
"businessPhone": null,
"businessPhoneExt": null,
"otherPhone": null,
"otherPhoneExt": null,
"workPhone": null,
"workPhoneExt": null,
"reportName": null,
"company": null,
"jobTitle": null,
"ssN_TaxID": null,
"gender": null,
"advClientCategoryId": null,
"dob": null,
"webAddress": null,
"importKey": null,
"lastStatementSent": null,
"isQualifiedInvestor": false
},
"householdMembers": null,
"notes": null,
"documents": null,
"additionalAccounts": null,
"suitability": null,
"userDefinedFields": null,
"entityOptions": null,
"targetAllocations": null,
"creditCard": null,
"assetExclusions": null,
"portfolioGroups": null,
"appLinks": null,
"additionalRepresentatives": null
},
"registration": {
"id": 0,
"name": "reg test",
"portfolio": {
"name": "reg test",
"firstName": "reg",
"lastName": "test",
"typeCode": null,
"isBIRA": false,
"accountType": null,
"isActive": true,
"clientId": 0,
"typeId": 1,
"company": null,
"isUsResident": true,
"jobTitle": null,
"ssN_TaxID": null,
"deceasedSSN_TaxID": null,
"dob": null,
"gender": null,
"createdBy": null,
"createdDate": "0001-01-01T00:00:00-06:00",
"editedBy": null,
"editedDate": null,
"dateOfDeath": null,
"targetSpendRate": null,
"targetDollarAmount": null,
"targetDate": null
},
"contact": null,
"notes": null,
"beneficiaries": [],
"suitability": {
"netWorthIncludingResidence": null,
"netWorthExcludingResidence": null,
"liquidNetWorth": null,
"investmentKnowledge": null,
"riskExposure": null,
"investmentExperience": null,
"returnObjective": null,
"investmentObjective": null,
"timeHorizon": null,
"stockPercent": null,
"riskTolerance": null,
"netWorth": null,
"netIncome": null,
"riskBudget": null,
"isLifestyleOption": false,
"reviewCompleted": null,
"reviewCompletedDate": null
},
"userDefinedFields": null,
"entityOptions": null,
"additionalRepresentativesPercent": null
},
"account": {
"id": 0,
"name": "account test",
"number": null,
"billing": {
"billAccountId": 0,
"accountType": null,
"fundName": null,
"feeSchedule": "UnAssigned",
"masterPayoutSchedule": "Blankdb",
"payMethod": null,
"billFrequency": "Quarterly",
"billStyle": "Advanced",
"acceptsList": true,
"valuationMethod": "Period End Value",
"fundFamilyId": 9,
"managementStyleId": null,
"subAdvisorId": null,
"feeScheduleId": 4,
"masterPayoutScheduleId": 1,
"payMethodId": 1,
"billStartDate": null,
"bankName": null,
"abaNumber": null,
"bankAccountNumber": null,
"nameOnAccount": null,
"custodialAccountNumber": null,
"isPerformanceBilled": null,
"lastPerfBillDate": null,
"expirationDate": null,
"addressLine1": null,
"addressLine2": null,
"addressLine3": null,
"city": null,
"state": null,
"zip": null,
"includeInAggregate": true,
"nonManagedAccountNumber": null,
"nonManagedAccountName": null,
"nonManagedHouseholdName": null,
"cycleMonth": 1,
"performanceMasterPayoutSchedule": null,
"performanceFeeSchedule": null,
"performanceMasterPayoutScheduleId": null,
"performanceFeeScheduleId": null,
"cardType": null,
"nameOnCard": null,
"billAccountStatus": "Ready",
"tieredFeePriority": 0,
"paysForAccounts": null,
"payedByAccounts": null,
"payeeList": null,
"feeHierarchyItems": null,
"creditCardNumber": null,
"accountHistoryBillingId": null,
"byAllAccountId": null,
"quovoAccountId": null,
"plaidAccountId": null,
"akoyaAccountId": null,
"useFeeHierarchy": false
},
"portfolio": {
"clientId": 0,
"registrationId": 0,
"registrationName": null,
"managementStyle": null,
"fundFamily": null,
"accountStartValue": null,
"accountStartDate": null,
"isManaged": true,
"isActive": true,
"isSweepAccount": true,
"isSleeveAccount": false,
"isSleeveCustodialAccount": false,
"importKey": null,
"outsideId": null,
"managementStyleId": 24,
"fundFamilyId": 9,
"accountHistoryId": null,
"modelName": null,
"accountType": null,
"custodian": null,
"custodianId": 40,
"shareClass": null,
"shareClassId": 1,
"subAdvisor": null,
"subAdvisorId": null,
"downloadSource": null,
"downloadSourceId": null,
"provider": null,
"plan": null,
"businessLine": null,
"createdBy": null,
"createdDate": "0001-01-01T00:00:00-06:00",
"editedBy": null,
"editedDate": null,
"accountStatusId": 6,
"accountStatusDescription": null,
"isPositionOnlyRecon": false,
"eclipseFirmId": null,
"isUnfunded": false,
"isBundled": false,
"isExcludedFromFirmAssets": false,
"isDefaultFundFamily": false,
"custodialRepCode": null,
"isOps": false,
"lastPositionDate": null,
"inBalance": null
},
"modelingInfo": {
"modelGroupNumber": null,
"isOriginalSMCAccount": null,
"isTradingBlocked": false,
"isRegistrationDoNotTrade": false,
"tradingInstructions": null,
"downloadSource": null,
"createdDate": null,
"createdBy": null,
"editedDate": null,
"editedBy": null,
"isRebalance": true,
"isOutsideModel": false,
"minimumCashBalance": null,
"minimumCashBalanceType": "Dollars",
"replenishMinimumCash": false,
"fundList": null,
"autoRebalanceFrequency": "None",
"autoRebalanceMonth": 1,
"autoRebalanceDay": 1,
"dollarModelId": null,
"dollarModelAmount": 0,
"expireMinCash": null,
"expireMinCashType": null,
"expireMinCashDate": null,
"aggregateModel": null,
"isSleeveAccount": false,
"customAllocations": null
},
"notes": null,
"documents": null,
"compliance": {
"sloas": [],
"advCustodyTypeId": 0,
"is13FReportable": true,
"isAdvReportable": true,
"isAuaReportable": false,
"isDiscretionary": true,
"isWrapManaged": false,
"isWrapSponsored": false
},
"systematics": null,
"accountManagers": null,
"recurringAdjustments": null,
"generalAccounts": null,
"referralSchedules": null,
"billAccountSchedules": null,
"userDefinedFields": null,
"entityOptions": null,
"targetAllocations": null,
"productEquivalents": null,
"sma": null,
"bondTrade": null,
"compositeExclusions": null,
"futureCashflows": null,
"growthRates": null,
"goals": null,
"suitability": null,
"permissibleAggregateModels": null,
"astroTaxSchedules": null,
"astroAccount": null,
"taxRates": null,
"additionalClients": null
}
}
Here is code sample for adding a new account to an existing Household and registration with the required fields included along with the custodial account number and model being assigned.
{
"client": {
"id": 1238
},
"registration": {
"id": 2342
},
"account": {
"id": 0,
"name": "account test",
"number": null,
"billing": {
"custodialAccountNumber": "123-4567890",
"payMethodId": 1,
"feeScheduleID": 55,
"masterPayoutScheduleId": 1
},
"portfolio": {
"clientId": 1238,
"registrationId": 2342,
"registrationName": null,
"managementStyle": null,
"fundFamily": null,
"accountStartValue": 0,
"accountStartDate": null,
"isManaged": true,
"isActive": true,
"isSweepAccount": true,
"isSleeveAccount": false,
"isSleeveCustodialAccount": false,
"importKey": null,
"outsideId": null,
"managementStyleId": null,
"fundFamilyId": 45,
"accountHistoryId": null,
"modelName": null,
"accountType": null,
"custodian": null,
"custodianId": 3,
"shareClass": null,
"shareClassId": 1,
"subAdvisor": null,
"subAdvisorId": null,
"downloadSource": null,
"downloadSourceId": null,
"provider": null,
"plan": null,
"businessLine": null,
"createdBy": null,
"createdDate": null,
"editedBy": null,
"editedDate": null,
"accountStatusId": 1,
"accountStatusDescription": null,
"isPositionOnlyRecon": false,
"eclipseFirmId": null,
"isUnfunded": false,
"isBundled": false,
"isExcludedFromFirmAssets": false,
"isDefaultFundFamily": false,
"custodialRepCode": null,
"isOps": false,
"lastPositionDate": null,
"inBalance": null
},
"modelingInfo": {
"modelGroupNumber": null,
"isOriginalSMCAccount": null,
"isTradingBlocked": false,
"isRegistrationDoNotTrade": false,
"tradingInstructions": null,
"aggregateModel": {
"id": 235
}
},
"compliance": {
"is13FReportable": true,
"isAdvReportable": true
}
Process Tips or Controls: Most common issues are not having all the required fields correctly completed. Please be sure to update all name, firstname, lastname, typeID, FundFamilyID and custodianId fields. If you are using an existing household or registration, you can include the client.id or registration.id for the existing entities.
When including model assignment the ID will need to be included in the “ModelingInfo” section as such.
"modelingInfo": {
"aggregateModel": {
"id": 234
}}