Hi there, we have successfully migrated to Smartclient 14.0 but we are now trying to migrate to Smartclient 14.1 and having problems with our datasources. The client-side datasources seem to load fine but when we try to fetch data from our server, all of our datasources are giving this type of failure message:
You can see below we have even tried explicitly setting the operationBindings on all of our datasources (although that has never been necessary in the past) but we still get this message. Is there some new server-side configuration with 14.1 that doesn't exist in 14.0 that we are missing?
Here is how we are loading smartclient:
Here is how we are loading all of our datasources:
Final thing related to datasources, there is one datasource that is not loading in the Datasource tab in the smartclient dev console at all even though it seems to be loading just fine client side. That may be a clue so figured I would share this one too. This is how it is resolving client-side:
{
affectedRows:0,
data:"Operation type 'fetch' not supported by this DataSource (ZScore)",
invalidateCache:false,
isDSResponse:true,
queueStatus:-1,
status:-1
}
affectedRows:0,
data:"Operation type 'fetch' not supported by this DataSource (ZScore)",
invalidateCache:false,
isDSResponse:true,
queueStatus:-1,
status:-1
}
You can see below we have even tried explicitly setting the operationBindings on all of our datasources (although that has never been necessary in the past) but we still get this message. Is there some new server-side configuration with 14.1 that doesn't exist in 14.0 that we are missing?
Code:
<DataSource ID="ZScore" dataURL="smartclient.form" > <operationBindings> <operationBinding operationType="fetch"/> <operationBinding operationType="add"/> <operationBinding operationType="update"/> <operationBinding operationType="remove"/> </operationBindings> <fields> <field name="ZScore" type="float" title="" primaryKey="true" /> <field name="cumulativeProbability" type="float" title="" /> <field name="initialScreenLoad" type="boolean" hidden="true" /> <field name="clientComponentName" type="text" title="" hidden="true" /> <field name="clientComponentID" type="text" title="" hidden="true" /> </fields> </DataSource>
Here is how we are loading smartclient:
Code:
<isomorphic:loadISC skin="Graphite" isomorphicURI="${iso_version_dir}isomorphic/" includeModules="RichTextEditor,Drawing,Charts" />
Here is how we are loading all of our datasources:
Code:
<%@ taglib uri="/WEB-INF/iscTaglib.tld" prefix="isomorphic"%> <isomorphic:XML> <jsp:include page="/shared/ds/StatusOptions.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ATUser.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ATUsageStats.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ATUserRecover.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ATUserSettings.ds.xml"></jsp:include> <jsp:include page="/shared/ds/CustomFormula.ds.xml"></jsp:include> <jsp:include page="/shared/ds/CustomField.ds.xml"></jsp:include> <jsp:include page="/shared/ds/CustomFieldInstance.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ATUserViewState.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ATUserViewStateAssetDashboard.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ATUserAlert.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ATUserExternalApp.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ExternalAppSettings.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ExternalAppHistory.ds.xml"></jsp:include> <jsp:include page="/shared/ds/Fund.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundExternalApp.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundExternalAppData.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundAssetReport.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundAssetSector.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundAnalystAssessment.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundAssetExternalAppData.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundAssetExternalApp.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundSector.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundSectorGroup.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundScenarioTemplate.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundAssetEditable.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundAsset.ds.xml"></jsp:include> <jsp:include page="/shared/ds/Asset.ds.xml"></jsp:include> <jsp:include page="/shared/ds/Ticker.ds.xml"></jsp:include> <jsp:include page="/shared/ds/TickerExternalAppData.ds.xml"></jsp:include> <jsp:include page="/shared/ds/AssetFile.ds.xml"></jsp:include> <jsp:include page="/shared/ds/DepartmentFile.ds.xml"></jsp:include> <jsp:include page="/shared/ds/DepartmentSettings.ds.xml"></jsp:include> <jsp:include page="/shared/ds/AssetNotes.ds.xml"></jsp:include> <jsp:include page="/shared/ds/HAssetNotes.ds.xml"></jsp:include> <jsp:include page="/shared/ds/AssetScenario.ds.xml"></jsp:include> <jsp:include page="/shared/ds/FundAssetTradeHistory.ds.xml"></jsp:include> <jsp:include page="/shared/ds/AnalysisConfidenceOptions.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ExpectedReturnCalculationOptions.ds.xml"></jsp:include> <jsp:include page="/shared/ds/AnnualizeReturnOptions.ds.xml"></jsp:include> <jsp:include page="/shared/ds/SecurityMasterSymbolLookup.ds.xml"></jsp:include> <jsp:include page="/shared/ds/SecurityMasterOptionsLookup.ds.xml"></jsp:include> <jsp:include page="/shared/ds/SecurityType.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ReportQueue.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ReportResult.ds.xml"></jsp:include> <jsp:include page="/shared/ds/ZScore.ds.xml"></jsp:include> </isomorphic:XML>
Final thing related to datasources, there is one datasource that is not loading in the Datasource tab in the smartclient dev console at all even though it seems to be loading just fine client side. That may be a clue so figured I would share this one too. This is how it is resolving client-side:
Code:
isc.DataSource.create({ spring: "urn:jsptld:/WEB-INF/spring.tld", dataURL: "smartclient.form", primaryKeyFieldAT: "userID", operationBindings: [{ operationType: "fetch" }, { operationType: "add" }, { operationType: "update" }, { operationType: "remove" }], allowAdvancedCriteria: true, ID: "ATUser", fields: [{ name: "userID", type: "text", title: "\n\tEmail\n\t", validators: [], primaryKey: true, formatCellValue: function(value, record, rowNum, colNum) { return valueMapFindValueWithRawKey(isc.getKeyForValue(value, userValueMap), userValueMap); } }, { name: "firstName", type: "text", title: "\n\tFirst Name\n\t", validators: [] }, { name: "middleInitial", type: "text", title: "\n\tMI\n\t", validators: [] }, { name: "lastName", type: "text", title: "\n\tLast Name\n\t", validators: [] }, { name: "email", type: "text", title: "\n\tE-Mail\n\t", validators: [] }, { name: "phone", type: "text", title: "\n\tPhone\n\t", validators: [] }, { name: "phoneExt", type: "integer", title: "\n\tPhone Ext\n\t", validators: [] }, { name: "companyID", type: "integer", title: "\n\tCompany\n\t", validators: [] }, { name: "departmentID", type: "integer", title: "\n\tDepartment\n\t", validators: [] }, { name: "roleID", type: "integer", title: "\n\tRole\n\t", validators: [] }, { name: "fetchFromLocalAssetCachePreference", type: "boolean", title: "\n\tFetch from Local Cache\n\t", validators: [] }, { name: "disableAssetDashboardZoomPrompt", type: "boolean", title: "\n\tDisable Asset Dashboard Zoom Prompt\n\t", validators: [] }, { name: "assetDashboardPopOutEnabled", type: "boolean", title: "\n\tAsset in new window\n\t", validators: [] }, { name: "hoverDelayPreference", type: "integer", title: "\n\tHover Delay\n\t", validators: [] }, { name: "settingsChangePreference", type: "text", title: "\n\tSettings State\n\t", validators: [] }, { name: "userDescription", type: "text", validators: [] }, { name: "roleDescription", type: "text", validators: [] }, { name: "isFirstLogin", type: "boolean", validators: [] }, { name: "departmentConfigurationOverrides", hidden: true, title: "", validators: [] }, { name: "userConfigurationOverrides", hidden: true, title: "", validators: [] }, { name: "departmentLayoutOverrides", hidden: true, title: "", validators: [] }, { name: "userLayoutOverrides", hidden: true, title: "", validators: [] }, { name: "changePasswordNextLogin", type: "boolean", validators: [] }, { name: "atSupportUser", type: "boolean", validators: [] }, { name: "externalAppUser", type: "boolean", validators: [] }, { name: "enabled", type: "boolean", validators: [] }, { name: "noRoleUser", type: "boolean", validators: [] }, { name: "viewOnlyUser", type: "boolean", validators: [] }, { name: "viewStateFundAssetsGrid", hidden: true, title: "", validators: [] }, { name: "viewStateFundAssetsGridGroupBy", hidden: true, title: "", validators: [] }, { name: "viewStateFundAssetsGridSelectedView", hidden: true, title: "", validators: [] }, { name: "viewStateDefaultID", hidden: true, title: "", type: "integer", validators: [] }, { name: "viewStateFilterFundID", hidden: true, title: "", type: "integer", validators: [] }, { name: "viewStateFilterUserID", hidden: true, title: "", type: "integer", validators: [] }, { name: "viewStateFilterStatusID", hidden: true, title: "", type: "integer", validators: [] }, { name: "viewStateFundProfileCollapse", hidden: true, title: "", type: "boolean", validators: [] }, { name: "viewStateTickerSearch", hidden: true, title: "", validators: [] }, { name: "viewStateOperation", hidden: true, title: "", validators: [] }, { name: "viewStateSaved", hidden: true, title: "", type: "boolean", validators: [] }, { name: "version", hidden: true, title: "", type: "integer", validators: [] }, { name: "modified", type: "date", title: "\n\tUpdated<br>Date\n\t", validators: [] }, { name: "currentPassword", type: "text", title: "\n\tCurrent Password\n\t", validators: [] }, { name: "newPassword", type: "text", title: "\n\tNew Password\n\t", validators: [{ otherField: "confirmNewPassword", type: "custom", condition: function(field, validator, value) { var otherValue; if (field != null && field.form != null) { otherValue = field.form.getValue(validator.otherField); } else { return true; } return (value == otherValue); }, errorMessage: "\n \tYou must enter the same password for New Password and Confirm New Password.\n " }] }, { name: "confirmNewPassword", type: "text", title: "\n\tConfirm New Password\n\t", validators: [] }, { multiple: true, name: "atUserViewStatesJSON", displayOnly: "true", hidden: true, type: "ATUserViewState", validators: [] }, { multiple: true, name: "atUserAlertsJSON", displayOnly: "true", hidden: true, type: "ATUserAlert", validators: [] }, { multiple: true, name: "atUserExternalAppsJSON", displayOnly: "true", hidden: true, type: "ATUserExternalApp", validators: [] }, { name: "historicalDate", type: "datetime", title: "\n\tHistorical<br>Date\n\t", formatType: "date", validators: [], headerMenu: { title: "Description" } }, { validators: [], headerMenu: { title: "Description" }, name: "holdingsDate", type: "datetime", title: "\n\tHoldings<br>Date\n\t", formatType: "date", formatCellValue: function(value, record, rowNum, colNum) { if (value != null) { var today = new Date(); return formatDate(value, today); } } }, { name: "passwordRecoveryQuestion", type: "text", title: "\n\tPassword Recovery Question\n\t", validators: [{ max: 128.0, min: 1.0, type: "lengthRange" }] }, { name: "passwordRecoveryAnswer", type: "text", title: "\n\tPassword Recovery Answer\n\t", validators: [{ max: 128.0, min: 1.0, type: "lengthRange" }, { otherField: "confirmPasswordRecoveryAnswer", type: "custom", condition: function(field, validator, value) { var otherValue; if (field != null && field.form != null) { otherValue = field.form.getValue(validator.otherField); } else { return true; } if (value != null && otherValue != null) { return (value.toLowerCase() == otherValue.toLowerCase()); } else { return (value == otherValue); } }, errorMessage: "\n\t\t\t\tYou must enter the same answer for Password Recovery Answer and Confirm Password Recover Answer.\n\t\t\t" }] }, { name: "confirmPasswordRecoveryAnswer", type: "text", title: "\n\tConfirm Password Recovery Answer\n\t", validators: [{ max: 128.0, min: 1.0, type: "lengthRange" }] }, { name: "require2FA", type: "boolean", title: "\n\tUse Two Factor Authentication\n\t", validators: [] }, { name: "canChange2FA", hidden: true, type: "boolean", validators: [] }, { name: "key", type: "text", validators: [] }, { name: "qrcode", type: "image", validators: [] }, { name: "validationCode2FA", type: "text", validators: [] }, { name: "validate2FA", hidden: true, type: "boolean", validators: [] }, { name: "validated2FA", hidden: true, type: "boolean", validators: [] }, { name: "validatePasswordRecoverySecurityAnswer", hidden: true, type: "boolean", validators: [] }, { name: "validatedPasswordRecoverySecurityAnswer", hidden: true, type: "boolean", validators: [] }, { name: "settingsDialog", hidden: true, title: "", type: "boolean", validators: [] }, { name: "createdUserName", displayOnly: "true", type: "text", title: "\n\tCreated<br>By\n\t", validators: [] }, { name: "created", displayOnly: "true", type: "date", title: "\n\tCreated<br>Date\n\t", validators: [] }, { name: "initialScreenLoad", hidden: true, type: "boolean", validators: [] }, { name: "clientComponentName", hidden: true, title: "", type: "text", validators: [] }, { name: "clientComponentID", hidden: true, title: "", type: "text", validators: [] }, { name: "modifiedUserID", displayOnly: "true", hidden: true, title: "", type: "integer", validators: [] }, { name: "createdUserID", displayOnly: "true", hidden: true, title: "", type: "integer", validators: [] }] })
Comment