Last update: Download PDF Edit

These are the release notes for the Model SDK version 2.


Impact Description
None. Fixed several problems with moving elements around between containers.


Impact Description
None Added support for Mendix 6.10.0 (and, and updated PageTemplates for MM 6.9.0.
None Moving an element to a non-listy property of a new parent element (e.g. to widget of a DivContainer) has been fixed.


Impact Description
Low Fixed metaModelVersion in AbstractModel to actually contain meta model version instead of Mendix product version (which is now stored in mxVersionForModel).
None Added checks for Page name validation (syntax + uniqueness); includes fixes to MxCheck.
None Fixed order of meta model versions mentioned in documentation and error messages.
None Updated links to reference the updated documentation site.


Impact Description
None Added support for Mendix 6.9.0.
None/Fix From this release on but retro-actively for all Mendix model versions, the microflowCall property of an MicroflowCallAction element is required instead of optional


Impact Description
None Support for Mendix 6.7.1 and 6.8.0.
None/Fix Prevent exceptions being thrown while deep copying model content with empty by-name references (which is a model inconsistency).


Note that Model SDK 2.6.1 and 2.6.2 have been skipped (and unpublished from NPM) because installing through NPM failed.

Impact Description
Fix Fixed Model SDK for published mendixmodelsdk NPM package missing dist/ and failing on npm install.
None Add support -that’s only accessible for trusted backend clients!- for providing a project-to-working copy mapping, locking/unlocking working copies and extra meta data regarding merge requests.
None Widened a parameter type in internal interfaces and classes to fix a problem with using the Model SDK in a Safari browser.
None Refactored MxCheck expression AST hierarchy.
None The Deploy API now returns an additional field startedFullDeployment which is false if the app was fast-deployed (and completed now), or true if a full deployment was needed and further status of the app can be polled through deployStatus calls.
None Exposed mergeState in the working copy meta data. Added loadWorkingCopyMetaData to SDK client to obtain it’s meta info without opening it. Exposed Version utility class.
None Fixed/extended SDK documentation for the sortIndex attribute of Module. (Ticket #466184)
None Replaced use of Grunt build system with npm.


Impact Description
None Support for Mx6.7.0.


Impact Description
Low  getFilePaths has been deprecated and renamed to getFiles.
Low Improved the typings of some (internal) APIs.
None Added support for Mendix 6.6.0.
None getFilePaths accepts an option objects which can define format (either zip or json), filter (glob pattern) and path (output filename if format is zip).
None Output filename is no longer mandatory for getFile / getFiles / exportMpk. If not provided, raw response is provided in the callback instead.
None Support for forcing full deployment. Deploying a working copy is functionality that’s not accessible to regular Model SDK users (i.e. non-trusted backends), so no impact.
None Fixed a bug with delete deltas not being sent while they should - this e.g. caused 2 translations to be created for the title text of a new page, with the translations having the same language code.
None More (complete) support for running model checks from the SDK: corrected implementation of check level groups, renamed hasPrefix standard library method for expressions (checks and queries) to startsWith.


Impact Description
None Support for Mendix 6.5.1.
None Exposed facilities for running consistency checks on models.


Impact Description
Low Added support for Mendix 6.5.0.


Impact Description
Medium Upgraded to TypeScript 1.8.x because of using new language features which are incompatible with TS 1.6.y, so you’ll have to upgrade to TS 1.8.x (which is backward compatible) as well.
Low Added support for Mendix 6.4.1.
Low It is now possible to deep clone elements by using element.deepCopy().
Low serializeToJs no longer crashes when it encounters deleted attributes.
Low Added publicReadOnly property for working copies.
Low Added support for retrieving overviews of all the working copies that user is member of.

SDK version 2.2.0 and 2.2.1 were unpublished because they were published in a broken state.


Impact Description
Minor Added support for Mendix 6.4.0
Low Working copies that are connected to sprintr projects can now be deployed and their runtime status can be requested
Low Unit-loading now has an extra optional forceRefresh option. If set, it will then bypass the Mendix MOdel SDK cache, and get the fresh unit straight from the source/server.
Minor All classes that could be useful for reflection on the model are now exposed through mendixmodelsdk, so imports from mendixmodelsdk/dist/sdk/internal/... should no longer be needed.
Minor Private members (starting with an underscore _) where not available in the docs but where available in the public typings and therefor in the IDE’s. This has been fixed. It should not ever be necessary to ever access these members. But if you did access them, you now need to access the object to any first before the typechecker allows you to access these members. The method allProperties() is now available on all structures for reflection purposes.


This release introduces a number of breaking changes in the SDK’s API, so because of semantic versioning we need to up the major version.

story# impact description
612773 High The mechanics of model elements being contained has been reworked: see below for more details.
634662 Low The toPlainJson method on elements and units has been renamed to toJSON, because e.g. the Chrome Developer Tools understand this to produce nice, human-readably representations of such objects. Rename all usages of toPlainJson to toJSON to fix your code.
639825 Low Broken by-name references are automatically fixed when a target is added to the model again.
637545 None Minor internal modifications for upcoming Mendix version 6.3.0.
633932 None Added support for long-lived working copies (that are not deleted after 24 hours) to SDK. Note that this is currently not available to non-trusted backends!
620108 None Removed exported interface IObservable from an internal namespace and replaced its use by the one from the MObservable library.
631960 None Added support for checking deployment status.
623906 None Added support for deploying from the SDK. Note that this is currently not supported on non-trusted backends!

The following breaking changes are made per 612773 and as a result of new insights on interference between containment and versioning/history of the Mendix modelling language. This interference leads to elements having different kinds of containment throughout their history. In turn, this necessitated us to make some fundamental changes to avoid having to have breaking changes in the future.

  • The container property is not strictly typed anymore; e.g., domainmodels.Attribute.container is not of type Entity anymore but of a general Container type.
  • Instead, containerAs<T> properties of type T are introduced on all elements. This property returns the instance of T which contains the element or throws if it’s not contained by an instance of T. To avoid those exceptions, use container together with instanceof-guards.
  • In case an element is contained by multiple properties (i.e., more than 1), createIn<T>Under<P> methods are generated which creates a new element in a given instance of T under property P. Several previously-existing createIn methods have been replaced by a createIn<T>Under<P> method, where these createIn methods considered only 1 containing property.
  • Elements that are contained by one property in at least one version will have a createIn method that works as expected for those versions and throws for other versions.
  • Elements that are always (i.e., in all versions) contained by properties that are derived, will not have any createIn... methods.

Dependent code can be easily fixed by using the containerAs<T> property instead of the container property, and (in a few specific cases) by using a createIn<T>Under<P> method instead of the createIn method.