Table of Contents

All Changes in EAV and 2sxc v15

Version 15

Changes in 2sxc 15.00 (2022-12-23)

  1. ✅ Improve logging
    1. ✅ Place it in an own library DLL for better reuse
    2. ✅ Create ICodeLog for improve logging in Razor and WebApi which ensures compatibility with existing code
    3. ✅ Improve automatic connecting logs with helpers so most Init(Log) become obsolete
  2. ✅ Update CsvHelper DLL to latest version
  3. ✅ Improve install-file names
  4. ✅ Update to Razor Blade 4
  5. Support Oqtane v4 with .net 7 - ATM Oqtane doesn't plan on going to .net 7
  6. ✅ Tutorial App
    1. ✅ Improve internal structure
    2. ✅ Change how to show code vs results - mostly use tabs
  7. ✅ Razor APIs and Services
    1. ✅ Improve ImageService to have an imgAltFallback on .Img(), .Picture() and .ImgOrPic()
    2. ✅ Improve ImageService to better respect multi-language crop-settings and labels
    3. ✅ Improve Page service Parameters.Set(...) to also allow bool, int etc. (not just strings)
    4. ✅ Create Kit.HtmlTag
    5. ✅ Create ITurnOnService and Kit.Page.TurnOn(...)
  8. ✅ Data Sources
    1. ✅ Improve ValuFilter Data Source to also allow Contains on numbers
  9. ✅ DB Clean-Up
    1. ✅ Remove SQL triggers which log XML data to DataTimeline which isn't used any more
    2. ✅ Remove XML column NewData in DataTimeline which isn't used any more
  10. ✅ Internal APIs
    1. ✅ Improve Settings/Resources Stack with various unit tests
    2. ✅ Improve Settings/Resources Stack to have internal quick access to deep objects using a path like "Images.Content.Width"
    3. ✅ Create API DependenciesBase to better handle log attachments to dependencies
  11. ✅ TinyMCE upgrade to v6
  12. ✅ Drop _ prefix requirement on cshtml files by protecting them in an another manner
    1. ✅ It's not needed on Oqtane, as the files are not accessible
    2. ✅ Only needed ATM on DNN because each file could be called from the browser directly
    3. ✅ Probably make sure all base classes refuse to render standalone
  13. ✅ Ability to use compressed GZIP data for DataTimeline (patrons)
    1. ✅ Technical features
    2. ✅ Toggle to turn on/off
  14. ✅ Rename internal .data folder to App_Data/system and similar as this folder will contain private data in future
  15. ✅ Feature to deploy a corporate license in an installation to auto-enable certain features on all sites
  16. ✅ Settings: Ability to augment the preset configuration / settings with custom overrides
  17. ✅ Provide Google Services API Keys (Maps, Translate) from backend to edit UI
  18. ✅ Ability to set own default GPS coordinates for when not set
    1. ✅ Ability to configure them in settings
    2. ✅ Provide Default maps coordinates from backend to Edit UI
  19. ✅ Ability to import apps from folder directly (patrons)
    1. ✅ Functionality
    2. ✅ Hints / Infos to user
    3. ⏳ Documentation
  20. ✅ Integration of Google Translate in the Edit UI
    1. ✅ Functionality for one field
    2. ✅ For many fields
    3. ✅ Configure so it only affects string fields
    4. ✅ Ability to disable auto-translate on certain fields - eg. name fields
    5. ✅ Ability to add custom API key
    6. ✅ Clear warning when using the demo key
    7. ✅ Make sure the license is respected and easy to spot
    8. ⏳ Documentation for this (how the fields are selected, how to activate, etc.)
  21. ✅ Release v15 before XMas

Breaking Changes in 2sxc 15.00


In summary we've made a lot of internal breaking changes. But for all normal users it will have no effect at all.

We believe it will only affect you in these scenarios:

  1. If you have a custom DataSource, you will need to make some minor changes and recompile them
  2. If you used special, non-public Logging APIs you would need to update your work
  3. If you used any undocumented APIs, you will need to check if everything still works

API Changes that may affect you

  1. DataSource base class was completely refactored
    see instructions
  2. Old static ToSic.Eav.DataSource was removed (deprecated since v13)
  3. Internal logging API ILog was completely refactored
    see instructions
  4. Internal object wrappers were completely refactored
    see instructions
  5. TinyMCE Upgrade to v6
  6. Database changes
  7. Minor API changes

Breaking Updates which probably don't affect anybody

  1. SQL changes - minor updates to the Database
  2. Internal APIs which were removed
    1. Static ToSic.Eav.Data.Builder.AttribBuilder.AddValue(...)

