Changelog 2018

December 2018

New Features

Query Projections

  • Added QueryExtensions.ToProjection

  • Better query projection support

Configuration

  • Use DbConfiguration for VidyanoDbContext

  • Always use named connection string

Fixes

  • Fixed issue #237

  • Fixed issue #218

  • Ignore various WebSocket exceptions

Maintenance

  • Made ApiArgs.Version writeable

  • Don't use ApiController.Request property

  • AI improvements

  • GroupingInfoArgs comment change

  • Updated DocumentFormat.OpenXml (reverted to 2.7.2 for compatibility)

  • Updated Newtonsoft.Json to 12.0.1

  • Updated NuGet packages

  • Builder changes

November 2018

New Features

Performance Optimizations

  • Optimized POA constructor

  • Optimized BulkConstructPersistentObjectAsync

  • Optimized IncludeFilters logic

  • Optimized IsAllowed checking

  • Performance improvements throughout

User Communication

  • Added SendData to User for sending data over websockets

  • Tweaked IUser.SendData to provide more information

Loading Strategy

  • Better LoadingStrategy.IncludeReferences handling

  • Expose LoadEntityByObjectIdArgs.Included as ISet

Settings

  • Added Advanced.IsSettingValueValid

  • Use Setting.DataType

Fixes

  • Fixed issue #226

  • Fixed issue #233

  • Fixed issue #234

  • Fixed issue with impersonated user not having enough viAudit rights

  • Fixed NRE when Sorting on reference property with invalid DisplayAttribute

  • Fixed issue when saving new DataType

Maintenance

  • Added ITargetContext interface

  • Profile precision changed to 0.01ms

  • Made PO.GetDisplayAttributeValue synchronous

  • Extra profiling info during different Construct phases of PO

  • Skip logic faster for attributes that aren't used anyway

  • GetGroupingInfo hook

  • Split GetObjectAsync/GetObjects

  • Also update AI operation name for GetPO/GetQuery during exception

  • Set empty Actions array for LightConstruct Query

  • Also flag notification as read when archiving

  • Ensure POActions are disposed

  • Ensure we copy data from AggregateException when logging exception

  • Chart tweaks

  • Also log method that was used for a failed request

  • Strip zero width spaces from user names

  • HandleUnknownWebsocketMessage hook

  • Show extra groups that aren't in the security.json file

  • Force ExportToCsv to use BOM

  • Obsoletes clean up

  • Ignore I/O exception from WebSocketException

  • Added Manager.GetLogsSince

October 2018

New Features

Loading Strategy

  • Added PO.LoadingStrategy

  • Cache LoadingStrategy logic

Query Features

  • Added POA.OptionalColumn

  • Added IQueryable.FilterByObjectId

Advanced Features

  • Added Advanced.LoadEntityByObjectId

  • Added Manager.HasRepositoryConnection

Fixes

  • Fixed issue #220

  • Fixed issue with circular PO reference

  • Only send values for columns that are defined after QueryExecuted logic

Maintenance

  • Ignore ReplaceSensitiveUrlPart if Uri is empty

  • Optimized Include path for DbQuery/ObjectQuery

  • Saml2.0 tweaks

September 2018

New Features

Audit System (vi-audit)

  • Added vi-audit functionality

  • Added dummy Placeholder system PO

  • Tweaked vi-audit to use Placeholder PO

  • Handle empty ObjectId for viAudit

  • Allow adding of viAudit UserRight

Job Scheduling

  • Made JobSchedules a system setting

  • Fixed RepositorySynchronizer to fix non-system setting

SAML 2.0

  • Added hooks for Saml2.0 processing

  • Detect ScimHandler implementation

Fixes

  • Fixed issue with new RepeatingJob not triggering

  • Fixed issue with impersonated user not having enough viAudit rights

  • Always clean up UpdatingMetadata flag

  • Persist changed attributes after unchanged

Maintenance

  • Set Import PO as OpenInEdit

  • Profile CreateUserSession creation

  • Replace LogVerboseData's authToken with expiration info

  • Tweaked Height for LogVerboseData Data attr

  • Use C# 7.2

August 2018

New Features

Cache Updates

  • RepositoryVersion V60 - CacheUpdates changes

  • Fixed CacheUpdate issues

SCIM Extensions

  • Added custom user schema support

  • Fixed filter issues

Authentication

  • Added AuthenticatorService.HandleUnknownAuthenticate

Fixes

  • Fixed issue when saving readonly cache when model load autofixes

  • SelectInPlace threading issue

  • Fixed cacheupdate after sync

  • Fallback to default sorting when sort fails

  • Fixed issue with custom AddReference action needing Edit rights

  • Don't reuse ObjectContext for DbQueries