Changes in 2sxc 15.01 (2023-01-31)

  1. ✅ Export / Import
    1. ✅ Create export bundle configuration to mark content-types and entities for export together
    2. ✅ Create json bundle export system
    3. ✅ Create json bundle import system
    4. ✅ Extend the file-based data loader to also load bundles
    5. ✅ Change all pre-loaded data items to be in bundles
  2. ✅ New Auto-Installer with search, list-view etc.
  3. ✅ Remaining docs for Features released in v15.00
    1. ✅ Finish API and docs for Logging v15.01
    2. ✅ Ability to import apps from folder directly (patrons)
    3. ✅ Documentation for google translate (how the fields are selected, how to activate, etc.)
  4. ✅ Indicate premium/patron features in UI and explain what it is and how to get it
    1. ✅ Visual indicators on buttons
    2. ✅ Visual messages in certain places
    3. ✅ Details dialog to know more about the feature
    4. ✅ Public DB of the feature explaining it in more details, how to activate etc. on
  5. ✅ Licenses / Features
    1. ✅ Ability to license a specific feature only (for enterprise customers)
    2. ✅ Feature to generate enterprise license fingerprints for enterprise distribution
    3. ✅ Allow parts of the license to expire earlier (for evaluation purpose)
  6. ✅ Internal / Data Management
    1. ✅ Ability to retrieve Entities for App, parent-App, global-App etc. for certain settings-pickers
    2. ✅ System query to retrieve such entities (need for Wysiwyg-functionality)
  7. ✅ Oqtane: fix compatibility so it works in Oqtane 3.3+
  8. ✅ FIPS Compliance
    Note that the image resizer is not yet FIPS compliant, and it may take a while for it to become compliant
    1. ✅ Change Secure Data Service to be FIPS compliant
    2. ✅ Change System fingerprint to use FIPS compliant SHA256
  9. ✅ Internal - re-org ApiKeys for UI to be in a better place
  10. ✅ Enhance Page DataSource with community requests

Changes in 2sxc 15.02 (2023-02)

This was a quick release, no changes to report ATM, they will be reported in v15.03

also done:

  1. ✅ Upgrade to use 2sxc 15.01 for real-life testing
  2. ✅ Create blog on
  3. ✅ Publish Tutorial in
  4. ✅ CSP Training at DNN Summit
  5. ✅ Image Perfectionist Training at DNN Summit

Changes in 2sxc 15.03 (2023-02-21)

  1. ✅ APIs
    1. ✅ EntityId now has a OwnerId property
    2. Kit.Page.Activate(condition: bool, features: "...")
  2. ✅ move to .net 6 (and drop .net standard 2.0) - almost done, last tests
  3. ✅ Bugs
    1. ✅ RazorBlade json serialization
    2. ✅ Support for use on DNN 404 pages
    3. ✅ Date was off in date-picker
  4. ✅ FIPS compliance on encryption APIs
  5. ✅ DataSources
    1. ✅ Pages DataSource
      1. ✅ Improve Pages DataSource with LinkTarget
      2. ✅ Improve Pages DataSource with internal ability to configure what to get
      3. ✅ Improve Pages DataSource to have a UI to configure what to get - @2dm
    2. ✅ Users DataSource Massively improved - with Roles and configurable
    3. ✅ Roles DataSource improved
  6. ✅ Internal - Rework Getting-Started Server to be latest and greatest @2ro ... and more see

Breaking Changes in 2sxc 15.03


In summary we've made a lot of internal breaking changes. But for all normal users it will have no effect at all.

We believe it will only affect you in these scenarios:

  1. TODO

API Changes that may affect you

  1. An internal user property IUser.IsDesigner was renamed to IUser.IsSiteDeveloper
  2. An internal, deprecated user property IUser.IsAdmin was removed
  3. An internal, deprecated user property IUser.IsSuperUser was removed
  4. An internal property IUser.Guid was changed from Guid? to Guid
  5. The Users DataSource had a property called IncludeSystemAdmins which was changed from bool to string to allow for more options
  6. The Users DataSource had a property called RoleIds which returned a non-standard string-array. It has been removed, and the new Roles returns standard related entities.
  7. Removed static ToSic.Eav.Data.Build.Entity(...) method which was deprecated in v12

API Changes which should really not affect you

These are internal APIs which we changed to make everything more immutable. They should never have been in use outside of the internal code.

  1. Changed IValue.Languages from IList to IEnumerable and made it immutable
  2. Change IEntity.Attributes from Dictionary<string, IAttribute> to IImmutableDictionary<string, IAttribute> as a step to later make it immutable
  3. Removed some old, probably never used APIs on IAttribute<T> such as
    • IAttribute<T>[int[] languageIDs]
    • IAttribute<T>[string]
    • IAttribute<T>[string[]]
    • IAttribute[string[] languageKeys] - was always marked as private
  4. Changed the type of Attribute.Type from string to ValueTypes to make it more strong-typed
  5. Removed the property Attribute.ControlledType which previously contained the ValueType

Changes in 2sxc 15.04 (2023-03-22)

  1. ✅ Oqtane: Compatibility with Oqtane 15.04
  2. ✅ Formula improvements
    1. ✅ Get App or global settings for formulas
    2. ✅ Better support for promises
    3. ✅ Ability to set the value of another field
    4. ✅ Intellisense on Formulas
  3. ✅ Cdn remapping to other cdn like or custom CDN
    1. ✅ Ability to remap all cdn urls to a different url
    2. ✅ New template CDN on
    3. ✅ New template repo for anybody that wants to create their own CDN or host on their path
  4. New APIs for Data Sources finalized
    1. ✅ Public IDataFactory API
    2. ✅ Public IDataSourceFactory API
    3. ✅ Enhanced IDataSource API
    4. ✅ Prototype of live DataSources
  5. ✅ Make everything internal immutable
  6. ✅ Improve WYSIWYG
    1. ✅ Ability to select which "mode" the editor is in, affecting toolbars
    2. ✅ Allow selected mode to affect other things (like deny image-drop if in text-mode)
    3. ✅ Sections to better align images
    4. ✅ Use classes to determine size instead of styles
    5. ✅ WYSIWYG Images which auto-resize on the server based on size (eg 1/2 of the screen)
  7. ✅ New Data Sources and System Queries
    1. ✅ New Data Source Scopes
    2. ✅ New Query Scopes
    3. ✅ New Data Source MetadataTargetTypes
    4. ✅ New Query MetadataTargetTypes
    5. ✅ New DataSource Licenses - with state
    6. ✅ New Query Licenses
    7. ✅ New DataSource Features - with state
    8. ✅ New Query Features
    9. ✅ New DataSource Sites
    10. ✅ New Query Sites
    11. ✅ Improve data sources for Pages
  8. ✅ Query Improvements
    1. ✅ Allow edit/new to be done in a query-selector
    2. ✅ Get query to know if entity can be edited (based on AppId)
    3. ✅ We've renamed the system queries to have a much simpler name such as System.Sites which we'll make available to public use soon.
    4. ✅ New LookUp for Settings- and Resources-Stack - to use Settings and Resources
    5. ✅ Change internal key for Settings to MyConfiguration to avoid naming conflicts (breaking but probably no impact)
  9. Custom DataSources - breaking
    1. ✅ New IDataFactory API
    2. ✅ New RawEntity and IRawEntity API
    3. ✅ New API for data sources to make data generation easier
    4. ✅ Improved custom DataSources API
    5. ✅ New base class CustomDataSourceLight
    6. ✅ New base class CustomDataSourceAdvanced
    7. ✅ Error handling is now simpler / more standardized
  10. ✅ Jewels
    1. CmsContext.View now has a Path, PathShared, PhysicalPath and PhysicalPathShared property
    2. Page.Activate(...) now has a condition: true parameter which lets you only activate a feature if a condition is met
    3. Page.Parameters has new Get(name) and Get<type>(name) and Get(name, fallback: 7) APIs to make it easier to work with url parameters
  11. ✅ The Toolbar now has a new Info button which is used to show an info-bubble to the user or provide a help-link to somewhere. You'll soon see this in our standard apps to inform users about special cases such as "why the toolbar isn't available on demo-data"
  12. ✅ Bugs fixes
    1. ✅ 2sxc in DNN Skins on 404 pages
    2. ✅ Issue with Mobius Forms in v15.03

Breaking Changes in 2sxc 15.06


In summary we've made a lot of internal breaking changes. But for all normal users it will have no effect at all.

We believe it will only affect you in these scenarios:

  1. TODO

API Changes that may affect you on IEntity

These were internal APIs which were not publicly documented, but may have been used by some developers.

  1. IEntity.GetDraft() was removed to ensure the entity is immutable
  2. IEntity.GetPublished() was removed to ensure the entity is immutable

Note: GetDraft() and GetPublished() are still available on DynamicEntity in Razor and WebApi. They were only removed on IEntity.

Renamed DataSources

These data sources had uncommon names, and were renamed to be more consistent. We believe that they were only used in VisualQuery and not in code, so it should not affect you.

  1. CsvDataSource is now Csv
  2. SerializationConfiguration is now Serialization