Maintenance

  • Reuse original context for DbQueries

  • ReSharper speller dictionary

  • Added test code for working with interfaces as TContext

  • Updated docs

  • Changed logic for creating new context in POActions/AsyncCustomAction

  • Added ActionLabels docs

  • Also show non-database SqlErrors to end-users

  • Show error when viRestartApp failed

  • Don't use ReadContext when executing Vidyano queries

  • Removed duplicate right

  • Diagnostics: Handle case where GenerateMessage throws a ValidationException

  • Added WebsiteArgs.Redirect method

  • Enabled applicationInitialization

July 2018

New Features

Async Custom Actions

  • Added AsyncCustomAction

  • Added PO.DialogSaveAction

Hashids

  • Fixed entropy issue when using Hashids

  • Hashids changes

Performance

  • Performance optimizations

  • Use CompiledGenericAccessor for distincts

ProjectionStringLength

  • Added ProjectionStringLengthAttribute (#208)

  • ProjectionStringLength use cases

Fixes

  • Fixed issue #195

  • Fixed issue #196

  • Fixed issue #194

  • Fixed issue #198

  • Fixed issue #199

  • Fixed issue #202

  • Fixed issue #204

  • Fixed issue #205

  • Fixed issue for detecting 4.7.1, added detection for 4.7.2

  • Fixed model load for invalid query columns

  • Fixed issue with handling PUT request (SCIM)

  • Fixed issue with caching during QueryResultItem reflection

  • Fixed caching issue logic on QueryResultItem property

  • Don't show stack traces to end-users

Maintenance

  • Added Vidyano.AuthTokenExpirationDevMultiplier appSetting

  • Added Reload/SessionLost message use DefaultTranslations for new message

  • Cache vulcanized request for 5min on Global.IsReadOnly

  • Redirect to Web2 CDN by default instead of proxying the requests

  • Replace all web2/* imports (except vulcanize) with direct cdn links

  • SqlDependency logging and cleanup

  • Don't use JsonPoolConvert for VisualStudioIntegration

  • Use WebsiteRoot in docs

  • Made System.Buffers usage opt-in

  • Ignore some WebSocket related exceptions

  • Invalid usage on ReportService when System.Buffers is not available

  • Added JsonPoolConvert.DeserializeObject

  • SCIM: allow PATCH/PUT user.Name

  • Missing notification duration in some methods as parameter

  • TODO cleanup

  • Handle duplicate patch import, ignoring applied change

  • Updated grouping docs

  • Added MaybeArrayPool

June 2018

New Features

User Notifications

  • UserNotification changes and improvements

  • Support AccountSAS for AzureStorageConnector

Application Insights

  • ApplicationInsights integration

  • AI suffix for Api/GetReport

  • AI opt-out

Web2 Master Support

  • Added Web2 master support

  • Web2 CDN/Master caching/fallback logic (#192)

SCIM Completeness

  • SCIM extensions for completer API

  • Expose more information on Group members

Fixes

  • Fixed issue #187

  • Fixed issue #186

  • Fixed issue #191

  • Fixed issue #193

  • Fixed issue when getting SAS for blobName with special characters

  • Don't allow groups for Manager.DeleteUser

Maintenance

  • Refactored WebController.Api method to CustomApiController.Handle

  • Expose ExecuteAction parameters on ChartArgs

  • Allow ProjectedType for view entities

  • Renamed AzureAD to SAML2

  • Skip "EntityFramework: " prefix for generic log-id message

  • Make sure we update the cache when verifying authToken

  • Skip total/count/chart for Report/Excel/Word

  • Don't log GlobalSearch parent as IsSystem entry

  • Fixed issue with Web2 version setting not allowing http anymore

  • Correctly suggest custom query methods

  • Allow Search parameter for QueryFilter.RefreshColumn

  • Added helpers to replace sensitive url information

  • AI: ExecuteAction operation suffix should be set sooner

  • Added missing references in default new Vidyano project

  • WIP #179

  • Fixed Add menu not working when opening solution directly #179

  • Made Builder compatible again with VS2015

  • Updated Azure Blob Service Rest API version

  • Always allow TLS 1.1 and 1.2

  • Improved Web2Cdn speed

  • Set parent IsNew/ObjectId before calling OnConstruct for POAWR

  • Removed version override support on web2 endpoint

  • Add logging information to ExecuteQuery when an exception is thrown

May 2018

New Features

User Notifications & Jobs (#177)

  • User notifications server side + Jobs

  • Extra user notifications communication

  • WebSocket updates

Short/Hash IDs

  • Added ShortIds

  • Added UnhashShortId extension method

  • Renamed ShortObjectId to HashObjectId

  • More methods to work with short ids (for instant search)

Builder Features

  • Expose POActions.CheckDetailRules in reference implementation

  • Added ServiceWork flag for Manager.Environment

Fixes

  • Fixed issue #180

  • Always show DisableTwoFactor for users with Two-factor authentication

  • Return false instead of exception when ValidateAuthToken is called with empty userName

  • Fixed projected type check

Maintenance

  • Removed obsolete MigrationHelpers methods

  • Firefox screen capture

  • Filter UserNotification query

  • Expose Query.GroupedBy

  • Updated security docs

  • Cache DynamicBase referenced type lookup

  • Use ProjectedType iso ReferencedType attribute

  • Added hook to handle custom path for patch user replace operation

  • Show New feedback as dialog

  • Try to use browser acceptlanguage for Sign in screen

  • Don't log ConnectWebSocket in verbose logs

  • Duplicate TS definition

  • Added FolderStorageProvider class

April 2018

New Features

Authentication

  • Added AuthenticatorService.GetCredentialRedirectUri

  • Added CredentialTypeArgs.RedirectTo

  • Added Manager.UserCultureInfo

  • Added UnableToLoadEntityException

Builder

  • Added IBuilder.GetPO/GetQ

Sign-in Experience

  • Extra messages for sign-in experience

  • Updated messages for sign-in experience

  • Use args for GetCredentialType call

Fixes

  • Fixed issue #173

  • Fixed issue #176

  • Fixed HasGetCredentialType detection

  • Fixed AmbigiousException on viSearch

  • Fixed issue with #176 not displaying correctly on diagnostics page

  • Fixed Web2 issue with Owin hosting

  • Fixed issue with loadbalancer when trying to add missing settings

Maintenance

  • Basic retry logic when uploading to azure storage

  • Not-"stay signed in" gives authtoken for 12h by default

  • Expose HttpStatusCode in WebsiteArgs

  • Added SCIM User/Group filtering

  • Allow custom sql errors to be shown to end-users

  • Verify two-factor after checking password

  • Also filter SCIM get group

  • Perf change for cleaning up vidyano logs

  • Don't get computed attribute for IsNew if no explicit New visibility

  • Authenticate should update cache first

  • Don't double save new feedback

  • Test code prefer ACS for enabled user with no password

  • Security docs update

  • Use PO Type for UnableToLoadEntityException if label is empty

  • Allow custom label/objectId for UnableToLoadEntityException

  • Made POA.DisplaySum public getter

  • Include original stack trace for EF exceptions

  • Added LoadBalancer tester project

  • Updated ConfigureAwaitChecker.Analyzer dev dependency

  • Parallel model loading

March 2018

New Features

Computed Attributes

  • Added computed attributes

  • Don't get computed attribute for IsNew if no explicit New visibility

Authentication & Security

  • Added require change password

  • Added IUser HasPassword/RemovePassword/ResetPasswordNextLogin

  • Flag application as having sensitive data

  • Added LoginArgs.HasSensitive

  • Added support for online password blacklist check

  • Changed CheckOnlinePasswordBlacklist to opt-out

Swagger/OpenAPI

  • Added SwaggerUI dist

  • Handle Swagger Definitions (arguments/responses/...)

  • Swagger changes

API Features

  • Added CustomApiController.OnPreApi hook

  • Added Manager.LogEntry

Fixes

  • Fixed issue #156

  • Fixed issue #157

  • Fixed issue #161 - word repeating nested sections

  • Fixed issue #168

  • Fixed issue #171

  • Fixed issue #108

  • Fixed issue when verbose logger in database received invalid content

  • Fixed issue with ResetPasswordNextLogin not showing password attribute

  • Fixed issue when saving existing filter

  • Fixed issue with VPD on POAWR using enumerable source

Maintenance

  • Return AuthToken as header when received as header

  • WebException can have null Response

  • Fixed issue in .NET example in reports doc

  • Log auto-resume exceptions as Warning

  • Always return a HttpResponseMessage

  • Increase pwnedpasswords api timeout to 10s

  • Added extra reserved words

  • Default usings for [Schema]Web

  • Added extra help message when trying to save new virtual PO

  • Hide Advanced ACS methods

  • Validate actual password change for ResetPasswordNextLogin

  • Attach failed sign-in log to user when user exists

  • Consistent EOL for all files

  • Expose user parameter in Manager.Log

  • Ignore TaskCancelledException in Web2Cdn.CacheVersion

  • Minimize timing attacks against unknown users

  • Trim incoming userName

  • Throw SaveFailedException when OnSave fails

  • Handle ResetPasswordNextLogin for users without password

  • Throw SaveFailed in SaveExisting/SaveNew/SaveDetails

  • Ensure profiler has correct value when returning

  • Trim instant search input

  • Added POA.CanGroupBy

  • Don't expose sensitive database information

  • Use secure random string for salt

  • Allow HEAD /Poll

  • Added option to Include count for Query PUI

  • Added localNameSelector for PieChart

  • Handle = null difference between DynamicLambda and EntitySQL

  • Expose current application root uri

  • Don't expose SqlException to non-Administrator users

  • Hide Code attribute when disabling newly two-factor

  • Actually fixed #108

  • Handle sorting of TranslatedString on DB

  • Required SQL for generating dummy function

  • Also pass parent correctly when checking VPD

  • Manager.Current.User can be null

  • Skip MemberOf check if not cached

  • Move GetGroupingInfo to POActions

  • Fixed issue with ComputeTotalItems not working for PageSize=0

  • Fixed cast issue in GetGroupingInfo

  • Changed default expiration from 2/28 days to 1/2 days

  • Added ApiMethodAttribute.TryAuthentication

February 2018

New Features

Two-Factor Authentication

  • Added Group.TwoFactorRequired

  • Allow TwoFactorRequired on system groups

  • Don't show DisableTwoFactor for user that requires Two-factor

Sensitive Data

  • Is sensitive flag on attribute and query column

  • Flag Vidyano User attributes as sensitive

  • Add IsSensitive to sensitive system settings

  • Added PO.IsBreadcrumbSensitive

  • Flag application as having sensitive data

  • Also flag UserHostAddress and RequestId as sensitive

Reporting

  • Added support for tsv reports

  • Allow $where for reports (#150)

API & Security

  • Added viRemovePassword

  • Added Setting.Description

  • Added IExceptionService.LogWarning

  • Expose Path/Operation on SwaggerPathAttribute

  • Made POA.ToolTip settable

Fixes

  • Fixed issue when deleting attributes that would remove unrelated columns

  • Fixed issue with Feedback misusing IsReadOnly

  • Reset attributes when SaveDetails fails

  • Fixed POAWRBuilder not saving

  • Fixed issue #152

  • Fixed issue with OnNew flagging PO as IsBreadcrumbSensitive

  • Fixed ArgumentNullException when saving User without filling in username

Maintenance

  • Missing translations

  • ServicePointManager changes for Web2Cdn

  • Keep PO.IsReadOnly logic when New/BulkEdit/Delete is called directly

  • Some exceptions can be ignored

  • Expose WordprocessingDocument in Word.Generate V2

  • Ensure Manager is initialized for ACS/OAuth/Authenticate request

  • Hide System.Linq/System.Collections.Generic namespace in typediagnostics

  • Added notification on New User to inform to which group it will be added

  • Reverted back to EF 6.1.3

  • Added ObjectEx.GetSHA512

  • Fixed issue with OAuth/ACS calling Advanced.GetClientIpAddress twice

  • Added docs favicon

  • Fixed invalid seed SQL script

  • Profiler changes

  • Added Manager.OriginalUser

  • Keep OriginalUser when impersonating again

  • Fixed custom azure table queries

  • Log feedback as original user

  • Tweaked default builder classes

  • Updated Builder

  • Only need to add extension once

  • Synchronize changes

  • Log api method name in verbose logs

  • Remove user rights when deleting query

  • Use new height typehints

  • Show enum options for nullable enum

  • Prefer GetAwaiter().GetResult() instead of .Result

  • Removed unneeded LINQ call

  • Hide some obsolete classes/properties

  • Let Manager.GetUser return null for null or empty name

  • Handle images as binary

  • Updated security docs

  • Added support for online password blacklist check

  • Allow setting of response headers for index html request

  • Check all groups instead of only direct groups

  • Removed obsolete migrations

  • Support UserName/AuthToken in Authorization header

January 2018

New Features

API Security

  • Added ApiArgs.IsValidSignature helper method

  • Added diagnostics types info

Authentication

  • Sliding login rate limiting (#136)

Word Processing

  • Added Word.ConvertToPdf helper

SCIM

  • SCIM tweaks

  • Better SCIM support

Fixes

  • Fixed boolean logic for hidden attributes/detail queries

Maintenance

  • Updated release notes for 5.30.0

  • Copy-paste issue for SCIM doc

  • Set Default QueryLayoutMode to MasterDetail for new projects


Note: 2018 was a major year for security enhancements with two-factor authentication, sensitive data handling, online password blacklist checking, and the introduction of the vi-audit system. Performance optimizations and SCIM support were also key focuses.

Was this helpful?