project cim1707 transferred into its own repository

Task references: CICA-679
Reason: overview, separation of components, releasing of single components
Rationale: Components were split from a central repository into individual repositories.
Side effects: none
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d0413d7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,16 @@
+**/*target/
+**/*.checkstyle
+**/*.classpath
+**/*.idea
+**/*.iml
+**/*.project
+**/*.settings/
+**/*.springBeans
+**/*.log
+**/*.versionsBackup
+**/*.fbExcludeFilterFile
+**/*.fbIncludeFilterFile
+**/launch.json
+bin/
+obj/
+.vs/
\ No newline at end of file
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Jenkinsfile
diff --git a/dev/pom.xml b/dev/pom.xml
new file mode 100644
index 0000000..b72dce8
--- /dev/null
+++ b/dev/pom.xml
@@ -0,0 +1,32 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.eclipse.openk.cim</groupId>
+  <artifactId>cim17v07</artifactId>
+  <version>0.0.1-SNAPSHOT</version>
+	  
+  <name>${project.groupId}.${project.artifactId}</name>  
+  
+  <parent>
+    <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+    <artifactId>build-parentpom-model</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <relativePath></relativePath>
+  </parent>
+
+  <build>
+    <finalName>${project.artifactId}-${project.version}</finalName>
+  </build>
+  
+  <dependencies>
+    <!-- org.eclipse.openk -->
+    <dependency>
+      <groupId>org.eclipse.openk</groupId>
+      <artifactId>common</artifactId>
+      <version>0.0.1-SNAPSHOT</version>
+    </dependency>
+  </dependencies>  
+
+</project>
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/Cim17v07.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/Cim17v07.java
new file mode 100644
index 0000000..ec917bc
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/Cim17v07.java
@@ -0,0 +1,36 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07;
+
+import org.eclipse.openk.common.dataexchange.cim.CimModelDefinition;
+import org.eclipse.openk.common.dataexchange.cim.CimVersion;
+
+/**
+ * The <i>CIM</i> model definition for with the version <code>cim17v07</code>.
+ * 
+ * @author 2017-01-01 Felix Korb
+ */
+public final class Cim17v07 extends CimModelDefinition {
+
+  // Constants
+  public static final CimVersion VERSION = new CimVersion(17, 7);
+
+  public static final Cim17v07 INSTANCE = new Cim17v07();
+
+  // Constructors
+  private Cim17v07() {
+
+    super(VERSION);
+  }
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/Cim17v07Defaults.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/Cim17v07Defaults.java
new file mode 100644
index 0000000..2729b65
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/Cim17v07Defaults.java
@@ -0,0 +1,42 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07;
+
+import java.net.URI;
+
+import org.eclipse.openk.common.dataexchange.xml.XmlNamespace;
+import org.eclipse.openk.common.net.NetUtilities;
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+
+/**
+ * Defines some {@link Cim17v07}-defaults.
+ * 
+ * @author 2018-06-29 Felix Korb
+ */
+public final class Cim17v07Defaults {
+
+  // Constants
+  /* namespaces */
+  public static final URI CIM_URI = NetUtilities.toURI("http://iec.ch/TC57/2008/CIM-schema-cim17");
+  public static final XmlNamespace CIM_NAMESPACE = new XmlNamespace(CIM_URI + "#", "cim");
+
+  // Constructors
+  @SuppressWarnings("checkstyle:javadocmethod")
+  @SuppressWarningsReason(reasons = Reason.Checkstyle_ConstructorWithoutParameter)
+  private Cim17v07Defaults() {
+
+    /* suppresses the instantiation! */
+  }
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/Description.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/Description.java
new file mode 100644
index 0000000..683b19d
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/Description.java
@@ -0,0 +1,68 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.ModelDescription;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Identity contain comon descriptive information.
+ * 
+ * @author BTC AG (generated); modelled by SELAOST1
+ * @version 1.0
+ * @created 10-Aug-2017 18:08:33
+ */
+@SuppressWarnings("javadoc")
+public class Description implements ICimEntity {
+
+  private String description;
+
+  public String getDescription() {
+
+    return description;
+  }
+
+  public void setDescription(final String value) {
+
+    this.description = value;
+  }
+
+  private String name;
+
+  public String getName() {
+
+    return name;
+  }
+
+  public void setName(final String value) {
+
+    this.name = value;
+  }
+
+  private Integer version;
+
+  public Integer getVersion() {
+
+    return version;
+  }
+
+  public void setVersion(final Integer value) {
+
+    this.version = value;
+  }
+
+  public Description() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/DescriptionID.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/DescriptionID.java
new file mode 100644
index 0000000..475be20
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/DescriptionID.java
@@ -0,0 +1,40 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.ModelDescription;
+
+/**
+ * @author BTC AG (generated); modelled by SELAOST1
+ * @version 1.0
+ * @created 10-Aug-2017 18:08:33
+ */
+@SuppressWarnings("javadoc")
+public class DescriptionID extends Description {
+
+  private String uri;
+
+  public String getUri() {
+
+    return uri;
+  }
+
+  public void setUri(final String value) {
+
+    this.uri = value;
+  }
+
+  public DescriptionID() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/DifferenceModel.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/DifferenceModel.java
new file mode 100644
index 0000000..ed33e02
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/DifferenceModel.java
@@ -0,0 +1,28 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.ModelDescription;
+
+/**
+ * @author BTC AG (generated); modelled by selaost1
+ * @version 1.0
+ * @created 10-Aug-2017 18:08:33
+ */
+@SuppressWarnings("javadoc")
+public class DifferenceModel extends Model {
+
+  public DifferenceModel() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/FullModel.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/FullModel.java
new file mode 100644
index 0000000..93b22d4
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/FullModel.java
@@ -0,0 +1,28 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.ModelDescription;
+
+/**
+ * @author BTC AG (generated); modelled by selaost1
+ * @version 1.0
+ * @created 10-Aug-2017 18:08:33
+ */
+@SuppressWarnings("javadoc")
+public class FullModel extends Model {
+
+  public FullModel() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/FullModelDocumentElement.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/FullModelDocumentElement.java
new file mode 100644
index 0000000..50d5fdf
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/FullModelDocumentElement.java
@@ -0,0 +1,29 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.ModelDescription;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * @author BTC AG (generated); modelled by selaost1
+ * @created 10-Aug-2017 18:08:34
+ */
+@SuppressWarnings("javadoc")
+public class FullModelDocumentElement implements ICimEntity {
+
+  public FullModelDocumentElement() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/Model.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/Model.java
new file mode 100644
index 0000000..72b9e66
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/Model.java
@@ -0,0 +1,172 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.ModelDescription;
+
+import java.net.URI;
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.openk.common.dataexchange.cim.Cim;
+import org.eclipse.openk.common.dataexchange.cim.ICimEntity;
+
+/**
+ * @author BTC AG (generated); modelled by selaost1
+ * @version 1.0
+ * @created 10-Aug-2017 18:08:34
+ */
+@SuppressWarnings("javadoc")
+public class Model implements ICimEntity {
+
+  @Cim(originalType = "DateTime")
+  private Date created;
+
+  public Date getCreated() {
+
+    return created;
+  }
+
+  public void setCreated(final Date value) {
+
+    this.created = value;
+  }
+
+  private String description;
+
+  public String getDescription() {
+
+    return description;
+  }
+
+  public void setDescription(final String value) {
+
+    this.description = value;
+  }
+
+  private URI modelingAuthoritySet;
+
+  public URI getModelingAuthoritySet() {
+
+    return modelingAuthoritySet;
+  }
+
+  public void setModelingAuthoritySet(final URI value) {
+
+    this.modelingAuthoritySet = value;
+  }
+
+  private URI profile;
+
+  public URI getProfile() {
+
+    return profile;
+  }
+
+  public void setProfile(final URI value) {
+
+    this.profile = value;
+  }
+
+  @Cim(originalType = "DateTime")
+  private Date scenarioTime;
+
+  public Date getScenarioTime() {
+
+    return scenarioTime;
+  }
+
+  public void setScenarioTime(final Date value) {
+
+    this.scenarioTime = value;
+  }
+
+  private String version;
+
+  public String getVersion() {
+
+    return version;
+  }
+
+  public void setVersion(final String value) {
+
+    this.version = value;
+  }
+
+  /**
+  * 
+  */
+  private List<Model> SupersededBy;
+
+  /**
+  * 
+  */
+  public List<Model> getSupersededBy() {
+
+    return SupersededBy;
+  }
+
+  /**
+  * 
+  */
+  public void setSupersededBy(final List<Model> value) {
+
+    this.SupersededBy = value;
+  }
+
+  /**
+  * 
+  */
+  private List<Model> Depending;
+
+  /**
+  * 
+  */
+  public List<Model> getDepending() {
+
+    return Depending;
+  }
+
+  /**
+  * 
+  */
+  public void setDepending(final List<Model> value) {
+
+    this.Depending = value;
+  }
+
+  public Model() {
+
+  }
+
+  /**
+    * 
+    */
+  private List<Model> DependentOn;
+
+  /**
+  * 
+  */
+  public List<Model> getDependentOn() {
+
+    return DependentOn;
+  }
+
+  /**
+  * 
+  */
+  public void setDependentOn(final List<Model> value) {
+
+    this.DependentOn = value;
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/ModelDescriptionCIMVersion.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/ModelDescriptionCIMVersion.java
new file mode 100644
index 0000000..d6d39be
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/ModelDescriptionCIMVersion.java
@@ -0,0 +1,56 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.ModelDescription;
+
+import java.util.Date;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * @author BTC AG (generated); modelled by 222206
+ * @version 1.0
+ * @created 10-Aug-2017 18:08:34
+ */
+@SuppressWarnings("javadoc")
+public class ModelDescriptionCIMVersion implements ICimEntity {
+
+  private Date date;
+
+  public Date getDate() {
+
+    return date;
+  }
+
+  public void setDate(final Date value) {
+
+    this.date = value;
+  }
+
+  private String version;
+
+  public String getVersion() {
+
+    return version;
+  }
+
+  public void setVersion(final String value) {
+
+    this.version = value;
+  }
+
+  public ModelDescriptionCIMVersion() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/Statements.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/Statements.java
new file mode 100644
index 0000000..5664c6a
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/ModelDescription/Statements.java
@@ -0,0 +1,28 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.ModelDescription;
+
+/**
+ * @author BTC AG (generated); modelled by selaost1
+ * @version 1.0
+ * @created 10-Aug-2017 18:08:34
+ */
+@SuppressWarnings("javadoc")
+public class Statements extends FullModelDocumentElement {
+
+  public Statements() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/PowerSystemProjectSchedule.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/PowerSystemProjectSchedule.java
new file mode 100644
index 0000000..35ad929
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/PowerSystemProjectSchedule.java
@@ -0,0 +1,156 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.PowerSystemProject;
+
+import java.util.Date;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * @author BTC AG (generated); modelled by SELAOST1
+ * @version 1.0
+ * @created 10-Aug-2017 18:08:34
+ */
+@SuppressWarnings("javadoc")
+public class PowerSystemProjectSchedule implements ICimEntity {
+
+  /**
+   * Actual date and time for when the project is commissioned and committed to the
+   * network model.
+   */
+  @Cim(originalType = "DateTime")
+  private Date actualEnd;
+
+  /**
+   * Actual date and time for when the project is commissioned and committed to the
+   * network model.
+   */
+  public Date getActualEnd() {
+
+    return actualEnd;
+  }
+
+  /**
+   * Actual date and time for when the project is commissioned and committed to the
+   * network model.
+   */
+  public void setActualEnd(final Date value) {
+
+    this.actualEnd = value;
+  }
+
+  /**
+   * Actual date and time for when the project is commissioned and committed to the
+   * network model.
+   */
+  @Cim(originalType = "DateTime")
+  private Date actualStart;
+
+  /**
+   * Actual date and time for when the project is commissioned and committed to the
+   * network model.
+   */
+  public Date getActualStart() {
+
+    return actualStart;
+  }
+
+  /**
+   * Actual date and time for when the project is commissioned and committed to the
+   * network model.
+   */
+  public void setActualStart(final Date value) {
+
+    this.actualStart = value;
+  }
+
+  /**
+   * Estimated date and time for when the project will be commissioned and committed
+   * to the network model.
+   */
+  @Cim(originalType = "DateTime")
+  private Date scheduledEnd;
+
+  /**
+   * Estimated date and time for when the project will be commissioned and committed
+   * to the network model.
+   */
+  public Date getScheduledEnd() {
+
+    return scheduledEnd;
+  }
+
+  /**
+   * Estimated date and time for when the project will be commissioned and committed
+   * to the network model.
+   */
+  public void setScheduledEnd(final Date value) {
+
+    this.scheduledEnd = value;
+  }
+
+  /**
+   * Estimated date and time for when the project will be commissioned and committed
+   * to the network model.
+   */
+  @Cim(originalType = "DateTime")
+  private Date scheduledStart;
+
+  /**
+   * Estimated date and time for when the project will be commissioned and committed
+   * to the network model.
+   */
+  public Date getScheduledStart() {
+
+    return scheduledStart;
+  }
+
+  /**
+   * Estimated date and time for when the project will be commissioned and committed
+   * to the network model.
+   */
+  public void setScheduledStart(final Date value) {
+
+    this.scheduledStart = value;
+  }
+
+  private ProjectStepStatusKind status;
+
+  public ProjectStepStatusKind getStatus() {
+
+    return status;
+  }
+
+  public void setStatus(final ProjectStepStatusKind value) {
+
+    this.status = value;
+  }
+
+  private StepKind stepType;
+
+  public StepKind getStepType() {
+
+    return stepType;
+  }
+
+  public void setStepType(final StepKind value) {
+
+    this.stepType = value;
+  }
+
+  public PowerSystemProjectSchedule() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/PowerSystemSubProject.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/PowerSystemSubProject.java
new file mode 100644
index 0000000..d6b7f9e
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/PowerSystemSubProject.java
@@ -0,0 +1,32 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.PowerSystemProject;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.InfIEC61970.InfPowerSystemProjects.PowerSystemProject;
+
+/**
+ * A collection of dependent projects.
+ * 
+ * @author BTC AG (generated); modelled by sveinols
+ * @version 1.0
+ * @created 10-Aug-2017 18:08:34
+ */
+@SuppressWarnings("javadoc")
+public class PowerSystemSubProject extends PowerSystemProject {
+
+  public PowerSystemSubProject() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/ProjectStep.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/ProjectStep.java
new file mode 100644
index 0000000..13ca2fa
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/ProjectStep.java
@@ -0,0 +1,159 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.PowerSystemProject;
+
+import java.util.Date;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * The ProjectSteps are ordered by the actualStart and actualEnds so that a
+ * dependent ProjectStep will have a actualStart after an actualEnd.
+ * 
+ * @author BTC AG (generated); modelled by selaost1
+ * @version 1.0
+ * @created 10-Aug-2017 18:08:34
+ */
+@SuppressWarnings("javadoc")
+public class ProjectStep implements ICimEntity {
+
+  /**
+   * Actual date and time for when the project is commissioned and committed to the
+   * network model.
+   */
+  @Cim(originalType = "DateTime")
+  private Date actualEnd;
+
+  /**
+   * Actual date and time for when the project is commissioned and committed to the
+   * network model.
+   */
+  public Date getActualEnd() {
+
+    return actualEnd;
+  }
+
+  /**
+   * Actual date and time for when the project is commissioned and committed to the
+   * network model.
+   */
+  public void setActualEnd(final Date value) {
+
+    this.actualEnd = value;
+  }
+
+  /**
+   * Actual date and time for when the project is commissioned and committed to the
+   * network model.
+   */
+  @Cim(originalType = "DateTime")
+  private Date actualStart;
+
+  /**
+   * Actual date and time for when the project is commissioned and committed to the
+   * network model.
+   */
+  public Date getActualStart() {
+
+    return actualStart;
+  }
+
+  /**
+   * Actual date and time for when the project is commissioned and committed to the
+   * network model.
+   */
+  public void setActualStart(final Date value) {
+
+    this.actualStart = value;
+  }
+
+  /**
+   * Estimated date and time for when the project will be commissioned and committed
+   * to the network model.
+   */
+  @Cim(originalType = "DateTime")
+  private Date scheduledEnd;
+
+  /**
+   * Estimated date and time for when the project will be commissioned and committed
+   * to the network model.
+   */
+  public Date getScheduledEnd() {
+
+    return scheduledEnd;
+  }
+
+  /**
+   * Estimated date and time for when the project will be commissioned and committed
+   * to the network model.
+   */
+  public void setScheduledEnd(final Date value) {
+
+    this.scheduledEnd = value;
+  }
+
+  /**
+   * Estimated date and time for when the project will be commissioned and committed
+   * to the network model.
+   */
+  @Cim(originalType = "DateTime")
+  private Date scheduledStart;
+
+  /**
+   * Estimated date and time for when the project will be commissioned and committed
+   * to the network model.
+   */
+  public Date getScheduledStart() {
+
+    return scheduledStart;
+  }
+
+  /**
+   * Estimated date and time for when the project will be commissioned and committed
+   * to the network model.
+   */
+  public void setScheduledStart(final Date value) {
+
+    this.scheduledStart = value;
+  }
+
+  private ProjectStepStatusKind status;
+
+  public ProjectStepStatusKind getStatus() {
+
+    return status;
+  }
+
+  public void setStatus(final ProjectStepStatusKind value) {
+
+    this.status = value;
+  }
+
+  private StepKind stepType;
+
+  public StepKind getStepType() {
+
+    return stepType;
+  }
+
+  public void setStepType(final StepKind value) {
+
+    this.stepType = value;
+  }
+
+  public ProjectStep() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/ProjectStepStatusKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/ProjectStepStatusKind.java
new file mode 100644
index 0000000..f06925c
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/ProjectStepStatusKind.java
@@ -0,0 +1,28 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.PowerSystemProject;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * @author BTC AG (generated); modelled by selaost1
+ * @version 1.0
+ * @created 10-Aug-2017 18:08:34
+ */
+public enum ProjectStepStatusKind implements ICimEntity {
+  cancelled,
+  inProgress,
+  inactive,
+  approved
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/StepKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/StepKind.java
new file mode 100644
index 0000000..341eabd
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/ModelMetaData/PowerSystemProject/StepKind.java
@@ -0,0 +1,47 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.ModelMetaData.PowerSystemProject;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * State of the project
+ * 
+ * @author BTC AG (generated); modelled by sveinols
+ * @version 1.0
+ * @created 10-Aug-2017 18:08:34
+ */
+public enum StepKind implements ICimEntity {
+  /**
+   * First phase investigation and planning.
+   */
+  planning,
+  /**
+   * Project is approved for realisation and the construction is starting, under
+   * construction or in the state of being realist.
+   */
+  @Cim(originalName = "design and construction")
+  design_and_construction,
+  revision,
+  /**
+   * The project is commissioned and added to the network model.
+   */
+  commissioning,
+  @Cim(originalName = "... list incomplete, more to come")
+  ____list_incomplete__more_to_come,
+  @Cim(originalName = "switch")
+  _switch,
+  @Cim(originalName = "class")
+  _class
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/BusbarSectionInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/BusbarSectionInfo.java
new file mode 100644
index 0000000..33d0e0a
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/BusbarSectionInfo.java
@@ -0,0 +1,76 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+
+/**
+ * Busbar section data.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:25
+ */
+@SuppressWarnings("javadoc")
+public class BusbarSectionInfo extends AssetInfo {
+
+  /**
+   * Rated current.
+   */
+  private CurrentFlow ratedCurrent;
+
+  /**
+   * Rated current.
+   */
+  public CurrentFlow getRatedCurrent() {
+
+    return ratedCurrent;
+  }
+
+  /**
+   * Rated current.
+   */
+  public void setRatedCurrent(final CurrentFlow value) {
+
+    this.ratedCurrent = value;
+  }
+
+  /**
+   * Rated voltage.
+   */
+  private Voltage ratedVoltage;
+
+  /**
+   * Rated voltage.
+   */
+  public Voltage getRatedVoltage() {
+
+    return ratedVoltage;
+  }
+
+  /**
+   * Rated voltage.
+   */
+  public void setRatedVoltage(final Voltage value) {
+
+    this.ratedVoltage = value;
+  }
+
+  public BusbarSectionInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/CableConstructionKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/CableConstructionKind.java
new file mode 100644
index 0000000..389089f
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/CableConstructionKind.java
@@ -0,0 +1,54 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of cable construction.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:26
+ */
+public enum CableConstructionKind implements ICimEntity {
+  /**
+   * Compacted cable.
+   */
+  compacted,
+  /**
+   * Compressed cable.
+   */
+  compressed,
+  /**
+   * Sector cable.
+   */
+  sector,
+  /**
+   * Segmental cable.
+   */
+  segmental,
+  /**
+   * Solid cable.
+   */
+  solid,
+  /**
+   * Stranded cable.
+   */
+  stranded,
+  /**
+   * Other kind of cable construction.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/CableInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/CableInfo.java
new file mode 100644
index 0000000..2898b17
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/CableInfo.java
@@ -0,0 +1,247 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Length;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Temperature;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Cable data.
+ * 
+ * @created 10-Aug-2017 18:09:26
+ */
+@SuppressWarnings("javadoc")
+public class CableInfo extends WireInfo {
+
+  /**
+   * Kind of construction of this cable.
+   */
+  private CableConstructionKind constructionKind;
+
+  /**
+   * Kind of construction of this cable.
+   */
+  public CableConstructionKind getConstructionKind() {
+
+    return constructionKind;
+  }
+
+  /**
+   * Kind of construction of this cable.
+   */
+  public void setConstructionKind(final CableConstructionKind value) {
+
+    this.constructionKind = value;
+  }
+
+  /**
+   * Diameter over the core, including any semi-con screen; should be the insulating
+   * layer's inside diameter.
+   */
+  private Length diameterOverCore;
+
+  /**
+   * Diameter over the core, including any semi-con screen; should be the insulating
+   * layer's inside diameter.
+   */
+  public Length getDiameterOverCore() {
+
+    return diameterOverCore;
+  }
+
+  /**
+   * Diameter over the core, including any semi-con screen; should be the insulating
+   * layer's inside diameter.
+   */
+  public void setDiameterOverCore(final Length value) {
+
+    this.diameterOverCore = value;
+  }
+
+  /**
+   * Diameter over the insulating layer, excluding outer screen.
+   */
+  private Length diameterOverInsulation;
+
+  /**
+   * Diameter over the insulating layer, excluding outer screen.
+   */
+  public Length getDiameterOverInsulation() {
+
+    return diameterOverInsulation;
+  }
+
+  /**
+   * Diameter over the insulating layer, excluding outer screen.
+   */
+  public void setDiameterOverInsulation(final Length value) {
+
+    this.diameterOverInsulation = value;
+  }
+
+  /**
+   * Diameter over the outermost jacketing layer.
+   */
+  private Length diameterOverJacket;
+
+  /**
+   * Diameter over the outermost jacketing layer.
+   */
+  public Length getDiameterOverJacket() {
+
+    return diameterOverJacket;
+  }
+
+  /**
+   * Diameter over the outermost jacketing layer.
+   */
+  public void setDiameterOverJacket(final Length value) {
+
+    this.diameterOverJacket = value;
+  }
+
+  /**
+   * Diameter over the outer screen; should be the shield's inside diameter.
+   */
+  private Length diameterOverScreen;
+
+  /**
+   * Diameter over the outer screen; should be the shield's inside diameter.
+   */
+  public Length getDiameterOverScreen() {
+
+    return diameterOverScreen;
+  }
+
+  /**
+   * Diameter over the outer screen; should be the shield's inside diameter.
+   */
+  public void setDiameterOverScreen(final Length value) {
+
+    this.diameterOverScreen = value;
+  }
+
+  /**
+   * True if wire strands are extruded in a way to fill the voids in the cable.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean isStrandFill;
+
+  /**
+   * True if wire strands are extruded in a way to fill the voids in the cable.
+   */
+  public Boolean isIsStrandFill() {
+
+    return isStrandFill;
+  }
+
+  /**
+   * True if wire strands are extruded in a way to fill the voids in the cable.
+   */
+  public void setIsStrandFill(final Boolean value) {
+
+    this.isStrandFill = value;
+  }
+
+  /**
+   * Maximum nominal design operating temperature.
+   */
+  private Temperature nominalTemperature;
+
+  /**
+   * Maximum nominal design operating temperature.
+   */
+  public Temperature getNominalTemperature() {
+
+    return nominalTemperature;
+  }
+
+  /**
+   * Maximum nominal design operating temperature.
+   */
+  public void setNominalTemperature(final Temperature value) {
+
+    this.nominalTemperature = value;
+  }
+
+  /**
+   * Kind of outer jacket of this cable.
+   */
+  private CableOuterJacketKind outerJacketKind;
+
+  /**
+   * Kind of outer jacket of this cable.
+   */
+  public CableOuterJacketKind getOuterJacketKind() {
+
+    return outerJacketKind;
+  }
+
+  /**
+   * Kind of outer jacket of this cable.
+   */
+  public void setOuterJacketKind(final CableOuterJacketKind value) {
+
+    this.outerJacketKind = value;
+  }
+
+  /**
+   * True if sheath / shield is used as a neutral (i.e., bonded).
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean sheathAsNeutral;
+
+  /**
+   * True if sheath / shield is used as a neutral (i.e., bonded).
+   */
+  public Boolean isSheathAsNeutral() {
+
+    return sheathAsNeutral;
+  }
+
+  /**
+   * True if sheath / shield is used as a neutral (i.e., bonded).
+   */
+  public void setSheathAsNeutral(final Boolean value) {
+
+    this.sheathAsNeutral = value;
+  }
+
+  /**
+   * Material of the shield.
+   */
+  private CableShieldMaterialKind shieldMaterial;
+
+  /**
+   * Material of the shield.
+   */
+  public CableShieldMaterialKind getShieldMaterial() {
+
+    return shieldMaterial;
+  }
+
+  /**
+   * Material of the shield.
+   */
+  public void setShieldMaterial(final CableShieldMaterialKind value) {
+
+    this.shieldMaterial = value;
+  }
+
+  public CableInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/CableOuterJacketKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/CableOuterJacketKind.java
new file mode 100644
index 0000000..846f41a
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/CableOuterJacketKind.java
@@ -0,0 +1,54 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of cable outer jacket.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:26
+ */
+public enum CableOuterJacketKind implements ICimEntity {
+  /**
+   * Cable has no outer jacket.
+   */
+  none,
+  /**
+   * Linear low density polyethylene cable outer jacket.
+   */
+  linearLowDensityPolyethylene,
+  /**
+   * PVC cable outer jacket.
+   */
+  pvc,
+  /**
+   * Polyethylene cable outer jacket.
+   */
+  polyethylene,
+  /**
+   * Insulating cable outer jacket.
+   */
+  insulating,
+  /**
+   * Semiconducting cable outer jacket.
+   */
+  semiconducting,
+  /**
+   * Pther kind of cable outer jacket.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/CableShieldMaterialKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/CableShieldMaterialKind.java
new file mode 100644
index 0000000..12817a7
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/CableShieldMaterialKind.java
@@ -0,0 +1,46 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of cable shield material.
+ * 
+ * @author BTC AG (generated); modelled by Tom
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:26
+ */
+public enum CableShieldMaterialKind implements ICimEntity {
+  /**
+   * Lead cable shield.
+   */
+  lead,
+  /**
+   * Copper cable shield.
+   */
+  copper,
+  /**
+   * Steel cable shield.
+   */
+  steel,
+  /**
+   * Aluminum cable shield.
+   */
+  aluminum,
+  /**
+   * Other kind of cable shield material.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/ConcentricNeutralCableInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/ConcentricNeutralCableInfo.java
new file mode 100644
index 0000000..8dc2233
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/ConcentricNeutralCableInfo.java
@@ -0,0 +1,138 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Length;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.ResistancePerLength;
+
+/**
+ * Concentric neutral cable data.
+ * 
+ * @author BTC AG (generated); modelled by Tom
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:31
+ */
+@SuppressWarnings("javadoc")
+public class ConcentricNeutralCableInfo extends CableInfo {
+
+  /**
+   * Diameter over the concentric neutral strands.
+   */
+  private Length diameterOverNeutral;
+
+  /**
+   * Diameter over the concentric neutral strands.
+   */
+  public Length getDiameterOverNeutral() {
+
+    return diameterOverNeutral;
+  }
+
+  /**
+   * Diameter over the concentric neutral strands.
+   */
+  public void setDiameterOverNeutral(final Length value) {
+
+    this.diameterOverNeutral = value;
+  }
+
+  /**
+   * Number of concentric neutral strands.
+   */
+  private Integer neutralStrandCount;
+
+  /**
+   * Number of concentric neutral strands.
+   */
+  public Integer getNeutralStrandCount() {
+
+    return neutralStrandCount;
+  }
+
+  /**
+   * Number of concentric neutral strands.
+   */
+  public void setNeutralStrandCount(final Integer value) {
+
+    this.neutralStrandCount = value;
+  }
+
+  /**
+   * Geometric mean radius of the neutral strand.
+   */
+  private Length neutralStrandGmr;
+
+  /**
+   * Geometric mean radius of the neutral strand.
+   */
+  public Length getNeutralStrandGmr() {
+
+    return neutralStrandGmr;
+  }
+
+  /**
+   * Geometric mean radius of the neutral strand.
+   */
+  public void setNeutralStrandGmr(final Length value) {
+
+    this.neutralStrandGmr = value;
+  }
+
+  /**
+   * Outside radius of the neutral strand.
+   */
+  private Length neutralStrandRadius;
+
+  /**
+   * Outside radius of the neutral strand.
+   */
+  public Length getNeutralStrandRadius() {
+
+    return neutralStrandRadius;
+  }
+
+  /**
+   * Outside radius of the neutral strand.
+   */
+  public void setNeutralStrandRadius(final Length value) {
+
+    this.neutralStrandRadius = value;
+  }
+
+  /**
+   * DC resistance per unit length of the neutral strand at 20 �C.
+   */
+  private ResistancePerLength neutralStrandRDC20;
+
+  /**
+   * DC resistance per unit length of the neutral strand at 20 �C.
+   */
+  public ResistancePerLength getNeutralStrandRDC20() {
+
+    return neutralStrandRDC20;
+  }
+
+  /**
+   * DC resistance per unit length of the neutral strand at 20 �C.
+   */
+  public void setNeutralStrandRDC20(final ResistancePerLength value) {
+
+    this.neutralStrandRDC20 = value;
+  }
+
+  public ConcentricNeutralCableInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/NoLoadTest.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/NoLoadTest.java
new file mode 100644
index 0000000..c324029
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/NoLoadTest.java
@@ -0,0 +1,166 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.KiloActivePower;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.PerCent;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+
+/**
+ * No-load test results determine core admittance parameters. They include
+ * exciting current and core loss measurements from applying voltage to one
+ * winding. The excitation may be positive sequence or zero sequence. The test may
+ * be repeated at different voltages to measure saturation.
+ * 
+ * @author BTC AG (generated); modelled by Tom
+ * @version 1.0
+ * @created 10-Aug-2017 18:10:58
+ */
+@SuppressWarnings("javadoc")
+public class NoLoadTest extends TransformerTest {
+
+  /**
+   * Voltage applied to the winding (end) during test.
+   */
+  private Voltage energisedEndVoltage;
+
+  /**
+   * Voltage applied to the winding (end) during test.
+   */
+  public Voltage getEnergisedEndVoltage() {
+
+    return energisedEndVoltage;
+  }
+
+  /**
+   * Voltage applied to the winding (end) during test.
+   */
+  public void setEnergisedEndVoltage(final Voltage value) {
+
+    this.energisedEndVoltage = value;
+  }
+
+  /**
+   * Exciting current measured from a positive-sequence or single-phase excitation
+   * test.
+   */
+  private PerCent excitingCurrent;
+
+  /**
+   * Exciting current measured from a positive-sequence or single-phase excitation
+   * test.
+   */
+  public PerCent getExcitingCurrent() {
+
+    return excitingCurrent;
+  }
+
+  /**
+   * Exciting current measured from a positive-sequence or single-phase excitation
+   * test.
+   */
+  public void setExcitingCurrent(final PerCent value) {
+
+    this.excitingCurrent = value;
+  }
+
+  /**
+   * Exciting current measured from a zero-sequence open-circuit excitation test.
+   */
+  private PerCent excitingCurrentZero;
+
+  /**
+   * Exciting current measured from a zero-sequence open-circuit excitation test.
+   */
+  public PerCent getExcitingCurrentZero() {
+
+    return excitingCurrentZero;
+  }
+
+  /**
+   * Exciting current measured from a zero-sequence open-circuit excitation test.
+   */
+  public void setExcitingCurrentZero(final PerCent value) {
+
+    this.excitingCurrentZero = value;
+  }
+
+  /**
+   * Losses measured from a positive-sequence or single-phase excitation test.
+   */
+  private KiloActivePower loss;
+
+  /**
+   * Losses measured from a positive-sequence or single-phase excitation test.
+   */
+  public KiloActivePower getLoss() {
+
+    return loss;
+  }
+
+  /**
+   * Losses measured from a positive-sequence or single-phase excitation test.
+   */
+  public void setLoss(final KiloActivePower value) {
+
+    this.loss = value;
+  }
+
+  /**
+   * Losses measured from a zero-sequence excitation test.
+   */
+  private KiloActivePower lossZero;
+
+  /**
+   * Losses measured from a zero-sequence excitation test.
+   */
+  public KiloActivePower getLossZero() {
+
+    return lossZero;
+  }
+
+  /**
+   * Losses measured from a zero-sequence excitation test.
+   */
+  public void setLossZero(final KiloActivePower value) {
+
+    this.lossZero = value;
+  }
+
+  /**
+   * Transformer end that current is applied to in this no-load test.
+   */
+  private TransformerEndInfo EnergisedEnd;
+
+  /**
+   * Transformer end that current is applied to in this no-load test.
+   */
+  public TransformerEndInfo getEnergisedEnd() {
+
+    return EnergisedEnd;
+  }
+
+  /**
+   * Transformer end that current is applied to in this no-load test.
+   */
+  public void setEnergisedEnd(final TransformerEndInfo value) {
+
+    this.EnergisedEnd = value;
+  }
+
+  public NoLoadTest() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/OpenCircuitTest.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/OpenCircuitTest.java
new file mode 100644
index 0000000..89fe9c0
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/OpenCircuitTest.java
@@ -0,0 +1,189 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.AngleDegrees;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+
+/**
+ * Open-circuit test results verify winding turn ratios and phase shifts. They
+ * include induced voltage and phase shift measurements on open-circuit windings,
+ * with voltage applied to the energised end. For three-phase windings, the
+ * excitation can be a positive sequence (the default) or a zero sequence.
+ * 
+ * @author BTC AG (generated); modelled by Tom
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:01
+ */
+@SuppressWarnings("javadoc")
+public class OpenCircuitTest extends TransformerTest {
+
+  /**
+   * Tap step number for the energised end of the test pair.
+   */
+  private Integer energisedEndStep;
+
+  /**
+   * Tap step number for the energised end of the test pair.
+   */
+  public Integer getEnergisedEndStep() {
+
+    return energisedEndStep;
+  }
+
+  /**
+   * Tap step number for the energised end of the test pair.
+   */
+  public void setEnergisedEndStep(final Integer value) {
+
+    this.energisedEndStep = value;
+  }
+
+  /**
+   * Voltage applied to the winding (end) during test.
+   */
+  private Voltage energisedEndVoltage;
+
+  /**
+   * Voltage applied to the winding (end) during test.
+   */
+  public Voltage getEnergisedEndVoltage() {
+
+    return energisedEndVoltage;
+  }
+
+  /**
+   * Voltage applied to the winding (end) during test.
+   */
+  public void setEnergisedEndVoltage(final Voltage value) {
+
+    this.energisedEndVoltage = value;
+  }
+
+  /**
+   * Tap step number for the open end of the test pair.
+   */
+  private Integer openEndStep;
+
+  /**
+   * Tap step number for the open end of the test pair.
+   */
+  public Integer getOpenEndStep() {
+
+    return openEndStep;
+  }
+
+  /**
+   * Tap step number for the open end of the test pair.
+   */
+  public void setOpenEndStep(final Integer value) {
+
+    this.openEndStep = value;
+  }
+
+  /**
+   * Voltage measured at the open-circuited end, with the energised end set to rated
+   * voltage and all other ends open.
+   */
+  private Voltage openEndVoltage;
+
+  /**
+   * Voltage measured at the open-circuited end, with the energised end set to rated
+   * voltage and all other ends open.
+   */
+  public Voltage getOpenEndVoltage() {
+
+    return openEndVoltage;
+  }
+
+  /**
+   * Voltage measured at the open-circuited end, with the energised end set to rated
+   * voltage and all other ends open.
+   */
+  public void setOpenEndVoltage(final Voltage value) {
+
+    this.openEndVoltage = value;
+  }
+
+  /**
+   * Phase shift measured at the open end with the energised end set to rated
+   * voltage and all other ends open.
+   */
+  private AngleDegrees phaseShift;
+
+  /**
+   * Phase shift measured at the open end with the energised end set to rated
+   * voltage and all other ends open.
+   */
+  public AngleDegrees getPhaseShift() {
+
+    return phaseShift;
+  }
+
+  /**
+   * Phase shift measured at the open end with the energised end set to rated
+   * voltage and all other ends open.
+   */
+  public void setPhaseShift(final AngleDegrees value) {
+
+    this.phaseShift = value;
+  }
+
+  /**
+   * Transformer end measured for induced voltage and angle in this open-circuit test.
+   */
+  private TransformerEndInfo OpenEnd;
+
+  /**
+   * Transformer end measured for induced voltage and angle in this open-circuit test.
+   */
+  public TransformerEndInfo getOpenEnd() {
+
+    return OpenEnd;
+  }
+
+  /**
+   * Transformer end measured for induced voltage and angle in this open-circuit test.
+   */
+  public void setOpenEnd(final TransformerEndInfo value) {
+
+    this.OpenEnd = value;
+  }
+
+  /**
+   * Transformer end that current is applied to in this open-circuit test.
+   */
+  private TransformerEndInfo EnergisedEnd;
+
+  /**
+   * Transformer end that current is applied to in this open-circuit test.
+   */
+  public TransformerEndInfo getEnergisedEnd() {
+
+    return EnergisedEnd;
+  }
+
+  /**
+   * Transformer end that current is applied to in this open-circuit test.
+   */
+  public void setEnergisedEnd(final TransformerEndInfo value) {
+
+    this.EnergisedEnd = value;
+  }
+
+  public OpenCircuitTest() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/OverheadWireInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/OverheadWireInfo.java
new file mode 100644
index 0000000..ee11e1c
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/OverheadWireInfo.java
@@ -0,0 +1,28 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+/**
+ * Overhead wire data.
+ * 
+ * @created 10-Aug-2017 18:11:05
+ */
+@SuppressWarnings("javadoc")
+public class OverheadWireInfo extends WireInfo {
+
+  public OverheadWireInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/PowerTransformerInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/PowerTransformerInfo.java
new file mode 100644
index 0000000..e0fcf76
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/PowerTransformerInfo.java
@@ -0,0 +1,32 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+
+/**
+ * Set of power transformer data, from an equipment library.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:15
+ */
+@SuppressWarnings("javadoc")
+public class PowerTransformerInfo extends AssetInfo {
+
+  public PowerTransformerInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/ShortCircuitTest.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/ShortCircuitTest.java
new file mode 100644
index 0000000..c59e336
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/ShortCircuitTest.java
@@ -0,0 +1,252 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.ApparentPower;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Impedance;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.KiloActivePower;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.PerCent;
+
+/**
+ * Short-circuit test results determine mesh impedance parameters. They include
+ * load losses and leakage impedances. For three-phase windings, the excitation
+ * can be a positive sequence (the default) or a zero sequence. There shall be at
+ * least one grounded winding.
+ * 
+ * @author BTC AG (generated); modelled by Tom
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:39
+ */
+@SuppressWarnings("javadoc")
+public class ShortCircuitTest extends TransformerTest {
+
+  /**
+   * Short circuit current..
+   */
+  private CurrentFlow current;
+
+  /**
+   * Short circuit current..
+   */
+  public CurrentFlow getCurrent() {
+
+    return current;
+  }
+
+  /**
+   * Short circuit current..
+   */
+  public void setCurrent(final CurrentFlow value) {
+
+    this.current = value;
+  }
+
+  /**
+   * Tap step number for the energised end of the test pair.
+   */
+  private Integer energisedEndStep;
+
+  /**
+   * Tap step number for the energised end of the test pair.
+   */
+  public Integer getEnergisedEndStep() {
+
+    return energisedEndStep;
+  }
+
+  /**
+   * Tap step number for the energised end of the test pair.
+   */
+  public void setEnergisedEndStep(final Integer value) {
+
+    this.energisedEndStep = value;
+  }
+
+  /**
+   * Tap step number for the grounded end of the test pair.
+   */
+  private Integer groundedEndStep;
+
+  /**
+   * Tap step number for the grounded end of the test pair.
+   */
+  public Integer getGroundedEndStep() {
+
+    return groundedEndStep;
+  }
+
+  /**
+   * Tap step number for the grounded end of the test pair.
+   */
+  public void setGroundedEndStep(final Integer value) {
+
+    this.groundedEndStep = value;
+  }
+
+  /**
+   * Leakage impedance measured from a positive-sequence or single-phase short-
+   * circuit test.
+   */
+  private Impedance leakageImpedance;
+
+  /**
+   * Leakage impedance measured from a positive-sequence or single-phase short-
+   * circuit test.
+   */
+  public Impedance getLeakageImpedance() {
+
+    return leakageImpedance;
+  }
+
+  /**
+   * Leakage impedance measured from a positive-sequence or single-phase short-
+   * circuit test.
+   */
+  public void setLeakageImpedance(final Impedance value) {
+
+    this.leakageImpedance = value;
+  }
+
+  /**
+   * Leakage impedance measured from a zero-sequence short-circuit test.
+   */
+  private Impedance leakageImpedanceZero;
+
+  /**
+   * Leakage impedance measured from a zero-sequence short-circuit test.
+   */
+  public Impedance getLeakageImpedanceZero() {
+
+    return leakageImpedanceZero;
+  }
+
+  /**
+   * Leakage impedance measured from a zero-sequence short-circuit test.
+   */
+  public void setLeakageImpedanceZero(final Impedance value) {
+
+    this.leakageImpedanceZero = value;
+  }
+
+  /**
+   * Load losses from a positive-sequence or single-phase short-circuit test.
+   */
+  private KiloActivePower loss;
+
+  /**
+   * Load losses from a positive-sequence or single-phase short-circuit test.
+   */
+  public KiloActivePower getLoss() {
+
+    return loss;
+  }
+
+  /**
+   * Load losses from a positive-sequence or single-phase short-circuit test.
+   */
+  public void setLoss(final KiloActivePower value) {
+
+    this.loss = value;
+  }
+
+  /**
+   * Load losses from a zero-sequence short-circuit test.
+   */
+  private KiloActivePower lossZero;
+
+  /**
+   * Load losses from a zero-sequence short-circuit test.
+   */
+  public KiloActivePower getLossZero() {
+
+    return lossZero;
+  }
+
+  /**
+   * Load losses from a zero-sequence short-circuit test.
+   */
+  public void setLossZero(final KiloActivePower value) {
+
+    this.lossZero = value;
+  }
+
+  /**
+   * Short circuit apparent power.
+   */
+  private ApparentPower power;
+
+  /**
+   * Short circuit apparent power.
+   */
+  public ApparentPower getPower() {
+
+    return power;
+  }
+
+  /**
+   * Short circuit apparent power.
+   */
+  public void setPower(final ApparentPower value) {
+
+    this.power = value;
+  }
+
+  /**
+   * Short circuit voltage..
+   */
+  private PerCent voltage;
+
+  /**
+   * Short circuit voltage..
+   */
+  public PerCent getVoltage() {
+
+    return voltage;
+  }
+
+  /**
+   * Short circuit voltage..
+   */
+  public void setVoltage(final PerCent value) {
+
+    this.voltage = value;
+  }
+
+  /**
+   * Transformer end that voltage is applied to in this short-circuit test. The test voltage is chosen to induce rated current in the energised end.
+   */
+  private TransformerEndInfo EnergisedEnd;
+
+  /**
+   * Transformer end that voltage is applied to in this short-circuit test. The test voltage is chosen to induce rated current in the energised end.
+   */
+  public TransformerEndInfo getEnergisedEnd() {
+
+    return EnergisedEnd;
+  }
+
+  /**
+   * Transformer end that voltage is applied to in this short-circuit test. The test voltage is chosen to induce rated current in the energised end.
+   */
+  public void setEnergisedEnd(final TransformerEndInfo value) {
+
+    this.EnergisedEnd = value;
+  }
+
+  public ShortCircuitTest() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/ShuntCompensatorInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/ShuntCompensatorInfo.java
new file mode 100644
index 0000000..fad62b2
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/ShuntCompensatorInfo.java
@@ -0,0 +1,119 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.ApparentPower;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.ReactivePower;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+
+/**
+ * Properties of shunt capacitor, shunt reactor or switchable bank of shunt
+ * capacitor or reactor assets.
+ * 
+ * @created 10-Aug-2017 18:11:40
+ */
+@SuppressWarnings("javadoc")
+public class ShuntCompensatorInfo extends AssetInfo {
+
+  /**
+   * Maximum allowed apparent power loss.
+   */
+  private ApparentPower maxPowerLoss;
+
+  /**
+   * Maximum allowed apparent power loss.
+   */
+  public ApparentPower getMaxPowerLoss() {
+
+    return maxPowerLoss;
+  }
+
+  /**
+   * Maximum allowed apparent power loss.
+   */
+  public void setMaxPowerLoss(final ApparentPower value) {
+
+    this.maxPowerLoss = value;
+  }
+
+  /**
+   * Rated current.
+   */
+  private CurrentFlow ratedCurrent;
+
+  /**
+   * Rated current.
+   */
+  public CurrentFlow getRatedCurrent() {
+
+    return ratedCurrent;
+  }
+
+  /**
+   * Rated current.
+   */
+  public void setRatedCurrent(final CurrentFlow value) {
+
+    this.ratedCurrent = value;
+  }
+
+  /**
+   * Rated reactive power.
+   */
+  private ReactivePower ratedReactivePower;
+
+  /**
+   * Rated reactive power.
+   */
+  public ReactivePower getRatedReactivePower() {
+
+    return ratedReactivePower;
+  }
+
+  /**
+   * Rated reactive power.
+   */
+  public void setRatedReactivePower(final ReactivePower value) {
+
+    this.ratedReactivePower = value;
+  }
+
+  /**
+   * Rated voltage.
+   */
+  private Voltage ratedVoltage;
+
+  /**
+   * Rated voltage.
+   */
+  public Voltage getRatedVoltage() {
+
+    return ratedVoltage;
+  }
+
+  /**
+   * Rated voltage.
+   */
+  public void setRatedVoltage(final Voltage value) {
+
+    this.ratedVoltage = value;
+  }
+
+  public ShuntCompensatorInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/SwitchInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/SwitchInfo.java
new file mode 100644
index 0000000..6763ffc
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/SwitchInfo.java
@@ -0,0 +1,148 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Switch data.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:47
+ */
+@SuppressWarnings("javadoc")
+public class SwitchInfo extends AssetInfo {
+
+  /**
+   * The maximum fault current a breaking device can break safely under prescribed
+   * conditions of use.
+   */
+  private CurrentFlow breakingCapacity;
+
+  /**
+   * The maximum fault current a breaking device can break safely under prescribed
+   * conditions of use.
+   */
+  public CurrentFlow getBreakingCapacity() {
+
+    return breakingCapacity;
+  }
+
+  /**
+   * The maximum fault current a breaking device can break safely under prescribed
+   * conditions of use.
+   */
+  public void setBreakingCapacity(final CurrentFlow value) {
+
+    this.breakingCapacity = value;
+  }
+
+  /**
+   * If true, it is a single phase switch.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean isSinglePhase;
+
+  /**
+   * If true, it is a single phase switch.
+   */
+  public Boolean isIsSinglePhase() {
+
+    return isSinglePhase;
+  }
+
+  /**
+   * If true, it is a single phase switch.
+   */
+  public void setIsSinglePhase(final Boolean value) {
+
+    this.isSinglePhase = value;
+  }
+
+  /**
+   * If true, the switch is not ganged (i.e., a switch phase may be operated
+   * separately from other phases).
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean isUnganged;
+
+  /**
+   * If true, the switch is not ganged (i.e., a switch phase may be operated
+   * separately from other phases).
+   */
+  public Boolean isIsUnganged() {
+
+    return isUnganged;
+  }
+
+  /**
+   * If true, the switch is not ganged (i.e., a switch phase may be operated
+   * separately from other phases).
+   */
+  public void setIsUnganged(final Boolean value) {
+
+    this.isUnganged = value;
+  }
+
+  /**
+   * Rated current.
+   */
+  private CurrentFlow ratedCurrent;
+
+  /**
+   * Rated current.
+   */
+  public CurrentFlow getRatedCurrent() {
+
+    return ratedCurrent;
+  }
+
+  /**
+   * Rated current.
+   */
+  public void setRatedCurrent(final CurrentFlow value) {
+
+    this.ratedCurrent = value;
+  }
+
+  /**
+   * Rated voltage.
+   */
+  private Voltage ratedVoltage;
+
+  /**
+   * Rated voltage.
+   */
+  public Voltage getRatedVoltage() {
+
+    return ratedVoltage;
+  }
+
+  /**
+   * Rated voltage.
+   */
+  public void setRatedVoltage(final Voltage value) {
+
+    this.ratedVoltage = value;
+  }
+
+  public SwitchInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TapChangerInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TapChangerInfo.java
new file mode 100644
index 0000000..de8ee8f
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TapChangerInfo.java
@@ -0,0 +1,361 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.AngleDegrees;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.ApparentPower;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Frequency;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.PerCent;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Tap changer data.
+ * 
+ * @created 10-Aug-2017 18:11:50
+ */
+@SuppressWarnings("javadoc")
+public class TapChangerInfo extends AssetInfo {
+
+  /**
+   * Basic Insulation Level (BIL) expressed as the impulse crest voltage of a
+   * nominal wave, typically 1.2 X 50 microsecond. This is a measure of the ability
+   * of the insulation to withstand very high voltage surges.
+   */
+  private Voltage bil;
+
+  /**
+   * Basic Insulation Level (BIL) expressed as the impulse crest voltage of a
+   * nominal wave, typically 1.2 X 50 microsecond. This is a measure of the ability
+   * of the insulation to withstand very high voltage surges.
+   */
+  public Voltage getBil() {
+
+    return bil;
+  }
+
+  /**
+   * Basic Insulation Level (BIL) expressed as the impulse crest voltage of a
+   * nominal wave, typically 1.2 X 50 microsecond. This is a measure of the ability
+   * of the insulation to withstand very high voltage surges.
+   */
+  public void setBil(final Voltage value) {
+
+    this.bil = value;
+  }
+
+  /**
+   * Built-in current transformer primary rating.
+   */
+  private CurrentFlow ctRating;
+
+  /**
+   * Built-in current transformer primary rating.
+   */
+  public CurrentFlow getCtRating() {
+
+    return ctRating;
+  }
+
+  /**
+   * Built-in current transformer primary rating.
+   */
+  public void setCtRating(final CurrentFlow value) {
+
+    this.ctRating = value;
+  }
+
+  /**
+   * Built-in current transducer ratio.
+   */
+  @Cim(originalType = "Float")
+  private Double ctRatio;
+
+  /**
+   * Built-in current transducer ratio.
+   */
+  public Double getCtRatio() {
+
+    return ctRatio;
+  }
+
+  /**
+   * Built-in current transducer ratio.
+   */
+  public void setCtRatio(final Double value) {
+
+    this.ctRatio = value;
+  }
+
+  /**
+   * Frequency at which the ratings apply.
+   */
+  private Frequency frequency;
+
+  /**
+   * Frequency at which the ratings apply.
+   */
+  public Frequency getFrequency() {
+
+    return frequency;
+  }
+
+  /**
+   * Frequency at which the ratings apply.
+   */
+  public void setFrequency(final Frequency value) {
+
+    this.frequency = value;
+  }
+
+  /**
+   * Highest possible tap step position, advance from neutral.
+   */
+  private Integer highStep;
+
+  /**
+   * Highest possible tap step position, advance from neutral.
+   */
+  public Integer getHighStep() {
+
+    return highStep;
+  }
+
+  /**
+   * Highest possible tap step position, advance from neutral.
+   */
+  public void setHighStep(final Integer value) {
+
+    this.highStep = value;
+  }
+
+  /**
+   * Whether this tap changer has under load tap changing capabilities.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean isTcul;
+
+  /**
+   * Whether this tap changer has under load tap changing capabilities.
+   */
+  public Boolean isIsTcul() {
+
+    return isTcul;
+  }
+
+  /**
+   * Whether this tap changer has under load tap changing capabilities.
+   */
+  public void setIsTcul(final Boolean value) {
+
+    this.isTcul = value;
+  }
+
+  /**
+   * Lowest possible tap step position, retard from neutral.
+   */
+  private Integer lowStep;
+
+  /**
+   * Lowest possible tap step position, retard from neutral.
+   */
+  public Integer getLowStep() {
+
+    return lowStep;
+  }
+
+  /**
+   * Lowest possible tap step position, retard from neutral.
+   */
+  public void setLowStep(final Integer value) {
+
+    this.lowStep = value;
+  }
+
+  /**
+   * The neutral tap step position for the winding.
+   */
+  private Integer neutralStep;
+
+  /**
+   * The neutral tap step position for the winding.
+   */
+  public Integer getNeutralStep() {
+
+    return neutralStep;
+  }
+
+  /**
+   * The neutral tap step position for the winding.
+   */
+  public void setNeutralStep(final Integer value) {
+
+    this.neutralStep = value;
+  }
+
+  /**
+   * Voltage at which the winding operates at the neutral tap setting.
+   */
+  private Voltage neutralU;
+
+  /**
+   * Voltage at which the winding operates at the neutral tap setting.
+   */
+  public Voltage getNeutralU() {
+
+    return neutralU;
+  }
+
+  /**
+   * Voltage at which the winding operates at the neutral tap setting.
+   */
+  public void setNeutralU(final Voltage value) {
+
+    this.neutralU = value;
+  }
+
+  /**
+   * Built-in voltage transducer ratio.
+   */
+  @Cim(originalType = "Float")
+  private Double ptRatio;
+
+  /**
+   * Built-in voltage transducer ratio.
+   */
+  public Double getPtRatio() {
+
+    return ptRatio;
+  }
+
+  /**
+   * Built-in voltage transducer ratio.
+   */
+  public void setPtRatio(final Double value) {
+
+    this.ptRatio = value;
+  }
+
+  /**
+   * Rated apparent power.
+   */
+  private ApparentPower ratedApparentPower;
+
+  /**
+   * Rated apparent power.
+   */
+  public ApparentPower getRatedApparentPower() {
+
+    return ratedApparentPower;
+  }
+
+  /**
+   * Rated apparent power.
+   */
+  public void setRatedApparentPower(final ApparentPower value) {
+
+    this.ratedApparentPower = value;
+  }
+
+  /**
+   * Rated current.
+   */
+  private CurrentFlow ratedCurrent;
+
+  /**
+   * Rated current.
+   */
+  public CurrentFlow getRatedCurrent() {
+
+    return ratedCurrent;
+  }
+
+  /**
+   * Rated current.
+   */
+  public void setRatedCurrent(final CurrentFlow value) {
+
+    this.ratedCurrent = value;
+  }
+
+  /**
+   * Rated voltage.
+   */
+  private Voltage ratedVoltage;
+
+  /**
+   * Rated voltage.
+   */
+  public Voltage getRatedVoltage() {
+
+    return ratedVoltage;
+  }
+
+  /**
+   * Rated voltage.
+   */
+  public void setRatedVoltage(final Voltage value) {
+
+    this.ratedVoltage = value;
+  }
+
+  /**
+   * Phase shift per step position.
+   */
+  private AngleDegrees stepPhaseIncrement;
+
+  /**
+   * Phase shift per step position.
+   */
+  public AngleDegrees getStepPhaseIncrement() {
+
+    return stepPhaseIncrement;
+  }
+
+  /**
+   * Phase shift per step position.
+   */
+  public void setStepPhaseIncrement(final AngleDegrees value) {
+
+    this.stepPhaseIncrement = value;
+  }
+
+  /**
+   * Tap step increment, in per cent of rated voltage, per step position.
+   */
+  private PerCent stepVoltageIncrement;
+
+  /**
+   * Tap step increment, in per cent of rated voltage, per step position.
+   */
+  public PerCent getStepVoltageIncrement() {
+
+    return stepVoltageIncrement;
+  }
+
+  /**
+   * Tap step increment, in per cent of rated voltage, per step position.
+   */
+  public void setStepVoltageIncrement(final PerCent value) {
+
+    this.stepVoltageIncrement = value;
+  }
+
+  public TapChangerInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TapeShieldCableInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TapeShieldCableInfo.java
new file mode 100644
index 0000000..c4379c4
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TapeShieldCableInfo.java
@@ -0,0 +1,78 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Length;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.PerCent;
+
+/**
+ * Tape shield cable data.
+ * 
+ * @author BTC AG (generated); modelled by Tom
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:50
+ */
+@SuppressWarnings("javadoc")
+public class TapeShieldCableInfo extends CableInfo {
+
+  /**
+   * Percentage of the tape shield width that overlaps in each wrap, typically 10%
+   * to 25%.
+   */
+  private PerCent tapeLap;
+
+  /**
+   * Percentage of the tape shield width that overlaps in each wrap, typically 10%
+   * to 25%.
+   */
+  public PerCent getTapeLap() {
+
+    return tapeLap;
+  }
+
+  /**
+   * Percentage of the tape shield width that overlaps in each wrap, typically 10%
+   * to 25%.
+   */
+  public void setTapeLap(final PerCent value) {
+
+    this.tapeLap = value;
+  }
+
+  /**
+   * Thickness of the tape shield, before wrapping.
+   */
+  private Length tapeThickness;
+
+  /**
+   * Thickness of the tape shield, before wrapping.
+   */
+  public Length getTapeThickness() {
+
+    return tapeThickness;
+  }
+
+  /**
+   * Thickness of the tape shield, before wrapping.
+   */
+  public void setTapeThickness(final Length value) {
+
+    this.tapeThickness = value;
+  }
+
+  public TapeShieldCableInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TransformerEndInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TransformerEndInfo.java
new file mode 100644
index 0000000..c100020
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TransformerEndInfo.java
@@ -0,0 +1,375 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.ApparentPower;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Resistance;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Wires.TransformerMeshImpedance;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Wires.WindingConnection;
+
+/**
+ * Transformer end data.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:57
+ */
+@SuppressWarnings("javadoc")
+public class TransformerEndInfo extends AssetInfo {
+
+  /**
+   * Kind of connection.
+   */
+  private WindingConnection connectionKind;
+
+  /**
+   * Kind of connection.
+   */
+  public WindingConnection getConnectionKind() {
+
+    return connectionKind;
+  }
+
+  /**
+   * Kind of connection.
+   */
+  public void setConnectionKind(final WindingConnection value) {
+
+    this.connectionKind = value;
+  }
+
+  /**
+   * Apparent power that the winding can carry under emergency conditions (also
+   * called long-term emergency power).
+   */
+  private ApparentPower emergencyS;
+
+  /**
+   * Apparent power that the winding can carry under emergency conditions (also
+   * called long-term emergency power).
+   */
+  public ApparentPower getEmergencyS() {
+
+    return emergencyS;
+  }
+
+  /**
+   * Apparent power that the winding can carry under emergency conditions (also
+   * called long-term emergency power).
+   */
+  public void setEmergencyS(final ApparentPower value) {
+
+    this.emergencyS = value;
+  }
+
+  /**
+   * Number for this transformer end, corresponding to the end's order in the
+   * PowerTransformer.vectorGroup attribute. Highest voltage winding should be 1.
+   */
+  private Integer endNumber;
+
+  /**
+   * Number for this transformer end, corresponding to the end's order in the
+   * PowerTransformer.vectorGroup attribute. Highest voltage winding should be 1.
+   */
+  public Integer getEndNumber() {
+
+    return endNumber;
+  }
+
+  /**
+   * Number for this transformer end, corresponding to the end's order in the
+   * PowerTransformer.vectorGroup attribute. Highest voltage winding should be 1.
+   */
+  public void setEndNumber(final Integer value) {
+
+    this.endNumber = value;
+  }
+
+  /**
+   * Basic insulation level voltage rating.
+   */
+  private Voltage insulationU;
+
+  /**
+   * Basic insulation level voltage rating.
+   */
+  public Voltage getInsulationU() {
+
+    return insulationU;
+  }
+
+  /**
+   * Basic insulation level voltage rating.
+   */
+  public void setInsulationU(final Voltage value) {
+
+    this.insulationU = value;
+  }
+
+  /**
+   * Winding phase angle where 360 degrees are represented with clock hours, so the
+   * valid values are {0, ..., 11}. For example, to express the second winding in
+   * code 'Dyn11', set attributes as follows: 'endNumber'=2, 'connectionKind' = Yn
+   * and 'phaseAngleClock' = 11.
+   */
+  private Integer phaseAngleClock;
+
+  /**
+   * Winding phase angle where 360 degrees are represented with clock hours, so the
+   * valid values are {0, ..., 11}. For example, to express the second winding in
+   * code 'Dyn11', set attributes as follows: 'endNumber'=2, 'connectionKind' = Yn
+   * and 'phaseAngleClock' = 11.
+   */
+  public Integer getPhaseAngleClock() {
+
+    return phaseAngleClock;
+  }
+
+  /**
+   * Winding phase angle where 360 degrees are represented with clock hours, so the
+   * valid values are {0, ..., 11}. For example, to express the second winding in
+   * code 'Dyn11', set attributes as follows: 'endNumber'=2, 'connectionKind' = Yn
+   * and 'phaseAngleClock' = 11.
+   */
+  public void setPhaseAngleClock(final Integer value) {
+
+    this.phaseAngleClock = value;
+  }
+
+  /**
+   * DC resistance.
+   */
+  private Resistance r;
+
+  /**
+   * DC resistance.
+   */
+  public Resistance getR() {
+
+    return r;
+  }
+
+  /**
+   * DC resistance.
+   */
+  public void setR(final Resistance value) {
+
+    this.r = value;
+  }
+
+  /**
+   * Normal apparent power rating.
+   */
+  private ApparentPower ratedS;
+
+  /**
+   * Normal apparent power rating.
+   */
+  public ApparentPower getRatedS() {
+
+    return ratedS;
+  }
+
+  /**
+   * Normal apparent power rating.
+   */
+  public void setRatedS(final ApparentPower value) {
+
+    this.ratedS = value;
+  }
+
+  /**
+   * Rated voltage: phase-phase for three-phase windings, and either phase-phase or
+   * phase-neutral for single-phase windings.
+   */
+  private Voltage ratedU;
+
+  /**
+   * Rated voltage: phase-phase for three-phase windings, and either phase-phase or
+   * phase-neutral for single-phase windings.
+   */
+  public Voltage getRatedU() {
+
+    return ratedU;
+  }
+
+  /**
+   * Rated voltage: phase-phase for three-phase windings, and either phase-phase or
+   * phase-neutral for single-phase windings.
+   */
+  public void setRatedU(final Voltage value) {
+
+    this.ratedU = value;
+  }
+
+  /**
+   * Apparent power that this winding can carry for a short period of time (in
+   * emergency).
+   */
+  private ApparentPower shortTermS;
+
+  /**
+   * Apparent power that this winding can carry for a short period of time (in
+   * emergency).
+   */
+  public ApparentPower getShortTermS() {
+
+    return shortTermS;
+  }
+
+  /**
+   * Apparent power that this winding can carry for a short period of time (in
+   * emergency).
+   */
+  public void setShortTermS(final ApparentPower value) {
+
+    this.shortTermS = value;
+  }
+
+  /**
+   * All mesh impedances between this 'to' and other 'from' transformer ends.
+   */
+  private List<TransformerMeshImpedance> FromMeshImpedances;
+
+  /**
+   * All mesh impedances between this 'to' and other 'from' transformer ends.
+   */
+  public List<TransformerMeshImpedance> getFromMeshImpedances() {
+
+    return FromMeshImpedances;
+  }
+
+  /**
+   * All mesh impedances between this 'to' and other 'from' transformer ends.
+   */
+  public void setFromMeshImpedances(final List<TransformerMeshImpedance> value) {
+
+    this.FromMeshImpedances = value;
+  }
+
+  /**
+   * All short-circuit test measurements in which this transformer end was short-circuited.
+   */
+  private List<ShortCircuitTest> GroundedEndShortCircuitTests;
+
+  /**
+   * All short-circuit test measurements in which this transformer end was short-circuited.
+   */
+  public List<ShortCircuitTest> getGroundedEndShortCircuitTests() {
+
+    return GroundedEndShortCircuitTests;
+  }
+
+  /**
+   * All short-circuit test measurements in which this transformer end was short-circuited.
+   */
+  public void setGroundedEndShortCircuitTests(final List<ShortCircuitTest> value) {
+
+    this.GroundedEndShortCircuitTests = value;
+  }
+
+  /**
+   * All short-circuit test measurements in which this transformer end was energised.
+   */
+  private List<ShortCircuitTest> EnergisedEndShortCircuitTests;
+
+  /**
+   * All short-circuit test measurements in which this transformer end was energised.
+   */
+  public List<ShortCircuitTest> getEnergisedEndShortCircuitTests() {
+
+    return EnergisedEndShortCircuitTests;
+  }
+
+  /**
+   * All short-circuit test measurements in which this transformer end was energised.
+   */
+  public void setEnergisedEndShortCircuitTests(final List<ShortCircuitTest> value) {
+
+    this.EnergisedEndShortCircuitTests = value;
+  }
+
+  /**
+   * All open-circuit test measurements in which this transformer end was not excited.
+   */
+  private List<OpenCircuitTest> OpenEndOpenCircuitTests;
+
+  /**
+   * All open-circuit test measurements in which this transformer end was not excited.
+   */
+  public List<OpenCircuitTest> getOpenEndOpenCircuitTests() {
+
+    return OpenEndOpenCircuitTests;
+  }
+
+  /**
+   * All open-circuit test measurements in which this transformer end was not excited.
+   */
+  public void setOpenEndOpenCircuitTests(final List<OpenCircuitTest> value) {
+
+    this.OpenEndOpenCircuitTests = value;
+  }
+
+  /**
+   * All open-circuit test measurements in which this transformer end was excited.
+   */
+  private List<OpenCircuitTest> EnergisedEndOpenCircuitTests;
+
+  /**
+   * All open-circuit test measurements in which this transformer end was excited.
+   */
+  public List<OpenCircuitTest> getEnergisedEndOpenCircuitTests() {
+
+    return EnergisedEndOpenCircuitTests;
+  }
+
+  /**
+   * All open-circuit test measurements in which this transformer end was excited.
+   */
+  public void setEnergisedEndOpenCircuitTests(final List<OpenCircuitTest> value) {
+
+    this.EnergisedEndOpenCircuitTests = value;
+  }
+
+  /**
+   * All no-load test measurements in which this transformer end was energised.
+   */
+  private List<NoLoadTest> EnergisedEndNoLoadTests;
+
+  /**
+   * All no-load test measurements in which this transformer end was energised.
+   */
+  public List<NoLoadTest> getEnergisedEndNoLoadTests() {
+
+    return EnergisedEndNoLoadTests;
+  }
+
+  /**
+   * All no-load test measurements in which this transformer end was energised.
+   */
+  public void setEnergisedEndNoLoadTests(final List<NoLoadTest> value) {
+
+    this.EnergisedEndNoLoadTests = value;
+  }
+
+  public TransformerEndInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TransformerTankInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TransformerTankInfo.java
new file mode 100644
index 0000000..a578ce7
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TransformerTankInfo.java
@@ -0,0 +1,53 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+
+/**
+ * Set of transformer tank data, from an equipment library.
+ * 
+ * @created 10-Aug-2017 18:11:58
+ */
+@SuppressWarnings("javadoc")
+public class TransformerTankInfo extends AssetInfo {
+
+  /**
+   * Data for all the ends described by this transformer tank data.
+   */
+  private List<TransformerEndInfo> TransformerEndInfos;
+
+  /**
+   * Data for all the ends described by this transformer tank data.
+   */
+  public List<TransformerEndInfo> getTransformerEndInfos() {
+
+    return TransformerEndInfos;
+  }
+
+  /**
+   * Data for all the ends described by this transformer tank data.
+   */
+  public void setTransformerEndInfos(final List<TransformerEndInfo> value) {
+
+    this.TransformerEndInfos = value;
+  }
+
+  public TransformerTankInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TransformerTest.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TransformerTest.java
new file mode 100644
index 0000000..c23c8e5
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/TransformerTest.java
@@ -0,0 +1,80 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.ApparentPower;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Temperature;
+
+/**
+ * Test result for transformer ends, such as short-circuit, open-circuit
+ * (excitation) or no-load test.
+ * 
+ * @author BTC AG (generated); modelled by Tom
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:58
+ */
+@SuppressWarnings("javadoc")
+public class TransformerTest extends IdentifiedObject {
+
+  /**
+   * Base power at which the tests are conducted, usually equal to the rateds of one
+   * of the involved transformer ends.
+   */
+  private ApparentPower basePower;
+
+  /**
+   * Base power at which the tests are conducted, usually equal to the rateds of one
+   * of the involved transformer ends.
+   */
+  public ApparentPower getBasePower() {
+
+    return basePower;
+  }
+
+  /**
+   * Base power at which the tests are conducted, usually equal to the rateds of one
+   * of the involved transformer ends.
+   */
+  public void setBasePower(final ApparentPower value) {
+
+    this.basePower = value;
+  }
+
+  /**
+   * Temperature at which the test is conducted.
+   */
+  private Temperature temperature;
+
+  /**
+   * Temperature at which the test is conducted.
+   */
+  public Temperature getTemperature() {
+
+    return temperature;
+  }
+
+  /**
+   * Temperature at which the test is conducted.
+   */
+  public void setTemperature(final Temperature value) {
+
+    this.temperature = value;
+  }
+
+  public TransformerTest() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireInfo.java
new file mode 100644
index 0000000..f096d85
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireInfo.java
@@ -0,0 +1,357 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Length;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.ResistancePerLength;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Wire data that can be specified per line segment phase, or for the line segment
+ * as a whole in case its phases all have the same wire characteristics.
+ * 
+ * @created 10-Aug-2017 18:12:12
+ */
+@SuppressWarnings("javadoc")
+public class WireInfo extends AssetInfo {
+
+  /**
+   * (if there is a different core material) Radius of the central core.
+   */
+  private Length coreRadius;
+
+  /**
+   * (if there is a different core material) Radius of the central core.
+   */
+  public Length getCoreRadius() {
+
+    return coreRadius;
+  }
+
+  /**
+   * (if there is a different core material) Radius of the central core.
+   */
+  public void setCoreRadius(final Length value) {
+
+    this.coreRadius = value;
+  }
+
+  /**
+   * (if used) Number of strands in the steel core.
+   */
+  private Integer coreStrandCount;
+
+  /**
+   * (if used) Number of strands in the steel core.
+   */
+  public Integer getCoreStrandCount() {
+
+    return coreStrandCount;
+  }
+
+  /**
+   * (if used) Number of strands in the steel core.
+   */
+  public void setCoreStrandCount(final Integer value) {
+
+    this.coreStrandCount = value;
+  }
+
+  /**
+   * Geometric mean radius. If we replace the conductor by a thin walled tube of
+   * radius GMR, then its reactance is identical to the reactance of the actual
+   * conductor.
+   */
+  private Length gmr;
+
+  /**
+   * Geometric mean radius. If we replace the conductor by a thin walled tube of
+   * radius GMR, then its reactance is identical to the reactance of the actual
+   * conductor.
+   */
+  public Length getGmr() {
+
+    return gmr;
+  }
+
+  /**
+   * Geometric mean radius. If we replace the conductor by a thin walled tube of
+   * radius GMR, then its reactance is identical to the reactance of the actual
+   * conductor.
+   */
+  public void setGmr(final Length value) {
+
+    this.gmr = value;
+  }
+
+  /**
+   * True if conductor is insulated.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean insulated;
+
+  /**
+   * True if conductor is insulated.
+   */
+  public Boolean isInsulated() {
+
+    return insulated;
+  }
+
+  /**
+   * True if conductor is insulated.
+   */
+  public void setInsulated(final Boolean value) {
+
+    this.insulated = value;
+  }
+
+  /**
+   * (if insulated conductor) Material used for insulation.
+   */
+  private WireInsulationKind insulationMaterial;
+
+  /**
+   * (if insulated conductor) Material used for insulation.
+   */
+  public WireInsulationKind getInsulationMaterial() {
+
+    return insulationMaterial;
+  }
+
+  /**
+   * (if insulated conductor) Material used for insulation.
+   */
+  public void setInsulationMaterial(final WireInsulationKind value) {
+
+    this.insulationMaterial = value;
+  }
+
+  /**
+   * (if insulated conductor) Thickness of the insulation.
+   */
+  private Length insulationThickness;
+
+  /**
+   * (if insulated conductor) Thickness of the insulation.
+   */
+  public Length getInsulationThickness() {
+
+    return insulationThickness;
+  }
+
+  /**
+   * (if insulated conductor) Thickness of the insulation.
+   */
+  public void setInsulationThickness(final Length value) {
+
+    this.insulationThickness = value;
+  }
+
+  /**
+   * Conductor material.
+   */
+  private WireMaterialKind material;
+
+  /**
+   * Conductor material.
+   */
+  public WireMaterialKind getMaterial() {
+
+    return material;
+  }
+
+  /**
+   * Conductor material.
+   */
+  public void setMaterial(final WireMaterialKind value) {
+
+    this.material = value;
+  }
+
+  /**
+   * AC resistance per unit length of the conductor at 25 �C.
+   */
+  private ResistancePerLength rAC25;
+
+  /**
+   * AC resistance per unit length of the conductor at 25 �C.
+   */
+  public ResistancePerLength getRAC25() {
+
+    return rAC25;
+  }
+
+  /**
+   * AC resistance per unit length of the conductor at 25 �C.
+   */
+  public void setRAC25(final ResistancePerLength value) {
+
+    this.rAC25 = value;
+  }
+
+  /**
+   * AC resistance per unit length of the conductor at 50 �C.
+   */
+  private ResistancePerLength rAC50;
+
+  /**
+   * AC resistance per unit length of the conductor at 50 �C.
+   */
+  public ResistancePerLength getRAC50() {
+
+    return rAC50;
+  }
+
+  /**
+   * AC resistance per unit length of the conductor at 50 �C.
+   */
+  public void setRAC50(final ResistancePerLength value) {
+
+    this.rAC50 = value;
+  }
+
+  /**
+   * AC resistance per unit length of the conductor at 75 �C.
+   */
+  private ResistancePerLength rAC75;
+
+  /**
+   * AC resistance per unit length of the conductor at 75 �C.
+   */
+  public ResistancePerLength getRAC75() {
+
+    return rAC75;
+  }
+
+  /**
+   * AC resistance per unit length of the conductor at 75 �C.
+   */
+  public void setRAC75(final ResistancePerLength value) {
+
+    this.rAC75 = value;
+  }
+
+  /**
+   * Outside radius of the wire.
+   */
+  private Length radius;
+
+  /**
+   * Outside radius of the wire.
+   */
+  public Length getRadius() {
+
+    return radius;
+  }
+
+  /**
+   * Outside radius of the wire.
+   */
+  public void setRadius(final Length value) {
+
+    this.radius = value;
+  }
+
+  /**
+   * Current carrying capacity of the wire under stated thermal conditions.
+   */
+  private CurrentFlow ratedCurrent;
+
+  /**
+   * Current carrying capacity of the wire under stated thermal conditions.
+   */
+  public CurrentFlow getRatedCurrent() {
+
+    return ratedCurrent;
+  }
+
+  /**
+   * Current carrying capacity of the wire under stated thermal conditions.
+   */
+  public void setRatedCurrent(final CurrentFlow value) {
+
+    this.ratedCurrent = value;
+  }
+
+  /**
+   * DC resistance per unit length of the conductor at 20 �C.
+   */
+  private ResistancePerLength rDC20;
+
+  /**
+   * DC resistance per unit length of the conductor at 20 �C.
+   */
+  public ResistancePerLength getRDC20() {
+
+    return rDC20;
+  }
+
+  /**
+   * DC resistance per unit length of the conductor at 20 �C.
+   */
+  public void setRDC20(final ResistancePerLength value) {
+
+    this.rDC20 = value;
+  }
+
+  /**
+   * Describes the wire gauge or cross section (e.g., 4/0, #2, 336.5).
+   */
+  private String sizeDescription;
+
+  /**
+   * Describes the wire gauge or cross section (e.g., 4/0, #2, 336.5).
+   */
+  public String getSizeDescription() {
+
+    return sizeDescription;
+  }
+
+  /**
+   * Describes the wire gauge or cross section (e.g., 4/0, #2, 336.5).
+   */
+  public void setSizeDescription(final String value) {
+
+    this.sizeDescription = value;
+  }
+
+  /**
+   * Number of strands in the conductor.
+   */
+  private Integer strandCount;
+
+  /**
+   * Number of strands in the conductor.
+   */
+  public Integer getStrandCount() {
+
+    return strandCount;
+  }
+
+  /**
+   * Number of strands in the conductor.
+   */
+  public void setStrandCount(final Integer value) {
+
+    this.strandCount = value;
+  }
+
+  public WireInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireInsulationKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireInsulationKind.java
new file mode 100644
index 0000000..9b73ba6
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireInsulationKind.java
@@ -0,0 +1,98 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of wire insulation.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:12:12
+ */
+public enum WireInsulationKind implements ICimEntity {
+  /**
+   * Asbestos and varnished cambric wire insulation.
+   */
+  asbestosAndVarnishedCambric,
+  /**
+   * Butyl wire insulation.
+   */
+  butyl,
+  /**
+   * Ethylene propylene rubber wire insulation.
+   */
+  ethylenePropyleneRubber,
+  /**
+   * High nolecular weight polyethylene wire insulation.
+   */
+  highMolecularWeightPolyethylene,
+  /**
+   * Tree resistant high molecular weight polyethylene wire insulation.
+   */
+  treeResistantHighMolecularWeightPolyethylene,
+  /**
+   * Low capacitance rubber wire insulation.
+   */
+  lowCapacitanceRubber,
+  /**
+   * Oil paper wire insulation.
+   */
+  oilPaper,
+  /**
+   * Ozone resistant rubber wire insulation.
+   */
+  ozoneResistantRubber,
+  /**
+   * Belted pilc wire insulation.
+   */
+  beltedPilc,
+  /**
+   * Unbelted pilc wire insulation.
+   */
+  unbeltedPilc,
+  /**
+   * Rubber wire insulation.
+   */
+  rubber,
+  /**
+   * Silicon rubber wire insulation.
+   */
+  siliconRubber,
+  /**
+   * Varnished cambric cloth wire insulation.
+   */
+  varnishedCambricCloth,
+  /**
+   * Varnished dacron glass wire insulation.
+   */
+  varnishedDacronGlass,
+  /**
+   * Crosslinked polyethylene wire insulation.
+   */
+  crosslinkedPolyethylene,
+  /**
+   * Tree retardant crosslinked polyethylene wire insulation.
+   */
+  treeRetardantCrosslinkedPolyethylene,
+  /**
+   * High pressure fluid filled wire insulation.
+   */
+  highPressureFluidFilled,
+  /**
+   * Other kind of wire insulation.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireMaterialKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireMaterialKind.java
new file mode 100644
index 0000000..6e998e9
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireMaterialKind.java
@@ -0,0 +1,62 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of wire material.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:12:12
+ */
+public enum WireMaterialKind implements ICimEntity {
+  /**
+   * Copper wire.
+   */
+  copper,
+  /**
+   * Steel wire.
+   */
+  steel,
+  /**
+   * Aluminum wire.
+   */
+  aluminum,
+  /**
+   * Aluminum-steel wire.
+   */
+  aluminumSteel,
+  /**
+   * Aluminum conductor steel reinforced.
+   */
+  acsr,
+  /**
+   * Aluminum-alloy wire.
+   */
+  aluminumAlloy,
+  /**
+   * Aluminum-alloy-steel wire.
+   */
+  aluminumAlloySteel,
+  /**
+   * Aluminum-alloy conductor steel reinforced.
+   */
+  aaac,
+  /**
+   * Other wire material.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WirePosition.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WirePosition.java
new file mode 100644
index 0000000..692c3dd
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WirePosition.java
@@ -0,0 +1,125 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Displacement;
+
+/**
+ * Identification, spacing and configuration of the wires of a conductor with
+ * respect to a structure.
+ * 
+ * @created 10-Aug-2017 18:12:12
+ */
+@SuppressWarnings("javadoc")
+public class WirePosition extends IdentifiedObject {
+
+  /**
+   * Sequence number for the wire with this position, with its counterpart in the AC
+   * line segment phase.
+   */
+  private Integer sequenceNumber;
+
+  /**
+   * Sequence number for the wire with this position, with its counterpart in the AC
+   * line segment phase.
+   */
+  public Integer getSequenceNumber() {
+
+    return sequenceNumber;
+  }
+
+  /**
+   * Sequence number for the wire with this position, with its counterpart in the AC
+   * line segment phase.
+   */
+  public void setSequenceNumber(final Integer value) {
+
+    this.sequenceNumber = value;
+  }
+
+  /**
+   * Signed horizontal distance from the wire at this position to a common reference
+   * point.
+   */
+  private Displacement xCoord;
+
+  /**
+   * Signed horizontal distance from the wire at this position to a common reference
+   * point.
+   */
+  public Displacement getXCoord() {
+
+    return xCoord;
+  }
+
+  /**
+   * Signed horizontal distance from the wire at this position to a common reference
+   * point.
+   */
+  public void setXCoord(final Displacement value) {
+
+    this.xCoord = value;
+  }
+
+  /**
+   * Signed vertical distance from the wire at this position: above ground (positive
+   * value) or burial depth below ground (negative value).
+   */
+  private Displacement yCoord;
+
+  /**
+   * Signed vertical distance from the wire at this position: above ground (positive
+   * value) or burial depth below ground (negative value).
+   */
+  public Displacement getYCoord() {
+
+    return yCoord;
+  }
+
+  /**
+   * Signed vertical distance from the wire at this position: above ground (positive
+   * value) or burial depth below ground (negative value).
+   */
+  public void setYCoord(final Displacement value) {
+
+    this.yCoord = value;
+  }
+
+  /**
+   * Wire spacing data this wire position belongs to.
+   */
+  private WireSpacing WireSpacingInfo;
+
+  /**
+   * Wire spacing data this wire position belongs to.
+   */
+  public WireSpacing getWireSpacingInfo() {
+
+    return WireSpacingInfo;
+  }
+
+  /**
+   * Wire spacing data this wire position belongs to.
+   */
+  public void setWireSpacingInfo(final WireSpacing value) {
+
+    this.WireSpacingInfo = value;
+  }
+
+  public WirePosition() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireSpacing.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireSpacing.java
new file mode 100644
index 0000000..411de11
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireSpacing.java
@@ -0,0 +1,192 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssets.DuctBank;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Length;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Wires.ACLineSegment;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Wires.PerLengthLineParameter;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Wire spacing data that associates multiple wire positions with the line segment,
+ * and allows to calculate line segment impedances. Number of phases can be
+ * derived from the number of associated wire positions whose phase is not neutral.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:12:12
+ */
+@SuppressWarnings("javadoc")
+public class WireSpacing extends IdentifiedObject {
+
+  /**
+   * If true, this spacing data describes a cable.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean isCable;
+
+  /**
+   * If true, this spacing data describes a cable.
+   */
+  public Boolean isIsCable() {
+
+    return isCable;
+  }
+
+  /**
+   * If true, this spacing data describes a cable.
+   */
+  public void setIsCable(final Boolean value) {
+
+    this.isCable = value;
+  }
+
+  /**
+   * Number of wire sub-conductors in the symmetrical bundle (typically between 1
+   * and 4).
+   */
+  private Integer phaseWireCount;
+
+  /**
+   * Number of wire sub-conductors in the symmetrical bundle (typically between 1
+   * and 4).
+   */
+  public Integer getPhaseWireCount() {
+
+    return phaseWireCount;
+  }
+
+  /**
+   * Number of wire sub-conductors in the symmetrical bundle (typically between 1
+   * and 4).
+   */
+  public void setPhaseWireCount(final Integer value) {
+
+    this.phaseWireCount = value;
+  }
+
+  /**
+   * Distance between wire sub-conductors in a symmetrical bundle.
+   */
+  private Length phaseWireSpacing;
+
+  /**
+   * Distance between wire sub-conductors in a symmetrical bundle.
+   */
+  public Length getPhaseWireSpacing() {
+
+    return phaseWireSpacing;
+  }
+
+  /**
+   * Distance between wire sub-conductors in a symmetrical bundle.
+   */
+  public void setPhaseWireSpacing(final Length value) {
+
+    this.phaseWireSpacing = value;
+  }
+
+  /**
+   * Usage of the associated wires.
+   */
+  private WireUsageKind usage;
+
+  /**
+   * Usage of the associated wires.
+   */
+  public WireUsageKind getUsage() {
+
+    return usage;
+  }
+
+  /**
+   * Usage of the associated wires.
+   */
+  public void setUsage(final WireUsageKind value) {
+
+    this.usage = value;
+  }
+
+  /**
+  * 
+  */
+  private DuctBank DuctBank;
+
+  /**
+  * 
+  */
+  public DuctBank getDuctBank() {
+
+    return DuctBank;
+  }
+
+  /**
+  * 
+  */
+  public void setDuctBank(final DuctBank value) {
+
+    this.DuctBank = value;
+  }
+
+  /**
+   * All per-length parameters calculated from this wire spacing datasheet.
+   */
+  private List<PerLengthLineParameter> PerLengthParameters;
+
+  /**
+   * All per-length parameters calculated from this wire spacing datasheet.
+   */
+  public List<PerLengthLineParameter> getPerLengthParameters() {
+
+    return PerLengthParameters;
+  }
+
+  /**
+   * All per-length parameters calculated from this wire spacing datasheet.
+   */
+  public void setPerLengthParameters(final List<PerLengthLineParameter> value) {
+
+    this.PerLengthParameters = value;
+  }
+
+  /**
+   * All line segments described with this wire spacing configuration.
+   */
+  private List<ACLineSegment> ACLineSegments;
+
+  /**
+   * All line segments described with this wire spacing configuration.
+   */
+  public List<ACLineSegment> getACLineSegments() {
+
+    return ACLineSegments;
+  }
+
+  /**
+   * All line segments described with this wire spacing configuration.
+   */
+  public void setACLineSegments(final List<ACLineSegment> value) {
+
+    this.ACLineSegments = value;
+  }
+
+  public WireSpacing() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireUsageKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireUsageKind.java
new file mode 100644
index 0000000..c8c430c
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/AssetInfo/WireUsageKind.java
@@ -0,0 +1,42 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of wire usage.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:12:12
+ */
+public enum WireUsageKind implements ICimEntity {
+  /**
+   * Wire is used in extra-high voltage or high voltage network.
+   */
+  transmission,
+  /**
+   * Wire is used in medium voltage network.
+   */
+  distribution,
+  /**
+   * Wire is used in low voltage circuit.
+   */
+  secondary,
+  /**
+   * Other kind of wire usage.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AcceptanceTest.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AcceptanceTest.java
new file mode 100644
index 0000000..64157b0
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AcceptanceTest.java
@@ -0,0 +1,114 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.Date;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Acceptance test for assets.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:07
+ */
+@SuppressWarnings("javadoc")
+public class AcceptanceTest implements ICimCompound {
+
+  /**
+   * Date and time the asset was last tested using the 'type' of test and yielding
+   * the current status in 'success' attribute.
+   */
+  @Cim(originalType = "DateTime")
+  private Date dateTime;
+
+  /**
+   * Date and time the asset was last tested using the 'type' of test and yielding
+   * the current status in 'success' attribute.
+   */
+  public Date getDateTime() {
+
+    return dateTime;
+  }
+
+  /**
+   * Date and time the asset was last tested using the 'type' of test and yielding
+   * the current status in 'success' attribute.
+   */
+  public void setDateTime(final Date value) {
+
+    this.dateTime = value;
+  }
+
+  /**
+   * True if asset has passed acceptance test and may be placed in or is in service.
+   * It is set to false if asset is removed from service and is required to be
+   * tested again before being placed back in service, possibly in a new location.
+   * Since asset may go through multiple tests during its lifecycle, the date of
+   * each acceptance test may be recorded in 'Asset.ActivityRecord.status.dateTime'.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean success;
+
+  /**
+   * True if asset has passed acceptance test and may be placed in or is in service.
+   * It is set to false if asset is removed from service and is required to be
+   * tested again before being placed back in service, possibly in a new location.
+   * Since asset may go through multiple tests during its lifecycle, the date of
+   * each acceptance test may be recorded in 'Asset.ActivityRecord.status.dateTime'.
+   */
+  public Boolean isSuccess() {
+
+    return success;
+  }
+
+  /**
+   * True if asset has passed acceptance test and may be placed in or is in service.
+   * It is set to false if asset is removed from service and is required to be
+   * tested again before being placed back in service, possibly in a new location.
+   * Since asset may go through multiple tests during its lifecycle, the date of
+   * each acceptance test may be recorded in 'Asset.ActivityRecord.status.dateTime'.
+   */
+  public void setSuccess(final Boolean value) {
+
+    this.success = value;
+  }
+
+  /**
+   * Type of test or group of tests that was conducted on 'dateTime'.
+   */
+  private String type;
+
+  /**
+   * Type of test or group of tests that was conducted on 'dateTime'.
+   */
+  public String getType() {
+
+    return type;
+  }
+
+  /**
+   * Type of test or group of tests that was conducted on 'dateTime'.
+   */
+  public void setType(final String value) {
+
+    this.type = value;
+  }
+
+  public AcceptanceTest() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Asset.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Asset.java
new file mode 100644
index 0000000..86b8b2e
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Asset.java
@@ -0,0 +1,664 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.ConfigurationEvent;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.ElectronicAddress;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Location;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Ownership;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.ScheduledEvent;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Status;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssets.FinancialInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssets.Medium;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssets.Reconditioning;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssets.ReliabilityInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfERPSupport.ErpItemMaster;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Operations.OperationalTag;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Work.WorkTask;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Money;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.PerCent;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Meas.Measurement;
+import org.eclipse.openk.common.dataexchange.cim.Cim;
+
+/**
+ * Tangible resource of the utility, including power system equipment, various end
+ * devices, cabinets, buildings, etc. For electrical network equipment, the role
+ * of the asset is defined through PowerSystemResource and its subclasses, defined
+ * mainly in the Wires model (refer to IEC61970-301 and model package IEC61970::
+ * Wires). Asset description places emphasis on the physical characteristics of
+ * the equipment fulfilling that role.
+ * 
+ * @created 10-Aug-2017 18:09:16
+ */
+@SuppressWarnings("javadoc")
+public class Asset extends IdentifiedObject {
+
+  /**
+   * Information on acceptance test.
+   */
+  private AcceptanceTest acceptanceTest;
+
+  /**
+   * Information on acceptance test.
+   */
+  public AcceptanceTest getAcceptanceTest() {
+
+    return acceptanceTest;
+  }
+
+  /**
+   * Information on acceptance test.
+   */
+  public void setAcceptanceTest(final AcceptanceTest value) {
+
+    this.acceptanceTest = value;
+  }
+
+  /**
+   * True if asset is considered critical for some reason (for example, a pole with
+   * critical attachments).
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean critical;
+
+  /**
+   * True if asset is considered critical for some reason (for example, a pole with
+   * critical attachments).
+   */
+  public Boolean isCritical() {
+
+    return critical;
+  }
+
+  /**
+   * True if asset is considered critical for some reason (for example, a pole with
+   * critical attachments).
+   */
+  public void setCritical(final Boolean value) {
+
+    this.critical = value;
+  }
+
+  /**
+   * Electronic address.
+   */
+  private ElectronicAddress electronicAddress;
+
+  /**
+   * Electronic address.
+   */
+  public ElectronicAddress getElectronicAddress() {
+
+    return electronicAddress;
+  }
+
+  /**
+   * Electronic address.
+   */
+  public void setElectronicAddress(final ElectronicAddress value) {
+
+    this.electronicAddress = value;
+  }
+
+  /**
+   * Condition of asset in inventory or at time of installation. Examples include
+   * new, rebuilt, overhaul required, other. Refer to inspection data for
+   * information on the most current condition of the asset.
+   */
+  private String initialCondition;
+
+  /**
+   * Condition of asset in inventory or at time of installation. Examples include
+   * new, rebuilt, overhaul required, other. Refer to inspection data for
+   * information on the most current condition of the asset.
+   */
+  public String getInitialCondition() {
+
+    return initialCondition;
+  }
+
+  /**
+   * Condition of asset in inventory or at time of installation. Examples include
+   * new, rebuilt, overhaul required, other. Refer to inspection data for
+   * information on the most current condition of the asset.
+   */
+  public void setInitialCondition(final String value) {
+
+    this.initialCondition = value;
+  }
+
+  /**
+   * Whenever an asset is reconditioned, percentage of expected life for the asset
+   * when it was new; zero for new devices.
+   */
+  private PerCent initialLossOfLife;
+
+  /**
+   * Whenever an asset is reconditioned, percentage of expected life for the asset
+   * when it was new; zero for new devices.
+   */
+  public PerCent getInitialLossOfLife() {
+
+    return initialLossOfLife;
+  }
+
+  /**
+   * Whenever an asset is reconditioned, percentage of expected life for the asset
+   * when it was new; zero for new devices.
+   */
+  public void setInitialLossOfLife(final PerCent value) {
+
+    this.initialLossOfLife = value;
+  }
+
+  /**
+   * Lifecycle dates for this asset.
+   */
+  private LifecycleDate lifecycle;
+
+  /**
+   * Lifecycle dates for this asset.
+   */
+  public LifecycleDate getLifecycle() {
+
+    return lifecycle;
+  }
+
+  /**
+   * Lifecycle dates for this asset.
+   */
+  public void setLifecycle(final LifecycleDate value) {
+
+    this.lifecycle = value;
+  }
+
+  /**
+   * Lot number for this asset. Even for the same model and version number, many
+   * assets are manufactured in lots.
+   */
+  private String lotNumber;
+
+  /**
+   * Lot number for this asset. Even for the same model and version number, many
+   * assets are manufactured in lots.
+   */
+  public String getLotNumber() {
+
+    return lotNumber;
+  }
+
+  /**
+   * Lot number for this asset. Even for the same model and version number, many
+   * assets are manufactured in lots.
+   */
+  public void setLotNumber(final String value) {
+
+    this.lotNumber = value;
+  }
+
+  /**
+   * Purchase price of asset.
+   */
+  private Money purchasePrice;
+
+  /**
+   * Purchase price of asset.
+   */
+  public Money getPurchasePrice() {
+
+    return purchasePrice;
+  }
+
+  /**
+   * Purchase price of asset.
+   */
+  public void setPurchasePrice(final Money value) {
+
+    this.purchasePrice = value;
+  }
+
+  /**
+   * Serial number of this asset.
+   */
+  private String serialNumber;
+
+  /**
+   * Serial number of this asset.
+   */
+  public String getSerialNumber() {
+
+    return serialNumber;
+  }
+
+  /**
+   * Serial number of this asset.
+   */
+  public void setSerialNumber(final String value) {
+
+    this.serialNumber = value;
+  }
+
+  /**
+   * Status of this asset.
+   */
+  private Status status;
+
+  /**
+   * Status of this asset.
+   */
+  public Status getStatus() {
+
+    return status;
+  }
+
+  /**
+   * Status of this asset.
+   */
+  public void setStatus(final Status value) {
+
+    this.status = value;
+  }
+
+  /**
+   * Utility-specific classification of Asset and its subtypes, according to their
+   * corporate standards, practices, and existing IT systems (e.g., for management
+   * of assets, maintenance, work, outage, customers, etc.).
+   */
+  private String type;
+
+  /**
+   * Utility-specific classification of Asset and its subtypes, according to their
+   * corporate standards, practices, and existing IT systems (e.g., for management
+   * of assets, maintenance, work, outage, customers, etc.).
+   */
+  public String getType() {
+
+    return type;
+  }
+
+  /**
+   * Utility-specific classification of Asset and its subtypes, according to their
+   * corporate standards, practices, and existing IT systems (e.g., for management
+   * of assets, maintenance, work, outage, customers, etc.).
+   */
+  public void setType(final String value) {
+
+    this.type = value;
+  }
+
+  /**
+   * Uniquely tracked commodity (UTC) number.
+   */
+  private String utcNumber;
+
+  /**
+   * Uniquely tracked commodity (UTC) number.
+   */
+  public String getUtcNumber() {
+
+    return utcNumber;
+  }
+
+  /**
+   * Uniquely tracked commodity (UTC) number.
+   */
+  public void setUtcNumber(final String value) {
+
+    this.utcNumber = value;
+  }
+
+  /**
+  * 
+  */
+  private List<ScheduledEvent> ScheduledEvents;
+
+  /**
+  * 
+  */
+  public List<ScheduledEvent> getScheduledEvents() {
+
+    return ScheduledEvents;
+  }
+
+  /**
+  * 
+  */
+  public void setScheduledEvents(final List<ScheduledEvent> value) {
+
+    this.ScheduledEvents = value;
+  }
+
+  /**
+   * All work tasks on replacement of this old asset.
+   */
+  private List<WorkTask> ReplacementWorkTasks;
+
+  /**
+   * All work tasks on replacement of this old asset.
+   */
+  public List<WorkTask> getReplacementWorkTasks() {
+
+    return ReplacementWorkTasks;
+  }
+
+  /**
+   * All work tasks on replacement of this old asset.
+   */
+  public void setReplacementWorkTasks(final List<WorkTask> value) {
+
+    this.ReplacementWorkTasks = value;
+  }
+
+  /**
+  * 
+  */
+  private List<Medium> Mediums;
+
+  /** 
+  * 
+  */
+  public List<Medium> getMediums() {
+
+    return Mediums;
+  }
+
+  /**
+  * 
+  */
+  public void setMediums(final List<Medium> value) {
+
+    this.Mediums = value;
+  }
+
+  /**
+  * 
+  */
+  private ErpItemMaster ErpItemMaster;
+
+  /**
+  * 
+  */
+  public ErpItemMaster getErpItemMaster() {
+
+    return ErpItemMaster;
+  }
+
+  /**
+  * 
+  */
+  public void setErpItemMaster(final ErpItemMaster value) {
+
+    this.ErpItemMaster = value;
+  }
+
+  /**
+   * All non-replacement work tasks performed on this asset.
+   */
+  private List<WorkTask> WorkTasks;
+
+  /**
+   * All non-replacement work tasks performed on this asset.
+   */
+  public List<WorkTask> getWorkTasks() {
+
+    return WorkTasks;
+  }
+
+  /**
+   * All non-replacement work tasks performed on this asset.
+   */
+  public void setWorkTasks(final List<WorkTask> value) {
+
+    this.WorkTasks = value;
+  }
+
+  /**
+   * All operational tags placed on this asset.
+   */
+  private List<OperationalTag> OperationalTags;
+
+  /**
+   * All operational tags placed on this asset.
+   */
+  public List<OperationalTag> getOperationalTags() {
+
+    return OperationalTags;
+  }
+
+  /**
+   * All operational tags placed on this asset.
+   */
+  public void setOperationalTags(final List<OperationalTag> value) {
+
+    this.OperationalTags = value;
+  }
+
+  /**
+   * All procedures applicable to this asset.
+   */
+  private List<Procedure> Procedures;
+
+  /**
+   * All procedures applicable to this asset.
+   */
+  public List<Procedure> getProcedures() {
+
+    return Procedures;
+  }
+
+  /**
+   * All procedures applicable to this asset.
+   */
+  public void setProcedures(final List<Procedure> value) {
+
+    this.Procedures = value;
+  }
+
+  /**
+  * 
+  */
+  private List<ReliabilityInfo> ReliabilityInfos;
+
+  /**
+  * 
+  */
+  public List<ReliabilityInfo> getReliabilityInfos() {
+
+    return ReliabilityInfos;
+  }
+
+  /**
+  * 
+  */
+  public void setReliabilityInfos(final List<ReliabilityInfo> value) {
+
+    this.ReliabilityInfos = value;
+  }
+
+  /**
+  * 
+  */
+  private FinancialInfo FinancialInfo;
+
+  /**
+  * 
+  */
+  public FinancialInfo getFinancialInfo() {
+
+    return FinancialInfo;
+  }
+
+  /**
+  * 
+  */
+  public void setFinancialInfo(final FinancialInfo value) {
+
+    this.FinancialInfo = value;
+  }
+
+  /**
+   * Container of this asset.
+   */
+  private AssetContainer AssetContainer;
+
+  /**
+   * Container of this asset.
+   */
+  public AssetContainer getAssetContainer() {
+
+    return AssetContainer;
+  }
+
+  /**
+   * Container of this asset.
+   */
+  public void setAssetContainer(final AssetContainer value) {
+
+    this.AssetContainer = value;
+  }
+
+  /**
+  * 
+  */
+  private List<Reconditioning> Reconditionings;
+
+  /**
+  * 
+  */
+  public List<Reconditioning> getReconditionings() {
+
+    return Reconditionings;
+  }
+
+  /**
+  * 
+  */
+  public void setReconditionings(final List<Reconditioning> value) {
+
+    this.Reconditionings = value;
+  }
+
+  /**
+   * Data applicable to this asset.
+   */
+  private AssetInfo AssetInfo;
+
+  /**
+   * Data applicable to this asset.
+   */
+  public AssetInfo getAssetInfo() {
+
+    return AssetInfo;
+  }
+
+  /**
+   * Data applicable to this asset.
+   */
+  public void setAssetInfo(final AssetInfo value) {
+
+    this.AssetInfo = value;
+  }
+
+  /**
+  * 
+  */
+  private List<Measurement> Measurements;
+
+  /**
+  * 
+  */
+  public List<Measurement> getMeasurements() {
+
+    return Measurements;
+  }
+
+  /**
+  * 
+  */
+  public void setMeasurements(final List<Measurement> value) {
+
+    this.Measurements = value;
+  }
+
+  /**
+   * Location of this asset.
+   */
+  private Location Location;
+
+  /**
+   * Location of this asset.
+   */
+  public Location getLocation() {
+
+    return Location;
+  }
+
+  /**
+   * Location of this asset.
+   */
+  public void setLocation(final Location value) {
+
+    this.Location = value;
+  }
+
+  /**
+   * All configuration events created for this asset.
+   */
+  private List<ConfigurationEvent> ConfigurationEvents;
+
+  /**
+   * All configuration events created for this asset.
+   */
+  public List<ConfigurationEvent> getConfigurationEvents() {
+
+    return ConfigurationEvents;
+  }
+
+  /**
+   * All configuration events created for this asset.
+   */
+  public void setConfigurationEvents(final List<ConfigurationEvent> value) {
+
+    this.ConfigurationEvents = value;
+  }
+
+  /**
+   * All ownerships of this asset.
+   */
+  private List<Ownership> Ownerships;
+
+  /**
+   * All ownerships of this asset.
+   */
+  public List<Ownership> getOwnerships() {
+
+    return Ownerships;
+  }
+
+  /**
+   * All ownerships of this asset.
+   */
+  public void setOwnerships(final List<Ownership> value) {
+
+    this.Ownerships = value;
+  }
+
+  public Asset() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetContainer.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetContainer.java
new file mode 100644
index 0000000..9271b63
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetContainer.java
@@ -0,0 +1,96 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfLocations.*;
+
+/**
+ * Asset that is aggregation of other assets such as conductors, transformers,
+ * switchgear, land, fences, buildings, equipment, vehicles, etc.
+ * 
+ * @created 10-Aug-2017 18:09:17
+ */
+@SuppressWarnings("javadoc")
+public class AssetContainer extends Asset {
+
+  /**
+  * 
+  */
+  private List<LandProperty> LandProperties;
+
+  /**
+  * 
+  */
+  public List<LandProperty> getLandProperties() {
+
+    return LandProperties;
+  }
+
+  /**
+  * 
+  */
+  public void setLandProperties(final List<LandProperty> value) {
+
+    this.LandProperties = value;
+  }
+
+  /**
+   * All seals applied to this asset container.
+   */
+  private List<Seal> Seals;
+
+  /**
+   * All seals applied to this asset container.
+   */
+  public List<Seal> getSeals() {
+
+    return Seals;
+  }
+
+  /**
+   * All seals applied to this asset container.
+   */
+  public void setSeals(final List<Seal> value) {
+
+    this.Seals = value;
+  }
+
+  /**
+   * All assets within this container asset.
+   */
+  private List<Asset> Assets;
+
+  /**
+   * All assets within this container asset.
+   */
+  public List<Asset> getAssets() {
+
+    return Assets;
+  }
+
+  /**
+   * All assets within this container asset.
+   */
+  public void setAssets(final List<Asset> value) {
+
+    this.Assets = value;
+  }
+
+  public AssetContainer() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetFunction.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetFunction.java
new file mode 100644
index 0000000..4f6451f
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetFunction.java
@@ -0,0 +1,135 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+
+/**
+ * Function performed by an asset.
+ * 
+ * @created 10-Aug-2017 18:09:17
+ */
+@SuppressWarnings("javadoc")
+public class AssetFunction extends IdentifiedObject {
+
+  /**
+   * Configuration specified for this function.
+   */
+  private String configID;
+
+  /**
+   * Configuration specified for this function.
+   */
+  public String getConfigID() {
+
+    return configID;
+  }
+
+  /**
+   * Configuration specified for this function.
+   */
+  public void setConfigID(final String value) {
+
+    this.configID = value;
+  }
+
+  /**
+   * Firmware version.
+   */
+  private String firmwareID;
+
+  /**
+   * Firmware version.
+   */
+  public String getFirmwareID() {
+
+    return firmwareID;
+  }
+
+  /**
+   * Firmware version.
+   */
+  public void setFirmwareID(final String value) {
+
+    this.firmwareID = value;
+  }
+
+  /**
+   * Hardware version.
+   */
+  private String hardwareID;
+
+  /**
+   * Hardware version.
+   */
+  public String getHardwareID() {
+
+    return hardwareID;
+  }
+
+  /**
+   * Hardware version.
+   */
+  public void setHardwareID(final String value) {
+
+    this.hardwareID = value;
+  }
+
+  /**
+   * Password needed to access this function.
+   */
+  private String password;
+
+  /**
+   * Password needed to access this function.
+   */
+  public String getPassword() {
+
+    return password;
+  }
+
+  /**
+   * Password needed to access this function.
+   */
+  public void setPassword(final String value) {
+
+    this.password = value;
+  }
+
+  /**
+   * Name of program.
+   */
+  private String programID;
+
+  /**
+   * Name of program.
+   */
+  public String getProgramID() {
+
+    return programID;
+  }
+
+  /**
+   * Name of program.
+   */
+  public void setProgramID(final String value) {
+
+    this.programID = value;
+  }
+
+  public AssetFunction() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetInfo.java
new file mode 100644
index 0000000..86aad7b
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetInfo.java
@@ -0,0 +1,104 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.PowerSystemResource;
+
+/**
+ * Set of attributes of an asset, representing typical datasheet information of a
+ * physical device that can be instantiated and shared in different data exchange
+ * contexts:
+ * - as attributes of an asset instance (installed or in stock)
+ * - as attributes of an asset model (product by a manufacturer)
+ * - as attributes of a type asset (generic type of an asset as used in
+ * designs/extension planning).
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:17
+ */
+@SuppressWarnings("javadoc")
+public class AssetInfo extends IdentifiedObject {
+
+  /**
+   * Asset model described by this data.
+   */
+  private AssetModel AssetModel;
+
+  /**
+   * Asset model described by this data.
+   */
+  public AssetModel getAssetModel() {
+
+    return AssetModel;
+  }
+
+  /**
+   * Asset model described by this data.
+   */
+  public void setAssetModel(final AssetModel value) {
+
+    this.AssetModel = value;
+  }
+
+  /**
+   * All power system resources with this datasheet information.
+   */
+  private List<PowerSystemResource> PowerSystemResources;
+
+  /**
+   * All power system resources with this datasheet information.
+   */
+  public List<PowerSystemResource> getPowerSystemResources() {
+
+    return PowerSystemResources;
+  }
+
+  /**
+   * All power system resources with this datasheet information.
+   */
+  public void setPowerSystemResources(final List<PowerSystemResource> value) {
+
+    this.PowerSystemResources = value;
+  }
+
+  /**
+   * All assets described by this data.
+   */
+  private List<Asset> Assets;
+
+  /**
+   * All assets described by this data.
+   */
+  public List<Asset> getAssets() {
+
+    return Assets;
+  }
+
+  /**
+   * All assets described by this data.
+   */
+  public void setAssets(final List<Asset> value) {
+
+    this.Assets = value;
+  }
+
+  public AssetInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetLocationHazard.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetLocationHazard.java
new file mode 100644
index 0000000..b775169
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetLocationHazard.java
@@ -0,0 +1,35 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Hazard;
+
+/**
+ * Potential hazard related to the location of an asset. Examples are trees
+ * growing under overhead power lines, a park being located by a substation (i.e.,
+ * children climb fence to recover a ball), a lake near an overhead distribution
+ * line (fishing pole/line contacting power lines), dangerous neighbour, etc.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:17
+ */
+@SuppressWarnings("javadoc")
+public class AssetLocationHazard extends Hazard {
+
+  public AssetLocationHazard() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetModel.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetModel.java
new file mode 100644
index 0000000..e738d2c
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetModel.java
@@ -0,0 +1,57 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfERPSupport.ErpInventoryCount;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+
+/**
+ * Model of an asset, either a product of a specific manufacturer or a generic
+ * asset model or material item. Datasheet characteristics are available through
+ * the associated AssetInfo subclass and can be shared with asset or power system
+ * resource instances.
+ * 
+ * @created 10-Aug-2017 18:09:17
+ */
+@SuppressWarnings("javadoc")
+public class AssetModel extends IdentifiedObject {
+
+  /**
+  * 
+  */
+  private List<ErpInventoryCount> ErpInventoryCounts;
+
+  /** 
+  * 
+  */
+  public List<ErpInventoryCount> getErpInventoryCounts() {
+
+    return ErpInventoryCounts;
+  }
+
+  /**
+  * 
+  */
+  public void setErpInventoryCounts(final List<ErpInventoryCount> value) {
+
+    this.ErpInventoryCounts = value;
+  }
+
+  public AssetModel() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetModelUsageKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetModelUsageKind.java
new file mode 100644
index 0000000..01c697f
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetModelUsageKind.java
@@ -0,0 +1,58 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Usage for an asset model.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:18
+ */
+public enum AssetModelUsageKind implements ICimEntity {
+  /**
+   * Asset model is intended for use in distribution overhead network.
+   */
+  distributionOverhead,
+  /**
+   * Asset model is intended for use in underground distribution network.
+   */
+  distributionUnderground,
+  /**
+   * Asset model is intended for use in transmission network.
+   */
+  transmission,
+  /**
+   * Asset model is intended for use in substation.
+   */
+  substation,
+  /**
+   * Asset model is intended for use as streetlight.
+   */
+  streetlight,
+  /**
+   * Asset model is intended for use in customer substation.
+   */
+  customerSubstation,
+  /**
+   * Usage of the asset model is unknown.
+   */
+  unknown,
+  /**
+   * Other kind of asset model usage.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetOrganisationRole.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetOrganisationRole.java
new file mode 100644
index 0000000..9b17ee9
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetOrganisationRole.java
@@ -0,0 +1,55 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.OrganisationRole;
+
+/**
+ * Role an organisation plays with respect to asset.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:18
+ */
+@SuppressWarnings("javadoc")
+public class AssetOrganisationRole extends OrganisationRole {
+
+  /**
+   * All assets for this organisation role.
+   */
+  private List<Asset> Assets;
+
+  /**
+   * All assets for this organisation role.
+   */
+  public List<Asset> getAssets() {
+
+    return Assets;
+  }
+
+  /**
+   * All assets for this organisation role.
+   */
+  public void setAssets(final List<Asset> value) {
+
+    this.Assets = value;
+  }
+
+  public AssetOrganisationRole() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetOwner.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetOwner.java
new file mode 100644
index 0000000..f4fbc59
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetOwner.java
@@ -0,0 +1,55 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.*;
+
+/**
+ * Owner of the asset.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:18
+ */
+@SuppressWarnings("javadoc")
+public class AssetOwner extends AssetOrganisationRole {
+
+  /**
+   * All ownerships of this owner.
+   */
+  private List<Ownership> Ownerships;
+
+  /**
+   * All ownerships of this owner.
+   */
+  public List<Ownership> getOwnerships() {
+
+    return Ownerships;
+  }
+
+  /**
+   * All ownerships of this owner.
+   */
+  public void setOwnerships(final List<Ownership> value) {
+
+    this.Ownerships = value;
+  }
+
+  public AssetOwner() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetUser.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetUser.java
new file mode 100644
index 0000000..13c62f8
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/AssetUser.java
@@ -0,0 +1,30 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+/**
+ * Organisation that is a user of the asset.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:18
+ */
+@SuppressWarnings("javadoc")
+public class AssetUser extends AssetOrganisationRole {
+
+  public AssetUser() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/ComMedia.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/ComMedia.java
new file mode 100644
index 0000000..d14d66d
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/ComMedia.java
@@ -0,0 +1,28 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+/**
+ * Communication media such as fibre optic cable, power-line, telephone, etc.
+ * 
+ * @created 10-Aug-2017 18:09:30
+ */
+@SuppressWarnings("javadoc")
+public class ComMedia extends Asset {
+
+  public ComMedia() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/CorporateStandardKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/CorporateStandardKind.java
new file mode 100644
index 0000000..c05a677
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/CorporateStandardKind.java
@@ -0,0 +1,42 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of corporate standard.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:37
+ */
+public enum CorporateStandardKind implements ICimEntity {
+  /**
+   * Asset model is used as corporate standard.
+   */
+  standard,
+  /**
+   * Asset model is used experimentally.
+   */
+  experimental,
+  /**
+   * Asset model usage is under evaluation.
+   */
+  underEvaluation,
+  /**
+   * Other kind of corporate standard for the asset model.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/LifecycleDate.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/LifecycleDate.java
new file mode 100644
index 0000000..281d26f
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/LifecycleDate.java
@@ -0,0 +1,181 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.Date;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Dates for lifecycle events of an asset.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:10:38
+ */
+@SuppressWarnings("javadoc")
+public class LifecycleDate implements ICimCompound {
+
+  /**
+   * (if applicable) Date current installation was completed, which may not be the
+   * same as the in-service date. Asset may have been installed at other locations
+   * previously. Ignored if asset is (1) not currently installed (e.g., stored in a
+   * depot) or (2) not intended to be installed (e.g., vehicle, tool).
+   */
+  private Date installationDate;
+
+  /**
+   * (if applicable) Date current installation was completed, which may not be the
+   * same as the in-service date. Asset may have been installed at other locations
+   * previously. Ignored if asset is (1) not currently installed (e.g., stored in a
+   * depot) or (2) not intended to be installed (e.g., vehicle, tool).
+   */
+  public Date getInstallationDate() {
+
+    return installationDate;
+  }
+
+  /**
+   * (if applicable) Date current installation was completed, which may not be the
+   * same as the in-service date. Asset may have been installed at other locations
+   * previously. Ignored if asset is (1) not currently installed (e.g., stored in a
+   * depot) or (2) not intended to be installed (e.g., vehicle, tool).
+   */
+  public void setInstallationDate(final Date value) {
+
+    this.installationDate = value;
+  }
+
+  /**
+   * Date the asset was manufactured.
+   */
+  private Date manufacturedDate;
+
+  /**
+   * Date the asset was manufactured.
+   */
+  public Date getManufacturedDate() {
+
+    return manufacturedDate;
+  }
+
+  /**
+   * Date the asset was manufactured.
+   */
+  public void setManufacturedDate(final Date value) {
+
+    this.manufacturedDate = value;
+  }
+
+  /**
+   * Date the asset was purchased. Note that even though an asset may have been
+   * purchased, it may not have been received into inventory at the time of purchase.
+   */
+  private Date purchaseDate;
+
+  /**
+   * Date the asset was purchased. Note that even though an asset may have been
+   * purchased, it may not have been received into inventory at the time of purchase.
+   */
+  public Date getPurchaseDate() {
+
+    return purchaseDate;
+  }
+
+  /**
+   * Date the asset was purchased. Note that even though an asset may have been
+   * purchased, it may not have been received into inventory at the time of purchase.
+   */
+  public void setPurchaseDate(final Date value) {
+
+    this.purchaseDate = value;
+  }
+
+  /**
+   * Date the asset was received and first placed into inventory.
+   */
+  private Date receivedDate;
+
+  /**
+   * Date the asset was received and first placed into inventory.
+   */
+  public Date getReceivedDate() {
+
+    return receivedDate;
+  }
+
+  /**
+   * Date the asset was received and first placed into inventory.
+   */
+  public void setReceivedDate(final Date value) {
+
+    this.receivedDate = value;
+  }
+
+  /**
+   * (if applicable) Date when the asset was last removed from service. Ignored if
+   * (1) not intended to be in service, or (2) currently in service.
+   */
+  private Date removalDate;
+
+  /**
+   * (if applicable) Date when the asset was last removed from service. Ignored if
+   * (1) not intended to be in service, or (2) currently in service.
+   */
+  public Date getRemovalDate() {
+
+    return removalDate;
+  }
+
+  /**
+   * (if applicable) Date when the asset was last removed from service. Ignored if
+   * (1) not intended to be in service, or (2) currently in service.
+   */
+  public void setRemovalDate(final Date value) {
+
+    this.removalDate = value;
+  }
+
+  /**
+   * (if applicable) Date the asset is permanently retired from service and may be
+   * scheduled for disposal. Ignored if asset is (1) currently in service, or (2)
+   * permanently removed from service.
+   */
+  private Date retiredDate;
+
+  /**
+   * (if applicable) Date the asset is permanently retired from service and may be
+   * scheduled for disposal. Ignored if asset is (1) currently in service, or (2)
+   * permanently removed from service.
+   */
+  public Date getRetiredDate() {
+
+    return retiredDate;
+  }
+
+  /**
+   * (if applicable) Date the asset is permanently retired from service and may be
+   * scheduled for disposal. Ignored if asset is (1) currently in service, or (2)
+   * permanently removed from service.
+   */
+  public void setRetiredDate(final Date value) {
+
+    this.retiredDate = value;
+  }
+
+  public LifecycleDate() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Maintainer.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Maintainer.java
new file mode 100644
index 0000000..d17ed16
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Maintainer.java
@@ -0,0 +1,30 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+/**
+ * Organisation that maintains assets.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:10:43
+ */
+@SuppressWarnings("javadoc")
+public class Maintainer extends AssetOrganisationRole {
+
+  public Maintainer() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Manufacturer.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Manufacturer.java
new file mode 100644
index 0000000..8019314
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Manufacturer.java
@@ -0,0 +1,55 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.OrganisationRole;
+
+/**
+ * Organisation that manufactures asset products.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:10:43
+ */
+@SuppressWarnings("javadoc")
+public class Manufacturer extends OrganisationRole {
+
+  /**
+   * All asset models by this manufacturer.
+   */
+  private List<ProductAssetModel> ProductAssetModels;
+
+  /**
+   * All asset models by this manufacturer.
+   */
+  public List<ProductAssetModel> getProductAssetModels() {
+
+    return ProductAssetModels;
+  }
+
+  /**
+   * All asset models by this manufacturer.
+   */
+  public void setProductAssetModels(final List<ProductAssetModel> value) {
+
+    this.ProductAssetModels = value;
+  }
+
+  public Manufacturer() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Procedure.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Procedure.java
new file mode 100644
index 0000000..8e763cd
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Procedure.java
@@ -0,0 +1,138 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Document;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfWork.*;
+
+/**
+ * Documented procedure for various types of work or work tasks on assets.
+ * 
+ * @created 10-Aug-2017 18:11:15
+ */
+@SuppressWarnings("javadoc")
+public class Procedure extends Document {
+
+  /**
+   * Textual description of this procedure.
+   */
+  private String instruction;
+
+  /**
+   * Textual description of this procedure.
+   */
+  public String getInstruction() {
+
+    return instruction;
+  }
+
+  /**
+   * Textual description of this procedure.
+   */
+  public void setInstruction(final String value) {
+
+    this.instruction = value;
+  }
+
+  /**
+   * Kind of procedure.
+   */
+  private ProcedureKind kind;
+
+  /**
+   * Kind of procedure.
+   */
+  public ProcedureKind getKind() {
+
+    return kind;
+  }
+
+  /**
+   * Kind of procedure.
+   */
+  public void setKind(final ProcedureKind value) {
+
+    this.kind = value;
+  }
+
+  /**
+   * Sequence number in a sequence of procedures being performed.
+   */
+  private String sequenceNumber;
+
+  /**
+   * Sequence number in a sequence of procedures being performed.
+   */
+  public String getSequenceNumber() {
+
+    return sequenceNumber;
+  }
+
+  /**
+   * Sequence number in a sequence of procedures being performed.
+   */
+  public void setSequenceNumber(final String value) {
+
+    this.sequenceNumber = value;
+  }
+
+  /**
+  * 
+  */
+  private List<CompatibleUnit> CompatibleUnits;
+
+  /**
+  * 
+  */
+  public List<CompatibleUnit> getCompatibleUnits() {
+
+    return CompatibleUnits;
+  }
+
+  /**
+  * 
+  */
+  public void setCompatibleUnits(final List<CompatibleUnit> value) {
+
+    this.CompatibleUnits = value;
+  }
+
+  /**
+   * All data sets captured by this procedure.
+   */
+  private List<ProcedureDataSet> ProcedureDataSets;
+
+  /**
+   * All data sets captured by this procedure.
+   */
+  public List<ProcedureDataSet> getProcedureDataSets() {
+
+    return ProcedureDataSets;
+  }
+
+  /**
+   * All data sets captured by this procedure.
+   */
+  public void setProcedureDataSets(final List<ProcedureDataSet> value) {
+
+    this.ProcedureDataSets = value;
+  }
+
+  public Procedure() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/ProcedureDataSet.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/ProcedureDataSet.java
new file mode 100644
index 0000000..5fe1a0b
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/ProcedureDataSet.java
@@ -0,0 +1,100 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.*;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * A data set recorded each time a procedure is executed. Observed results are
+ * captured in associated measurement values and/or values for properties relevant
+ * to the type of procedure performed.
+ * 
+ * @created 10-Aug-2017 18:11:16
+ */
+@SuppressWarnings("javadoc")
+public class ProcedureDataSet extends Document {
+
+  /**
+   * Date and time procedure was completed.
+   */
+  @Cim(originalType = "DateTime")
+  private Date completedDateTime;
+
+  /**
+   * Date and time procedure was completed.
+   */
+  public Date getCompletedDateTime() {
+
+    return completedDateTime;
+  }
+
+  /**
+   * Date and time procedure was completed.
+   */
+  public void setCompletedDateTime(final Date value) {
+
+    this.completedDateTime = value;
+  }
+
+  /**
+   * Procedure capturing this data set.
+   */
+  private Procedure Procedure;
+
+  /**
+   * Procedure capturing this data set.
+   */
+  public Procedure getProcedure() {
+
+    return Procedure;
+  }
+
+  /**
+   * Procedure capturing this data set.
+   */
+  public void setProcedure(final Procedure value) {
+
+    this.Procedure = value;
+  }
+
+  /**
+   * UserAttributes used to specify further properties of this procedure data set. Use 'name' to specify what kind of property it is, and 'value.value' attribute for the actual value.
+   */
+  private List<UserAttribute> Properties;
+
+  /**
+   * UserAttributes used to specify further properties of this procedure data set. Use 'name' to specify what kind of property it is, and 'value.value' attribute for the actual value.
+   */
+  public List<UserAttribute> getProperties() {
+
+    return Properties;
+  }
+
+  /**
+   * UserAttributes used to specify further properties of this procedure data set. Use 'name' to specify what kind of property it is, and 'value.value' attribute for the actual value.
+   */
+  public void setProperties(final List<UserAttribute> value) {
+
+    this.Properties = value;
+  }
+
+  public ProcedureDataSet() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/ProcedureKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/ProcedureKind.java
new file mode 100644
index 0000000..26409f2
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/ProcedureKind.java
@@ -0,0 +1,46 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of procedure.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:16
+ */
+public enum ProcedureKind implements ICimEntity {
+  /**
+   * Inspection procedure.
+   */
+  inspection,
+  /**
+   * Diagnosis procedure.
+   */
+  diagnosis,
+  /**
+   * Maintenance procedure.
+   */
+  maintenance,
+  /**
+   * Test procedure.
+   */
+  test,
+  /**
+   * Other procedure.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/ProductAssetModel.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/ProductAssetModel.java
new file mode 100644
index 0000000..d053c2f
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/ProductAssetModel.java
@@ -0,0 +1,226 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo.AssetModelCatalogueItem;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssets.*;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Operations.*;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Weight;
+
+/**
+ * Asset model by a specific manufacturer.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:16
+ */
+@SuppressWarnings("javadoc")
+public class ProductAssetModel extends AssetModel {
+
+  /**
+   * Kind of corporate standard for this asset model.
+   */
+  private CorporateStandardKind corporateStandardKind;
+
+  /**
+   * Kind of corporate standard for this asset model.
+   */
+  public CorporateStandardKind getCorporateStandardKind() {
+
+    return corporateStandardKind;
+  }
+
+  /**
+   * Kind of corporate standard for this asset model.
+   */
+  public void setCorporateStandardKind(final CorporateStandardKind value) {
+
+    this.corporateStandardKind = value;
+  }
+
+  /**
+   * Manufacturer's model number.
+   */
+  private String modelNumber;
+
+  /**
+   * Manufacturer's model number.
+   */
+  public String getModelNumber() {
+
+    return modelNumber;
+  }
+
+  /**
+   * Manufacturer's model number.
+   */
+  public void setModelNumber(final String value) {
+
+    this.modelNumber = value;
+  }
+
+  /**
+   * Version number for product model, which indicates vintage of the product.
+   */
+  private String modelVersion;
+
+  /**
+   * Version number for product model, which indicates vintage of the product.
+   */
+  public String getModelVersion() {
+
+    return modelVersion;
+  }
+
+  /**
+   * Version number for product model, which indicates vintage of the product.
+   */
+  public void setModelVersion(final String value) {
+
+    this.modelVersion = value;
+  }
+
+  /**
+   * Intended usage for this asset model.
+   */
+  private AssetModelUsageKind usageKind;
+
+  /**
+   * Intended usage for this asset model.
+   */
+  public AssetModelUsageKind getUsageKind() {
+
+    return usageKind;
+  }
+
+  /**
+   * Intended usage for this asset model.
+   */
+  public void setUsageKind(final AssetModelUsageKind value) {
+
+    this.usageKind = value;
+  }
+
+  /**
+   * Total manufactured weight of asset.
+   */
+  private Weight weightTotal;
+
+  /**
+   * Total manufactured weight of asset.
+   */
+  public Weight getWeightTotal() {
+
+    return weightTotal;
+  }
+
+  /**
+   * Total manufactured weight of asset.
+   */
+  public void setWeightTotal(final Weight value) {
+
+    this.weightTotal = value;
+  }
+
+  /**
+   * All operational restrictions applying to this asset model.
+   */
+  private List<OperationalRestriction> OperationalRestrictions;
+
+  /**
+   * All operational restrictions applying to this asset model.
+   */
+  public List<OperationalRestriction> getOperationalRestrictions() {
+
+    return OperationalRestrictions;
+  }
+
+  /**
+   * All operational restrictions applying to this asset model.
+   */
+  public void setOperationalRestrictions(final List<OperationalRestriction> value) {
+
+    this.OperationalRestrictions = value;
+  }
+
+  /**
+   * Generic asset model or material satisified by this product asset model.
+   */
+  private GenericAssetModel GenericAssetModelOrMaterial;
+
+  /**
+   * Generic asset model or material satisified by this product asset model.
+   */
+  public GenericAssetModel getGenericAssetModelOrMaterial() {
+
+    return GenericAssetModelOrMaterial;
+  }
+
+  /**
+   * Generic asset model or material satisified by this product asset model.
+   */
+  public void setGenericAssetModelOrMaterial(final GenericAssetModel value) {
+
+    this.GenericAssetModelOrMaterial = value;
+  }
+
+  /**
+  * 
+  */
+  private List<AssetModelCatalogueItem> AssetModelCatalogueItems;
+
+  /**
+  * 
+  */
+  public List<AssetModelCatalogueItem> getAssetModelCatalogueItems() {
+
+    return AssetModelCatalogueItems;
+  }
+
+  /**
+  * 
+  */
+  public void setAssetModelCatalogueItems(final List<AssetModelCatalogueItem> value) {
+
+    this.AssetModelCatalogueItems = value;
+  }
+
+  /**
+   * Manufacturer of this asset model.
+   */
+  private Manufacturer Manufacturer;
+
+  /**
+   * Manufacturer of this asset model.
+   */
+  public Manufacturer getManufacturer() {
+
+    return Manufacturer;
+  }
+
+  /**
+   * Manufacturer of this asset model.
+   */
+  public void setManufacturer(final Manufacturer value) {
+
+    this.Manufacturer = value;
+  }
+
+  public ProductAssetModel() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Seal.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Seal.java
new file mode 100644
index 0000000..cffbfd5
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/Seal.java
@@ -0,0 +1,141 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import java.util.Date;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Physically controls access to AssetContainers.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:36
+ */
+@SuppressWarnings("javadoc")
+public class Seal extends IdentifiedObject {
+
+  /**
+   * Date and time this seal has been applied.
+   */
+  @Cim(originalType = "DateTime")
+  private Date appliedDateTime;
+
+  /**
+   * Date and time this seal has been applied.
+   */
+  public Date getAppliedDateTime() {
+
+    return appliedDateTime;
+  }
+
+  /**
+   * Date and time this seal has been applied.
+   */
+  public void setAppliedDateTime(final Date value) {
+
+    this.appliedDateTime = value;
+  }
+
+  /**
+   * Condition of seal.
+   */
+  private SealConditionKind condition;
+
+  /**
+   * Condition of seal.
+   */
+  public SealConditionKind getCondition() {
+
+    return condition;
+  }
+
+  /**
+   * Condition of seal.
+   */
+  public void setCondition(final SealConditionKind value) {
+
+    this.condition = value;
+  }
+
+  /**
+   * Kind of seal.
+   */
+  private SealKind kind;
+
+  /**
+   * Kind of seal.
+   */
+  public SealKind getKind() {
+
+    return kind;
+  }
+
+  /**
+   * Kind of seal.
+   */
+  public void setKind(final SealKind value) {
+
+    this.kind = value;
+  }
+
+  /**
+   * (reserved word) Seal number.
+   */
+  private String sealNumber;
+
+  /**
+   * (reserved word) Seal number.
+   */
+  public String getSealNumber() {
+
+    return sealNumber;
+  }
+
+  /**
+   * (reserved word) Seal number.
+   */
+  public void setSealNumber(final String value) {
+
+    this.sealNumber = value;
+  }
+
+  /**
+   * Asset container to which this seal is applied.
+   */
+  private AssetContainer AssetContainer;
+
+  /**
+   * Asset container to which this seal is applied.
+   */
+  public AssetContainer getAssetContainer() {
+
+    return AssetContainer;
+  }
+
+  /**
+   * Asset container to which this seal is applied.
+   */
+  public void setAssetContainer(final AssetContainer value) {
+
+    this.AssetContainer = value;
+  }
+
+  public Seal() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/SealConditionKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/SealConditionKind.java
new file mode 100644
index 0000000..2c220fd
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/SealConditionKind.java
@@ -0,0 +1,46 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of seal condition.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:36
+ */
+public enum SealConditionKind implements ICimEntity {
+  /**
+   * Seal is locked.
+   */
+  locked,
+  /**
+   * Seal is open.
+   */
+  open,
+  /**
+   * Seal is broken.
+   */
+  broken,
+  /**
+   * Seal is missing.
+   */
+  missing,
+  /**
+   * Other kind of seal condition.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/SealKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/SealKind.java
new file mode 100644
index 0000000..a3e25f6
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Assets/SealKind.java
@@ -0,0 +1,42 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of seal.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:36
+ */
+public enum SealKind implements ICimEntity {
+  /**
+   * Steel seal.
+   */
+  steel,
+  /**
+   * Lead seal.
+   */
+  lead,
+  /**
+   * Lock seal.
+   */
+  lock,
+  /**
+   * Other kind of seal.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ActivityRecord.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ActivityRecord.java
new file mode 100644
index 0000000..1863eb4
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ActivityRecord.java
@@ -0,0 +1,170 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.Date;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Records activity for an entity at a point in time; activity may be for an event
+ * that has already occurred or for a planned activity.
+ * 
+ * @created 10-Aug-2017 18:09:10
+ */
+@SuppressWarnings("javadoc")
+public class ActivityRecord extends IdentifiedObject {
+
+  /**
+   * Date and time this activity record has been created (different from the 'status.
+   * dateTime', which is the time of a status change of the associated object, if
+   * applicable).
+   */
+  @Cim(originalType = "DateTime")
+  private Date createdDateTime;
+
+  /**
+   * Date and time this activity record has been created (different from the 'status.
+   * dateTime', which is the time of a status change of the associated object, if
+   * applicable).
+   */
+  public Date getCreatedDateTime() {
+
+    return createdDateTime;
+  }
+
+  /**
+   * Date and time this activity record has been created (different from the 'status.
+   * dateTime', which is the time of a status change of the associated object, if
+   * applicable).
+   */
+  public void setCreatedDateTime(final Date value) {
+
+    this.createdDateTime = value;
+  }
+
+  /**
+   * Reason for event resulting in this activity record, typically supplied when
+   * user initiated.
+   */
+  private String reason;
+
+  /**
+   * Reason for event resulting in this activity record, typically supplied when
+   * user initiated.
+   */
+  public String getReason() {
+
+    return reason;
+  }
+
+  /**
+   * Reason for event resulting in this activity record, typically supplied when
+   * user initiated.
+   */
+  public void setReason(final String value) {
+
+    this.reason = value;
+  }
+
+  /**
+   * Severity level of event resulting in this activity record.
+   */
+  private String severity;
+
+  /**
+   * Severity level of event resulting in this activity record.
+   */
+  public String getSeverity() {
+
+    return severity;
+  }
+
+  /**
+   * Severity level of event resulting in this activity record.
+   */
+  public void setSeverity(final String value) {
+
+    this.severity = value;
+  }
+
+  /**
+   * Information on consequence of event resulting in this activity record.
+   */
+  private Status status;
+
+  /**
+   * Information on consequence of event resulting in this activity record.
+   */
+  public Status getStatus() {
+
+    return status;
+  }
+
+  /**
+   * Information on consequence of event resulting in this activity record.
+   */
+  public void setStatus(final Status value) {
+
+    this.status = value;
+  }
+
+  /**
+   * Type of event resulting in this activity record.
+   */
+  private String type;
+
+  /**
+   * Type of event resulting in this activity record.
+   */
+  public String getType() {
+
+    return type;
+  }
+
+  /**
+   * Type of event resulting in this activity record.
+   */
+  public void setType(final String value) {
+
+    this.type = value;
+  }
+
+  /**
+   * Author of this activity record.
+   */
+  private Author Author;
+
+  /**
+   * Author of this activity record.
+   */
+  public Author getAuthor() {
+
+    return Author;
+  }
+
+  /**
+   * Author of this activity record.
+   */
+  public void setAuthor(final Author value) {
+
+    this.Author = value;
+  }
+
+  public ActivityRecord() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Agreement.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Agreement.java
new file mode 100644
index 0000000..74d6e6e
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Agreement.java
@@ -0,0 +1,82 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.Date;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.DateTimeInterval;
+
+/**
+ * Formal agreement between two parties defining the terms and conditions for a
+ * set of services. The specifics of the services are, in turn, defined via one or
+ * more service agreements.
+ * 
+ * @created 10-Aug-2017 18:09:12
+ */
+@SuppressWarnings("javadoc")
+public class Agreement extends Document {
+
+  /**
+   * Date this agreement was consummated among associated persons and/or
+   * organisations.
+   */
+  private Date signDate;
+
+  /**
+   * Date this agreement was consummated among associated persons and/or
+   * organisations.
+   */
+  public Date getSignDate() {
+
+    return signDate;
+  }
+
+  /**
+   * Date this agreement was consummated among associated persons and/or
+   * organisations.
+   */
+  public void setSignDate(final Date value) {
+
+    this.signDate = value;
+  }
+
+  /**
+   * Date and time interval this agreement is valid (from going into effect to
+   * termination).
+   */
+  private DateTimeInterval validityInterval;
+
+  /**
+   * Date and time interval this agreement is valid (from going into effect to
+   * termination).
+   */
+  public DateTimeInterval getValidityInterval() {
+
+    return validityInterval;
+  }
+
+  /**
+   * Date and time interval this agreement is valid (from going into effect to
+   * termination).
+   */
+  public void setValidityInterval(final DateTimeInterval value) {
+
+    this.validityInterval = value;
+  }
+
+  public Agreement() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Appointment.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Appointment.java
new file mode 100644
index 0000000..2f6f5e4
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Appointment.java
@@ -0,0 +1,101 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.DateTimeInterval;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Meeting time and location.
+ * 
+ * @created 10-Aug-2017 18:09:15
+ */
+@SuppressWarnings("javadoc")
+public class Appointment extends IdentifiedObject {
+
+  /**
+   * True if requested to call customer when someone is about to arrive at their
+   * premises.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean callAhead;
+
+  /**
+   * True if requested to call customer when someone is about to arrive at their
+   * premises.
+   */
+  public Boolean isCallAhead() {
+
+    return callAhead;
+  }
+
+  /**
+   * True if requested to call customer when someone is about to arrive at their
+   * premises.
+   */
+  public void setCallAhead(final Boolean value) {
+
+    this.callAhead = value;
+  }
+
+  /**
+   * Date and time reserved for appointment.
+   */
+  private DateTimeInterval meetingInterval;
+
+  /**
+   * Date and time reserved for appointment.
+   */
+  public DateTimeInterval getMeetingInterval() {
+
+    return meetingInterval;
+  }
+
+  /**
+   * Date and time reserved for appointment.
+   */
+  public void setMeetingInterval(final DateTimeInterval value) {
+
+    this.meetingInterval = value;
+  }
+
+  /**
+   * All persons for this appointment.
+   */
+  private List<PersonRole> Persons;
+
+  /**
+   * All persons for this appointment.
+   */
+  public List<PersonRole> getPersons() {
+
+    return Persons;
+  }
+
+  /**
+   * All persons for this appointment.
+   */
+  public void setPersons(final List<PersonRole> value) {
+
+    this.Persons = value;
+  }
+
+  public Appointment() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Approver.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Approver.java
new file mode 100644
index 0000000..8a72ca5
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Approver.java
@@ -0,0 +1,53 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+/**
+ * Person who accepted/signed or rejected the document.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:15
+ */
+@SuppressWarnings("javadoc")
+public class Approver extends DocumentPersonRole {
+
+  /**
+   * All documents for this approver.
+   */
+  private List<Document> Documents;
+
+  /**
+   * All documents for this approver.
+   */
+  public List<Document> getDocuments() {
+
+    return Documents;
+  }
+
+  /**
+   * All documents for this approver.
+   */
+  public void setDocuments(final List<Document> value) {
+
+    this.Documents = value;
+  }
+
+  public Approver() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Author.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Author.java
new file mode 100644
index 0000000..4c38052
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Author.java
@@ -0,0 +1,74 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+/**
+ * Person who created document or activity record.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:19
+ */
+@SuppressWarnings("javadoc")
+public class Author extends DocumentPersonRole {
+
+  /**
+   * All activity records with this author.
+   */
+  private List<ActivityRecord> ActivityRecords;
+
+  /**
+   * All activity records with this author.
+   */
+  public List<ActivityRecord> getActivityRecords() {
+
+    return ActivityRecords;
+  }
+
+  /**
+   * All activity records with this author.
+   */
+  public void setActivityRecords(final List<ActivityRecord> value) {
+
+    this.ActivityRecords = value;
+  }
+
+  /**
+   * All documents of this this author.
+   */
+  private List<Document> Documents;
+
+  /**
+   * All documents of this this author.
+   */
+  public List<Document> getDocuments() {
+
+    return Documents;
+  }
+
+  /**
+   * All documents of this this author.
+   */
+  public void setDocuments(final List<Document> value) {
+
+    this.Documents = value;
+  }
+
+  public Author() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ConfigurationEvent.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ConfigurationEvent.java
new file mode 100644
index 0000000..e3f67eb
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ConfigurationEvent.java
@@ -0,0 +1,249 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.Date;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.*;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers.*;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Metering.*;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Used to report details on creation, change or deletion of an entity or its
+ * configuration.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:32
+ */
+@SuppressWarnings("javadoc")
+public class ConfigurationEvent extends ActivityRecord {
+
+  /**
+   * Date and time this event has or will become effective.
+   */
+  @Cim(originalType = "DateTime")
+  private Date effectiveDateTime;
+
+  /**
+   * Date and time this event has or will become effective.
+   */
+  public Date getEffectiveDateTime() {
+
+    return effectiveDateTime;
+  }
+
+  /**
+   * Date and time this event has or will become effective.
+   */
+  public void setEffectiveDateTime(final Date value) {
+
+    this.effectiveDateTime = value;
+  }
+
+  /**
+   * Source/initiator of modification.
+   */
+  private String modifiedBy;
+
+  /**
+   * Source/initiator of modification.
+   */
+  public String getModifiedBy() {
+
+    return modifiedBy;
+  }
+
+  /**
+   * Source/initiator of modification.
+   */
+  public void setModifiedBy(final String value) {
+
+    this.modifiedBy = value;
+  }
+
+  /**
+   * Free text remarks.
+   */
+  private String remark;
+
+  /**
+   * Free text remarks.
+   */
+  public String getRemark() {
+
+    return remark;
+  }
+
+  /**
+   * Free text remarks.
+   */
+  public void setRemark(final String value) {
+
+    this.remark = value;
+  }
+
+  /**
+   * Document whose change resulted in this configuration event.
+   */
+  private Document ChangedDocument;
+
+  /**
+   * Document whose change resulted in this configuration event.
+   */
+  public Document getChangedDocument() {
+
+    return ChangedDocument;
+  }
+
+  /**
+   * Document whose change resulted in this configuration event.
+   */
+  public void setChangedDocument(final Document value) {
+
+    this.ChangedDocument = value;
+  }
+
+  /**
+   * Usage point whose change resulted in this configuration event.
+   */
+  private UsagePoint ChangedUsagePoint;
+
+  /**
+   * Usage point whose change resulted in this configuration event.
+   */
+  public UsagePoint getChangedUsagePoint() {
+
+    return ChangedUsagePoint;
+  }
+
+  /**
+   * Usage point whose change resulted in this configuration event.
+   */
+  public void setChangedUsagePoint(final UsagePoint value) {
+
+    this.ChangedUsagePoint = value;
+  }
+
+  /**
+   * Organisation role whose change resulted in this configuration event.
+   */
+  private OrganisationRole ChangedOrganisationRole;
+
+  /**
+   * Organisation role whose change resulted in this configuration event.
+   */
+  public OrganisationRole getChangedOrganisationRole() {
+
+    return ChangedOrganisationRole;
+  }
+
+  /**
+   * Organisation role whose change resulted in this configuration event.
+   */
+  public void setChangedOrganisationRole(final OrganisationRole value) {
+
+    this.ChangedOrganisationRole = value;
+  }
+
+  /**
+   * Asset whose change resulted in this configuration event.
+   */
+  private Asset ChangedAsset;
+
+  /**
+   * Asset whose change resulted in this configuration event.
+   */
+  public Asset getChangedAsset() {
+
+    return ChangedAsset;
+  }
+
+  /**
+   * Asset whose change resulted in this configuration event.
+   */
+  public void setChangedAsset(final Asset value) {
+
+    this.ChangedAsset = value;
+  }
+
+  /**
+   * Location whose change resulted in this configuration event.
+   */
+  private Location ChangedLocation;
+
+  /**
+   * Location whose change resulted in this configuration event.
+   */
+  public Location getChangedLocation() {
+
+    return ChangedLocation;
+  }
+
+  /**
+   * Location whose change resulted in this configuration event.
+   */
+  public void setChangedLocation(final Location value) {
+
+    this.ChangedLocation = value;
+  }
+
+  /**
+   * Service category whose change resulted in this configuration event.
+   */
+  private ServiceCategory ChangedServiceCategory;
+
+  /**
+   * Service category whose change resulted in this configuration event.
+   */
+  public ServiceCategory getChangedServiceCategory() {
+
+    return ChangedServiceCategory;
+  }
+
+  /**
+   * Service category whose change resulted in this configuration event.
+   */
+  public void setChangedServiceCategory(final ServiceCategory value) {
+
+    this.ChangedServiceCategory = value;
+  }
+
+  /**
+   * Person role whose change resulted in this configuration event.
+   */
+  private PersonRole ChangedPersonRole;
+
+  /**
+   * Person role whose change resulted in this configuration event.
+   */
+  public PersonRole getChangedPersonRole() {
+
+    return ChangedPersonRole;
+  }
+
+  /**
+   * Person role whose change resulted in this configuration event.
+   */
+  public void setChangedPersonRole(final PersonRole value) {
+
+    this.ChangedPersonRole = value;
+  }
+
+  public ConfigurationEvent() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/CoordinateSystem.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/CoordinateSystem.java
new file mode 100644
index 0000000..52fef3e
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/CoordinateSystem.java
@@ -0,0 +1,104 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+
+/**
+ * Coordinate reference system.
+ * 
+ * @created 10-Aug-2017 18:09:37
+ */
+@SuppressWarnings("javadoc")
+public class CoordinateSystem extends IdentifiedObject {
+
+  /**
+   * A Uniform Resource Name (URN) for the coordinate reference system (crs) used to
+   * define 'Location.PositionPoints'.
+   * An example would be the European Petroleum Survey Group (EPSG) code for a
+   * coordinate reference system, defined in URN under the Open Geospatial
+   * Consortium (OGC) namespace as: urn:ogc:def:uom:EPSG::XXXX, where XXXX is an
+   * EPSG code (a full list of codes can be found at the EPSG Registry web site http:
+   * //www.epsg-registry.org/). To define the coordinate system as being WGS84
+   * (latitude, longitude) using an EPSG OGC, this attribute would be urn:ogc:def:
+   * uom:EPSG::4236.
+   * A profile should limit this code to a set of allowed URNs agreed to by all
+   * sending and receiving parties.
+   */
+  private String crsUrn;
+
+  /**
+   * A Uniform Resource Name (URN) for the coordinate reference system (crs) used to
+   * define 'Location.PositionPoints'.
+   * An example would be the European Petroleum Survey Group (EPSG) code for a
+   * coordinate reference system, defined in URN under the Open Geospatial
+   * Consortium (OGC) namespace as: urn:ogc:def:uom:EPSG::XXXX, where XXXX is an
+   * EPSG code (a full list of codes can be found at the EPSG Registry web site http:
+   * //www.epsg-registry.org/). To define the coordinate system as being WGS84
+   * (latitude, longitude) using an EPSG OGC, this attribute would be urn:ogc:def:
+   * uom:EPSG::4236.
+   * A profile should limit this code to a set of allowed URNs agreed to by all
+   * sending and receiving parties.
+   */
+  public String getCrsUrn() {
+
+    return crsUrn;
+  }
+
+  /**
+   * A Uniform Resource Name (URN) for the coordinate reference system (crs) used to
+   * define 'Location.PositionPoints'.
+   * An example would be the European Petroleum Survey Group (EPSG) code for a
+   * coordinate reference system, defined in URN under the Open Geospatial
+   * Consortium (OGC) namespace as: urn:ogc:def:uom:EPSG::XXXX, where XXXX is an
+   * EPSG code (a full list of codes can be found at the EPSG Registry web site http:
+   * //www.epsg-registry.org/). To define the coordinate system as being WGS84
+   * (latitude, longitude) using an EPSG OGC, this attribute would be urn:ogc:def:
+   * uom:EPSG::4236.
+   * A profile should limit this code to a set of allowed URNs agreed to by all
+   * sending and receiving parties.
+   */
+  public void setCrsUrn(final String value) {
+
+    this.crsUrn = value;
+  }
+
+  /**
+   * All locations described with position points in this coordinate system.
+   */
+  private List<Location> Locations;
+
+  /**
+   * All locations described with position points in this coordinate system.
+   */
+  public List<Location> getLocations() {
+
+    return Locations;
+  }
+
+  /**
+   * All locations described with position points in this coordinate system.
+   */
+  public void setLocations(final List<Location> value) {
+
+    this.Locations = value;
+  }
+
+  public CoordinateSystem() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Crew.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Crew.java
new file mode 100644
index 0000000..019172f
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Crew.java
@@ -0,0 +1,141 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Work.WorkAsset;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Work.WorkTask;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+
+/**
+ * Group of people with specific skills, tools, and vehicles.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:37
+ */
+@SuppressWarnings("javadoc")
+public class Crew extends IdentifiedObject {
+
+  /**
+   * Status of this crew.
+   */
+  private Status status;
+
+  /**
+   * Status of this crew.
+   */
+  public Status getStatus() {
+
+    return status;
+  }
+
+  /**
+   * Status of this crew.
+   */
+  public void setStatus(final Status value) {
+
+    this.status = value;
+  }
+
+  /**
+   * All work tasks this crew participates in.
+   */
+  private List<WorkTask> WorkTasks;
+
+  /**
+   * All work tasks this crew participates in.
+   */
+  public List<WorkTask> getWorkTasks() {
+
+    return WorkTasks;
+  }
+
+  /**
+   * All work tasks this crew participates in.
+   */
+  public void setWorkTasks(final List<WorkTask> value) {
+
+    this.WorkTasks = value;
+  }
+
+  /**
+   * All work assets used by this crew.
+   */
+  private List<WorkAsset> WorkAssets;
+
+  /**
+   * All work assets used by this crew.
+   */
+  public List<WorkAsset> getWorkAssets() {
+
+    return WorkAssets;
+  }
+
+  /**
+   * All work assets used by this crew.
+   */
+  public void setWorkAssets(final List<WorkAsset> value) {
+
+    this.WorkAssets = value;
+  }
+
+  /**
+   * All members of this crew.
+   */
+  private List<CrewMember> CrewMembers;
+
+  /**
+   * All members of this crew.
+   */
+  public List<CrewMember> getCrewMembers() {
+
+    return CrewMembers;
+  }
+
+  /**
+   * All members of this crew.
+   */
+  public void setCrewMembers(final List<CrewMember> value) {
+
+    this.CrewMembers = value;
+  }
+
+  /**
+   * Type of this crew.
+   */
+  private CrewType CrewType;
+
+  /**
+   * Type of this crew.
+   */
+  public CrewType getCrewType() {
+
+    return CrewType;
+  }
+
+  /**
+   * Type of this crew.
+   */
+  public void setCrewType(final CrewType value) {
+
+    this.CrewType = value;
+  }
+
+  public Crew() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/CrewMember.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/CrewMember.java
new file mode 100644
index 0000000..56115db
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/CrewMember.java
@@ -0,0 +1,76 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Operations.*;
+
+/**
+ * Member of a crew.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:38
+ */
+@SuppressWarnings("javadoc")
+public class CrewMember extends OperationPersonRole {
+
+  /**
+   * Crew to which this crew member belongs.
+   */
+  private Crew Crew;
+
+  /**
+   * Crew to which this crew member belongs.
+   */
+  public Crew getCrew() {
+
+    return Crew;
+  }
+
+  /**
+   * Crew to which this crew member belongs.
+   */
+  public void setCrew(final Crew value) {
+
+    this.Crew = value;
+  }
+
+  /**
+   * All switching steps this crew member is responsible for.
+   */
+  private List<SwitchingStep> SwitchingSteps;
+
+  /**
+   * All switching steps this crew member is responsible for.
+   */
+  public List<SwitchingStep> getSwitchingSteps() {
+
+    return SwitchingSteps;
+  }
+
+  /**
+   * All switching steps this crew member is responsible for.
+   */
+  public void setSwitchingSteps(final List<SwitchingStep> value) {
+
+    this.SwitchingSteps = value;
+  }
+
+  public CrewMember() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/CrewType.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/CrewType.java
new file mode 100644
index 0000000..d8ad507
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/CrewType.java
@@ -0,0 +1,57 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+
+/**
+ * Custom description of the type of crew. This may be used to determine the type
+ * of work the crew can be assigned to. Examples include repair, tree trimming,
+ * switching, etc.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:38
+ */
+@SuppressWarnings("javadoc")
+public class CrewType extends IdentifiedObject {
+
+  /**
+   * All crews of this type.
+   */
+  private List<Crew> Crews;
+
+  /**
+   * All crews of this type.
+   */
+  public List<Crew> getCrews() {
+
+    return Crews;
+  }
+
+  /**
+   * All crews of this type.
+   */
+  public void setCrews(final List<Crew> value) {
+
+    this.Crews = value;
+  }
+
+  public CrewType() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Document.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Document.java
new file mode 100644
index 0000000..bd20eb9
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Document.java
@@ -0,0 +1,392 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Parent class for different groupings of information collected and managed as a
+ * part of a business process. It will frequently contain references to other
+ * objects, such as assets, people and power system resources.
+ * 
+ * @created 10-Aug-2017 18:09:50
+ */
+@SuppressWarnings("javadoc")
+public class Document extends IdentifiedObject {
+
+  /**
+   * Name of the author of this document.
+   */
+  private String authorName;
+
+  /**
+   * Name of the author of this document.
+   */
+  public String getAuthorName() {
+
+    return authorName;
+  }
+
+  /**
+   * Name of the author of this document.
+   */
+  public void setAuthorName(final String value) {
+
+    this.authorName = value;
+  }
+
+  /**
+   * Free text comment.
+   */
+  private String comment;
+
+  /**
+   * Free text comment.
+   */
+  public String getComment() {
+
+    return comment;
+  }
+
+  /**
+   * Free text comment.
+   */
+  public void setComment(final String value) {
+
+    this.comment = value;
+  }
+
+  /**
+   * Date and time that this document was created.
+   */
+  @Cim(originalType = "DateTime")
+  private Date createdDateTime;
+
+  /**
+   * Date and time that this document was created.
+   */
+  public Date getCreatedDateTime() {
+
+    return createdDateTime;
+  }
+
+  /**
+   * Date and time that this document was created.
+   */
+  public void setCreatedDateTime(final Date value) {
+
+    this.createdDateTime = value;
+  }
+
+  /**
+   * Status of this document. For status of subject matter this document represents
+   * (e.g., Agreement, Work), use 'status' attribute.
+   * Example values for 'docStatus.status' are draft, approved, cancelled, etc.
+   */
+  private Status docStatus;
+
+  /**
+   * Status of this document. For status of subject matter this document represents
+   * (e.g., Agreement, Work), use 'status' attribute.
+   * Example values for 'docStatus.status' are draft, approved, cancelled, etc.
+   */
+  public Status getDocStatus() {
+
+    return docStatus;
+  }
+
+  /**
+   * Status of this document. For status of subject matter this document represents
+   * (e.g., Agreement, Work), use 'status' attribute.
+   * Example values for 'docStatus.status' are draft, approved, cancelled, etc.
+   */
+  public void setDocStatus(final Status value) {
+
+    this.docStatus = value;
+  }
+
+  /**
+   * Electronic address.
+   */
+  private ElectronicAddress electronicAddress;
+
+  /**
+   * Electronic address.
+   */
+  public ElectronicAddress getElectronicAddress() {
+
+    return electronicAddress;
+  }
+
+  /**
+   * Electronic address.
+   */
+  public void setElectronicAddress(final ElectronicAddress value) {
+
+    this.electronicAddress = value;
+  }
+
+  /**
+   * Date and time this document was last modified. Documents may potentially be
+   * modified many times during their lifetime.
+   */
+  @Cim(originalType = "DateTime")
+  private Date lastModifiedDateTime;
+
+  /**
+   * Date and time this document was last modified. Documents may potentially be
+   * modified many times during their lifetime.
+   */
+  public Date getLastModifiedDateTime() {
+
+    return lastModifiedDateTime;
+  }
+
+  /**
+   * Date and time this document was last modified. Documents may potentially be
+   * modified many times during their lifetime.
+   */
+  public void setLastModifiedDateTime(final Date value) {
+
+    this.lastModifiedDateTime = value;
+  }
+
+  /**
+   * Revision number for this document.
+   */
+  private String revisionNumber;
+
+  /**
+   * Revision number for this document.
+   */
+  public String getRevisionNumber() {
+
+    return revisionNumber;
+  }
+
+  /**
+   * Revision number for this document.
+   */
+  public void setRevisionNumber(final String value) {
+
+    this.revisionNumber = value;
+  }
+
+  /**
+   * Status of subject matter (e.g., Agreement, Work) this document represents. For
+   * status of the document itself, use 'docStatus' attribute.
+   */
+  private Status status;
+
+  /**
+   * Status of subject matter (e.g., Agreement, Work) this document represents. For
+   * status of the document itself, use 'docStatus' attribute.
+   */
+  public Status getStatus() {
+
+    return status;
+  }
+
+  /**
+   * Status of subject matter (e.g., Agreement, Work) this document represents. For
+   * status of the document itself, use 'docStatus' attribute.
+   */
+  public void setStatus(final Status value) {
+
+    this.status = value;
+  }
+
+  /**
+   * Document subject.
+   */
+  private String subject;
+
+  /**
+   * Document subject.
+   */
+  public String getSubject() {
+
+    return subject;
+  }
+
+  /**
+   * Document subject.
+   */
+  public void setSubject(final String value) {
+
+    this.subject = value;
+  }
+
+  /**
+   * Document title.
+   */
+  private String title;
+
+  /**
+   * Document title.
+   */
+  public String getTitle() {
+
+    return title;
+  }
+
+  /**
+   * Document title.
+   */
+  public void setTitle(final String value) {
+
+    this.title = value;
+  }
+
+  /**
+   * Utility-specific classification of this document, according to its corporate
+   * standards, practices, and existing IT systems (e.g., for management of assets,
+   * maintenance, work, outage, customers, etc.).
+   */
+  private String type;
+
+  /**
+   * Utility-specific classification of this document, according to its corporate
+   * standards, practices, and existing IT systems (e.g., for management of assets,
+   * maintenance, work, outage, customers, etc.).
+   */
+  public String getType() {
+
+    return type;
+  }
+
+  /**
+   * Utility-specific classification of this document, according to its corporate
+   * standards, practices, and existing IT systems (e.g., for management of assets,
+   * maintenance, work, outage, customers, etc.).
+   */
+  public void setType(final String value) {
+
+    this.type = value;
+  }
+
+  /**
+   * All configuration events created for this document.
+   */
+  private List<ConfigurationEvent> ConfigurationEvents;
+
+  /**
+   * All configuration events created for this document.
+   */
+  public List<ConfigurationEvent> getConfigurationEvents() {
+
+    return ConfigurationEvents;
+  }
+
+  /**
+   * All configuration events created for this document.
+   */
+  public void setConfigurationEvents(final List<ConfigurationEvent> value) {
+
+    this.ConfigurationEvents = value;
+  }
+
+  /**
+   * Author of this document.
+   */
+  private Author Author;
+
+  /**
+   * Author of this document.
+   */
+  public Author getAuthor() {
+
+    return Author;
+  }
+
+  /**
+   * Author of this document.
+   */
+  public void setAuthor(final Author value) {
+
+    this.Author = value;
+  }
+
+  /**
+   * Editor of this document.
+   */
+  private Editor Editor;
+
+  /**
+   * Editor of this document.
+   */
+  public Editor getEditor() {
+
+    return Editor;
+  }
+
+  /**
+   * Editor of this document.
+   */
+  public void setEditor(final Editor value) {
+
+    this.Editor = value;
+  }
+
+  /**
+   * Issuer of this document.
+   */
+  private Issuer Issuer;
+
+  /**
+   * Issuer of this document.
+   */
+  public Issuer getIssuer() {
+
+    return Issuer;
+  }
+
+  /**
+   * Issuer of this document.
+   */
+  public void setIssuer(final Issuer value) {
+
+    this.Issuer = value;
+  }
+
+  /**
+   * Approver of this document.
+   */
+  private Approver Approver;
+
+  /**
+   * Approver of this document.
+   */
+  public Approver getApprover() {
+
+    return Approver;
+  }
+
+  /**
+   * Approver of this document.
+   */
+  public void setApprover(final Approver value) {
+
+    this.Approver = value;
+  }
+
+  public Document() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/DocumentPersonRole.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/DocumentPersonRole.java
new file mode 100644
index 0000000..b272dcb
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/DocumentPersonRole.java
@@ -0,0 +1,28 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+/**
+ * Person role with respect to documents.
+ * 
+ * @created 10-Aug-2017 18:09:51
+ */
+@SuppressWarnings("javadoc")
+public class DocumentPersonRole extends PersonRole {
+
+  public DocumentPersonRole() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Editor.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Editor.java
new file mode 100644
index 0000000..d38dd12
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Editor.java
@@ -0,0 +1,53 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+/**
+ * Person who modified the document.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:52
+ */
+@SuppressWarnings("javadoc")
+public class Editor extends DocumentPersonRole {
+
+  /**
+   * All documents for this editor.
+   */
+  private List<Document> Documents;
+
+  /**
+   * All documents for this editor.
+   */
+  public List<Document> getDocuments() {
+
+    return Documents;
+  }
+
+  /**
+   * All documents for this editor.
+   */
+  public void setDocuments(final List<Document> value) {
+
+    this.Documents = value;
+  }
+
+  public Editor() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ElectronicAddress.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ElectronicAddress.java
new file mode 100644
index 0000000..97693b9
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ElectronicAddress.java
@@ -0,0 +1,201 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Electronic address information.
+ * 
+ * @created 10-Aug-2017 18:09:53
+ */
+@SuppressWarnings("javadoc")
+public class ElectronicAddress implements ICimCompound {
+
+  /**
+   * Primary email address.
+   */
+  private String email1;
+
+  /**
+   * Primary email address.
+   */
+  public String getEmail1() {
+
+    return email1;
+  }
+
+  /**
+   * Primary email address.
+   */
+  public void setEmail1(final String value) {
+
+    this.email1 = value;
+  }
+
+  /**
+   * Alternate email address.
+   */
+  private String email2;
+
+  /**
+   * Alternate email address.
+   */
+  public String getEmail2() {
+
+    return email2;
+  }
+
+  /**
+   * Alternate email address.
+   */
+  public void setEmail2(final String value) {
+
+    this.email2 = value;
+  }
+
+  /**
+   * Address on local area network.
+   */
+  private String lan;
+
+  /**
+   * Address on local area network.
+   */
+  public String getLan() {
+
+    return lan;
+  }
+
+  /**
+   * Address on local area network.
+   */
+  public void setLan(final String value) {
+
+    this.lan = value;
+  }
+
+  /**
+   * MAC (Media Access Control) address.
+   */
+  private String mac;
+
+  /**
+   * MAC (Media Access Control) address.
+   */
+  public String getMac() {
+
+    return mac;
+  }
+
+  /**
+   * MAC (Media Access Control) address.
+   */
+  public void setMac(final String value) {
+
+    this.mac = value;
+  }
+
+  /**
+   * Password needed to log in.
+   */
+  private String password;
+
+  /**
+   * Password needed to log in.
+   */
+  public String getPassword() {
+
+    return password;
+  }
+
+  /**
+   * Password needed to log in.
+   */
+  public void setPassword(final String value) {
+
+    this.password = value;
+  }
+
+  /**
+   * Radio address.
+   */
+  private String radio;
+
+  /**
+   * Radio address.
+   */
+  public String getRadio() {
+
+    return radio;
+  }
+
+  /**
+   * Radio address.
+   */
+  public void setRadio(final String value) {
+
+    this.radio = value;
+  }
+
+  /**
+   * User ID needed to log in, which can be for an individual person, an
+   * organisation, a location, etc.
+   */
+  private String userID;
+
+  /**
+   * User ID needed to log in, which can be for an individual person, an
+   * organisation, a location, etc.
+   */
+  public String getUserID() {
+
+    return userID;
+  }
+
+  /**
+   * User ID needed to log in, which can be for an individual person, an
+   * organisation, a location, etc.
+   */
+  public void setUserID(final String value) {
+
+    this.userID = value;
+  }
+
+  /**
+   * World wide web address.
+   */
+  private String web;
+
+  /**
+   * World wide web address.
+   */
+  public String getWeb() {
+
+    return web;
+  }
+
+  /**
+   * World wide web address.
+   */
+  public void setWeb(final String value) {
+
+    this.web = value;
+  }
+
+  public ElectronicAddress() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Hazard.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Hazard.java
new file mode 100644
index 0000000..a2cbb97
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Hazard.java
@@ -0,0 +1,73 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+
+/**
+ * An object or a condition that is a danger for causing loss or perils to an
+ * asset and/or people.
+ * 
+ * @created 10-Aug-2017 18:10:25
+ */
+@SuppressWarnings("javadoc")
+public class Hazard extends IdentifiedObject {
+
+  /**
+   * Status of this hazard.
+   */
+  private Status status;
+
+  /**
+   * Status of this hazard.
+   */
+  public Status getStatus() {
+
+    return status;
+  }
+
+  /**
+   * Status of this hazard.
+   */
+  public void setStatus(final Status value) {
+
+    this.status = value;
+  }
+
+  /**
+   * Type of this hazard.
+   */
+  private String type;
+
+  /**
+   * Type of this hazard.
+   */
+  public String getType() {
+
+    return type;
+  }
+
+  /**
+   * Type of this hazard.
+   */
+  public void setType(final String value) {
+
+    this.type = value;
+  }
+
+  public Hazard() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Issuer.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Issuer.java
new file mode 100644
index 0000000..46bb5a6
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Issuer.java
@@ -0,0 +1,53 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+/**
+ * Person who issued the document and is responsible for its content.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:10:37
+ */
+@SuppressWarnings("javadoc")
+public class Issuer extends DocumentPersonRole {
+
+  /**
+   * All documents for this issuer.
+   */
+  private List<Document> Documents;
+
+  /**
+   * All documents for this issuer.
+   */
+  public List<Document> getDocuments() {
+
+    return Documents;
+  }
+
+  /**
+   * All documents for this issuer.
+   */
+  public void setDocuments(final List<Document> value) {
+
+    this.Documents = value;
+  }
+
+  public Issuer() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Location.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Location.java
new file mode 100644
index 0000000..04f19a1
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Location.java
@@ -0,0 +1,464 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.*;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfCommon.*;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfLocations.*;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Operations.*;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.PowerSystemResource;
+
+/**
+ * The place, scene, or point of something where someone or something has been, is,
+ * and/or will be at a given moment in time. It can be defined with one or more
+ * postition points (coordinates) in a given coordinate system.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:10:42
+ */
+@SuppressWarnings("javadoc")
+public class Location extends IdentifiedObject {
+
+  /**
+   * (if applicable) Direction that allows field crews to quickly find a given asset.
+   * For a given location, such as a street address, this is the relative direction
+   * in which to find the asset. For example, a streetlight may be located at the
+   * 'NW' (northwest) corner of the customer's site, or a usage point may be located
+   * on the second floor of an apartment building.
+   */
+  private String direction;
+
+  /**
+   * (if applicable) Direction that allows field crews to quickly find a given asset.
+   * For a given location, such as a street address, this is the relative direction
+   * in which to find the asset. For example, a streetlight may be located at the
+   * 'NW' (northwest) corner of the customer's site, or a usage point may be located
+   * on the second floor of an apartment building.
+   */
+  public String getDirection() {
+
+    return direction;
+  }
+
+  /**
+   * (if applicable) Direction that allows field crews to quickly find a given asset.
+   * For a given location, such as a street address, this is the relative direction
+   * in which to find the asset. For example, a streetlight may be located at the
+   * 'NW' (northwest) corner of the customer's site, or a usage point may be located
+   * on the second floor of an apartment building.
+   */
+  public void setDirection(final String value) {
+
+    this.direction = value;
+  }
+
+  /**
+   * Electronic address.
+   */
+  private ElectronicAddress electronicAddress;
+
+  /**
+   * Electronic address.
+   */
+  public ElectronicAddress getElectronicAddress() {
+
+    return electronicAddress;
+  }
+
+  /**
+   * Electronic address.
+   */
+  public void setElectronicAddress(final ElectronicAddress value) {
+
+    this.electronicAddress = value;
+  }
+
+  /**
+   * (if applicable) Reference to geographical information source, often external to
+   * the utility.
+   */
+  private String geoInfoReference;
+
+  /**
+   * (if applicable) Reference to geographical information source, often external to
+   * the utility.
+   */
+  public String getGeoInfoReference() {
+
+    return geoInfoReference;
+  }
+
+  /**
+   * (if applicable) Reference to geographical information source, often external to
+   * the utility.
+   */
+  public void setGeoInfoReference(final String value) {
+
+    this.geoInfoReference = value;
+  }
+
+  /**
+   * Main address of the location.
+   */
+  private StreetAddress mainAddress;
+
+  /**
+   * Main address of the location.
+   */
+  public StreetAddress getMainAddress() {
+
+    return mainAddress;
+  }
+
+  /**
+   * Main address of the location.
+   */
+  public void setMainAddress(final StreetAddress value) {
+
+    this.mainAddress = value;
+  }
+
+  /**
+   * Phone number.
+   */
+  private TelephoneNumber phone1;
+
+  /**
+   * Phone number.
+   */
+  public TelephoneNumber getPhone1() {
+
+    return phone1;
+  }
+
+  /**
+   * Phone number.
+   */
+  public void setPhone1(final TelephoneNumber value) {
+
+    this.phone1 = value;
+  }
+
+  /**
+   * Additional phone number.
+   */
+  private TelephoneNumber phone2;
+
+  /**
+   * Additional phone number.
+   */
+  public TelephoneNumber getPhone2() {
+
+    return phone2;
+  }
+
+  /**
+   * Additional phone number.
+   */
+  public void setPhone2(final TelephoneNumber value) {
+
+    this.phone2 = value;
+  }
+
+  /**
+   * Secondary address of the location. For example, PO Box address may have
+   * different ZIP code than that in the 'mainAddress'.
+   */
+  private StreetAddress secondaryAddress;
+
+  /**
+   * Secondary address of the location. For example, PO Box address may have
+   * different ZIP code than that in the 'mainAddress'.
+   */
+  public StreetAddress getSecondaryAddress() {
+
+    return secondaryAddress;
+  }
+
+  /**
+   * Secondary address of the location. For example, PO Box address may have
+   * different ZIP code than that in the 'mainAddress'.
+   */
+  public void setSecondaryAddress(final StreetAddress value) {
+
+    this.secondaryAddress = value;
+  }
+
+  /**
+   * Status of this location.
+   */
+  private Status status;
+
+  /**
+   * Status of this location.
+   */
+  public Status getStatus() {
+
+    return status;
+  }
+
+  /**
+   * Status of this location.
+   */
+  public void setStatus(final Status value) {
+
+    this.status = value;
+  }
+
+  /**
+   * Classification by utility's corporate standards and practices, relative to the
+   * location itself (e.g., geographical, functional accounting, etc., not a given
+   * property that happens to exist at that location).
+   */
+  private String type;
+
+  /**
+   * Classification by utility's corporate standards and practices, relative to the
+   * location itself (e.g., geographical, functional accounting, etc., not a given
+   * property that happens to exist at that location).
+   */
+  public String getType() {
+
+    return type;
+  }
+
+  /**
+   * Classification by utility's corporate standards and practices, relative to the
+   * location itself (e.g., geographical, functional accounting, etc., not a given
+   * property that happens to exist at that location).
+   */
+  public void setType(final String value) {
+
+    this.type = value;
+  }
+
+  /**
+  * 
+  */
+  private List<Route> Routes;
+
+  /**
+  * 
+  */
+  public List<Route> getRoutes() {
+
+    return Routes;
+  }
+
+  /**
+  * 
+  */
+  public void setRoutes(final List<Route> value) {
+
+    this.Routes = value;
+  }
+
+  /**
+  * 
+  */
+  private List<LandProperty> LandProperties;
+
+  /**
+  * 
+  */
+  public List<LandProperty> getLandProperties() {
+
+    return LandProperties;
+  }
+
+  /**
+  * 
+  */
+  public void setLandProperties(final List<LandProperty> value) {
+
+    this.LandProperties = value;
+  }
+
+  /**
+   * All asset hazards at this location.
+   */
+  private List<AssetLocationHazard> Hazards;
+
+  /**
+   * All asset hazards at this location.
+   */
+  public List<AssetLocationHazard> getHazards() {
+
+    return Hazards;
+  }
+
+  /**
+   * All asset hazards at this location.
+   */
+  public void setHazards(final List<AssetLocationHazard> value) {
+
+    this.Hazards = value;
+  }
+
+  /**
+  * 
+  */
+  private List<OldCrew> Crews;
+
+  /**
+  * 
+  */
+  public List<OldCrew> getCrews() {
+
+    return Crews;
+  }
+
+  /**
+  * 
+  */
+  public void setCrews(final List<OldCrew> value) {
+
+    this.Crews = value;
+  }
+
+  /**
+   * All assets at this location.
+   */
+  private List<Asset> Assets;
+
+  /**
+   * All assets at this location.
+   */
+  public List<Asset> getAssets() {
+
+    return Assets;
+  }
+
+  /**
+   * All assets at this location.
+   */
+  public void setAssets(final List<Asset> value) {
+
+    this.Assets = value;
+  }
+
+  /**
+   * Sequence of position points describing this location, expressed in coordinate system 'Location.CoordinateSystem'.
+   */
+  private List<PositionPoint> PositionPoints;
+
+  /**
+   * Sequence of position points describing this location, expressed in coordinate system 'Location.CoordinateSystem'.
+   */
+  public List<PositionPoint> getPositionPoints() {
+
+    return PositionPoints;
+  }
+
+  /**
+   * Sequence of position points describing this location, expressed in coordinate system 'Location.CoordinateSystem'.
+   */
+  public void setPositionPoints(final List<PositionPoint> value) {
+
+    this.PositionPoints = value;
+  }
+
+  /**
+   * All power system resources at this location.
+   */
+  private List<PowerSystemResource> PowerSystemResources;
+
+  /**
+   * All power system resources at this location.
+   */
+  public List<PowerSystemResource> getPowerSystemResources() {
+
+    return PowerSystemResources;
+  }
+
+  /**
+   * All power system resources at this location.
+   */
+  public void setPowerSystemResources(final List<PowerSystemResource> value) {
+
+    this.PowerSystemResources = value;
+  }
+
+  /**
+   * Coordinate system used to describe position points of this location.
+   */
+  private CoordinateSystem CoordinateSystem;
+
+  /**
+   * Coordinate system used to describe position points of this location.
+   */
+  public CoordinateSystem getCoordinateSystem() {
+
+    return CoordinateSystem;
+  }
+
+  /**
+   * Coordinate system used to describe position points of this location.
+   */
+  public void setCoordinateSystem(final CoordinateSystem value) {
+
+    this.CoordinateSystem = value;
+  }
+
+  /**
+   * All configuration events created for this location.
+   */
+  private List<ConfigurationEvent> ConfigurationEvents;
+
+  /**
+   * All configuration events created for this location.
+   */
+  public List<ConfigurationEvent> getConfigurationEvents() {
+
+    return ConfigurationEvents;
+  }
+
+  /**
+   * All configuration events created for this location.
+   */
+  public void setConfigurationEvents(final List<ConfigurationEvent> value) {
+
+    this.ConfigurationEvents = value;
+  }
+
+  /**
+   * Incident at this location.
+   */
+  private Incident Incident;
+
+  /**
+   * Incident at this location.
+   */
+  public Incident getIncident() {
+
+    return Incident;
+  }
+
+  /**
+   * Incident at this location.
+   */
+  public void setIncident(final Incident value) {
+
+    this.Incident = value;
+  }
+
+  public Location() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/OperationPersonRole.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/OperationPersonRole.java
new file mode 100644
index 0000000..e997f18
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/OperationPersonRole.java
@@ -0,0 +1,30 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+/**
+ * Person role in the context of utility operations.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:03
+ */
+@SuppressWarnings("javadoc")
+public class OperationPersonRole extends PersonRole {
+
+  public OperationPersonRole() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Operator.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Operator.java
new file mode 100644
index 0000000..c3a506c
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Operator.java
@@ -0,0 +1,76 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Operations.*;
+
+/**
+ * Control room operator.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:03
+ */
+@SuppressWarnings("javadoc")
+public class Operator extends OperationPersonRole {
+
+  /**
+   * All switching steps this operator is responsible for.
+   */
+  private List<SwitchingStep> SwitchingSteps;
+
+  /**
+   * All switching steps this operator is responsible for.
+   */
+  public List<SwitchingStep> getSwitchingSteps() {
+
+    return SwitchingSteps;
+  }
+
+  /**
+   * All switching steps this operator is responsible for.
+   */
+  public void setSwitchingSteps(final List<SwitchingStep> value) {
+
+    this.SwitchingSteps = value;
+  }
+
+  /**
+   * All incidents owned by this operator.
+   */
+  private List<Incident> Incidents;
+
+  /**
+   * All incidents owned by this operator.
+   */
+  public List<Incident> getIncidents() {
+
+    return Incidents;
+  }
+
+  /**
+   * All incidents owned by this operator.
+   */
+  public void setIncidents(final List<Incident> value) {
+
+    this.Incidents = value;
+  }
+
+  public Operator() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Organisation.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Organisation.java
new file mode 100644
index 0000000..1467b5e
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Organisation.java
@@ -0,0 +1,159 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+
+/**
+ * Organisation that might have roles as utility, contractor, supplier,
+ * manufacturer, customer, etc.
+ * 
+ * @created 10-Aug-2017 18:11:03
+ */
+@SuppressWarnings("javadoc")
+public class Organisation extends IdentifiedObject {
+
+  /**
+   * Electronic address.
+   */
+  private ElectronicAddress electronicAddress;
+
+  /**
+   * Electronic address.
+   */
+  public ElectronicAddress getElectronicAddress() {
+
+    return electronicAddress;
+  }
+
+  /**
+   * Electronic address.
+   */
+  public void setElectronicAddress(final ElectronicAddress value) {
+
+    this.electronicAddress = value;
+  }
+
+  /**
+   * Phone number.
+   */
+  private TelephoneNumber phone1;
+
+  /**
+   * Phone number.
+   */
+  public TelephoneNumber getPhone1() {
+
+    return phone1;
+  }
+
+  /**
+   * Phone number.
+   */
+  public void setPhone1(final TelephoneNumber value) {
+
+    this.phone1 = value;
+  }
+
+  /**
+   * Additional phone number.
+   */
+  private TelephoneNumber phone2;
+
+  /**
+   * Additional phone number.
+   */
+  public TelephoneNumber getPhone2() {
+
+    return phone2;
+  }
+
+  /**
+   * Additional phone number.
+   */
+  public void setPhone2(final TelephoneNumber value) {
+
+    this.phone2 = value;
+  }
+
+  /**
+   * Postal address, potentially different than 'streetAddress' (e.g., another city).
+   */
+  private StreetAddress postalAddress;
+
+  /**
+   * Postal address, potentially different than 'streetAddress' (e.g., another city).
+   */
+  public StreetAddress getPostalAddress() {
+
+    return postalAddress;
+  }
+
+  /**
+   * Postal address, potentially different than 'streetAddress' (e.g., another city).
+   */
+  public void setPostalAddress(final StreetAddress value) {
+
+    this.postalAddress = value;
+  }
+
+  /**
+   * Street address.
+   */
+  private StreetAddress streetAddress;
+
+  /**
+   * Street address.
+   */
+  public StreetAddress getStreetAddress() {
+
+    return streetAddress;
+  }
+
+  /**
+   * Street address.
+   */
+  public void setStreetAddress(final StreetAddress value) {
+
+    this.streetAddress = value;
+  }
+
+  /**
+   * All roles of this organisation.
+   */
+  private List<OrganisationRole> Roles;
+
+  /**
+   * All roles of this organisation.
+   */
+  public List<OrganisationRole> getRoles() {
+
+    return Roles;
+  }
+
+  /**
+   * All roles of this organisation.
+   */
+  public void setRoles(final List<OrganisationRole> value) {
+
+    this.Roles = value;
+  }
+
+  public Organisation() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/OrganisationRole.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/OrganisationRole.java
new file mode 100644
index 0000000..18911c4
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/OrganisationRole.java
@@ -0,0 +1,77 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+
+/**
+ * Identifies a way in which an organisation may participate in the utility
+ * enterprise (e.g., customer, manufacturer, etc).
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:03
+ */
+@SuppressWarnings("javadoc")
+public class OrganisationRole extends IdentifiedObject {
+
+  /**
+   * Organisation having this role.
+   */
+  private Organisation Organisation;
+
+  /**
+   * Organisation having this role.
+   */
+  public Organisation getOrganisation() {
+
+    return Organisation;
+  }
+
+  /**
+   * Organisation having this role.
+   */
+  public void setOrganisation(final Organisation value) {
+
+    this.Organisation = value;
+  }
+
+  /**
+   * All configuration events created for this organisation role.
+   */
+  private List<ConfigurationEvent> ConfigurationEvents;
+
+  /**
+   * All configuration events created for this organisation role.
+   */
+  public List<ConfigurationEvent> getConfigurationEvents() {
+
+    return ConfigurationEvents;
+  }
+
+  /**
+   * All configuration events created for this organisation role.
+   */
+  public void setConfigurationEvents(final List<ConfigurationEvent> value) {
+
+    this.ConfigurationEvents = value;
+  }
+
+  public OrganisationRole() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Ownership.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Ownership.java
new file mode 100644
index 0000000..04e6eae
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Ownership.java
@@ -0,0 +1,98 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.Asset;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetOwner;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.PerCent;
+
+/**
+ * Ownership of e.g. asset.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:05
+ */
+@SuppressWarnings("javadoc")
+public class Ownership extends IdentifiedObject {
+
+  /**
+   * Share of this ownership.
+   */
+  private PerCent share;
+
+  /**
+   * Share of this ownership.
+   */
+  public PerCent getShare() {
+
+    return share;
+  }
+
+  /**
+   * Share of this ownership.
+   */
+  public void setShare(final PerCent value) {
+
+    this.share = value;
+  }
+
+  /**
+   * Asset owner that is subject in this ownership.
+   */
+  private AssetOwner AssetOwner;
+
+  /**
+   * Asset owner that is subject in this ownership.
+   */
+  public AssetOwner getAssetOwner() {
+
+    return AssetOwner;
+  }
+
+  /**
+   * Asset owner that is subject in this ownership.
+   */
+  public void setAssetOwner(final AssetOwner value) {
+
+    this.AssetOwner = value;
+  }
+
+  /**
+   * Asset that is object of this ownership.
+   */
+  private Asset Asset;
+
+  /**
+   * Asset that is object of this ownership.
+   */
+  public Asset getAsset() {
+
+    return Asset;
+  }
+
+  /**
+   * Asset that is object of this ownership.
+   */
+  public void setAsset(final Asset value) {
+
+    this.Asset = value;
+  }
+
+  public Ownership() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Person.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Person.java
new file mode 100644
index 0000000..d8997f7
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Person.java
@@ -0,0 +1,247 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+
+/**
+ * General purpose information for name and other information to contact people.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:07
+ */
+@SuppressWarnings("javadoc")
+public class Person extends IdentifiedObject {
+
+  /**
+   * Electronic address.
+   */
+  private ElectronicAddress electronicAddress;
+
+  /**
+   * Electronic address.
+   */
+  public ElectronicAddress getElectronicAddress() {
+
+    return electronicAddress;
+  }
+
+  /**
+   * Electronic address.
+   */
+  public void setElectronicAddress(final ElectronicAddress value) {
+
+    this.electronicAddress = value;
+  }
+
+  /**
+   * Person's first name.
+   */
+  private String firstName;
+
+  /**
+   * Person's first name.
+   */
+  public String getFirstName() {
+
+    return firstName;
+  }
+
+  /**
+   * Person's first name.
+   */
+  public void setFirstName(final String value) {
+
+    this.firstName = value;
+  }
+
+  /**
+   * Landline phone number.
+   */
+  private TelephoneNumber landlinePhone;
+
+  /**
+   * Landline phone number.
+   */
+  public TelephoneNumber getLandlinePhone() {
+
+    return landlinePhone;
+  }
+
+  /**
+   * Landline phone number.
+   */
+  public void setLandlinePhone(final TelephoneNumber value) {
+
+    this.landlinePhone = value;
+  }
+
+  /**
+   * Person's last (family, sir) name.
+   */
+  private String lastName;
+
+  /**
+   * Person's last (family, sir) name.
+   */
+  public String getLastName() {
+
+    return lastName;
+  }
+
+  /**
+   * Person's last (family, sir) name.
+   */
+  public void setLastName(final String value) {
+
+    this.lastName = value;
+  }
+
+  /**
+   * Middle name(s) or initial(s).
+   */
+  private String mName;
+
+  /**
+   * Middle name(s) or initial(s).
+   */
+  public String getMName() {
+
+    return mName;
+  }
+
+  /**
+   * Middle name(s) or initial(s).
+   */
+  public void setMName(final String value) {
+
+    this.mName = value;
+  }
+
+  /**
+   * Mobile phone number.
+   */
+  private TelephoneNumber mobilePhone;
+
+  /**
+   * Mobile phone number.
+   */
+  public TelephoneNumber getMobilePhone() {
+
+    return mobilePhone;
+  }
+
+  /**
+   * Mobile phone number.
+   */
+  public void setMobilePhone(final TelephoneNumber value) {
+
+    this.mobilePhone = value;
+  }
+
+  /**
+   * A prefix or title for the person's name, such as Miss, Mister, Doctor, etc.
+   */
+  private String prefix;
+
+  /**
+   * A prefix or title for the person's name, such as Miss, Mister, Doctor, etc.
+   */
+  public String getPrefix() {
+
+    return prefix;
+  }
+
+  /**
+   * A prefix or title for the person's name, such as Miss, Mister, Doctor, etc.
+   */
+  public void setPrefix(final String value) {
+
+    this.prefix = value;
+  }
+
+  /**
+   * Special service needs for the person (contact) are described; examples include
+   * life support, etc.
+   */
+  private String specialNeed;
+
+  /**
+   * Special service needs for the person (contact) are described; examples include
+   * life support, etc.
+   */
+  public String getSpecialNeed() {
+
+    return specialNeed;
+  }
+
+  /**
+   * Special service needs for the person (contact) are described; examples include
+   * life support, etc.
+   */
+  public void setSpecialNeed(final String value) {
+
+    this.specialNeed = value;
+  }
+
+  /**
+   * A suffix for the person's name, such as II, III, etc.
+   */
+  private String suffix;
+
+  /**
+   * A suffix for the person's name, such as II, III, etc.
+   */
+  public String getSuffix() {
+
+    return suffix;
+  }
+
+  /**
+   * A suffix for the person's name, such as II, III, etc.
+   */
+  public void setSuffix(final String value) {
+
+    this.suffix = value;
+  }
+
+  /**
+   * All roles of this person.
+   */
+  private List<PersonRole> Roles;
+
+  /**
+   * All roles of this person.
+   */
+  public List<PersonRole> getRoles() {
+
+    return Roles;
+  }
+
+  /**
+   * All roles of this person.
+   */
+  public void setRoles(final List<PersonRole> value) {
+
+    this.Roles = value;
+  }
+
+  public Person() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/PersonRole.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/PersonRole.java
new file mode 100644
index 0000000..17901a5
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/PersonRole.java
@@ -0,0 +1,74 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+
+/**
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:07
+ */
+@SuppressWarnings("javadoc")
+public class PersonRole extends IdentifiedObject {
+
+  /**
+   * Person having this role.
+   */
+  private Person Person;
+
+  /**
+   * Person having this role.
+   */
+  public Person getPerson() {
+
+    return Person;
+  }
+
+  /**
+   * Person having this role.
+   */
+  public void setPerson(final Person value) {
+
+    this.Person = value;
+  }
+
+  /**
+   * All configuration events created for this person role.
+   */
+  private List<ConfigurationEvent> ConfigurationEvents;
+
+  /**
+   * All configuration events created for this person role.
+   */
+  public List<ConfigurationEvent> getConfigurationEvents() {
+
+    return ConfigurationEvents;
+  }
+
+  /**
+   * All configuration events created for this person role.
+   */
+  public void setConfigurationEvents(final List<ConfigurationEvent> value) {
+
+    this.ConfigurationEvents = value;
+  }
+
+  public PersonRole() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/PositionPoint.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/PositionPoint.java
new file mode 100644
index 0000000..664ded0
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/PositionPoint.java
@@ -0,0 +1,170 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Set of spatial coordinates that determine a point, defined in the coordinate
+ * system specified in 'Location.CoordinateSystem'. Use a single position point
+ * instance to desribe a point-oriented location. Use a sequence of position
+ * points to describe a line-oriented object (physical location of non-point
+ * oriented objects like cables or lines), or area of an object (like a substation
+ * or a geographical zone - in this case, have first and last position point with
+ * the same values).
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:12
+ */
+@SuppressWarnings("javadoc")
+public class PositionPoint implements ICimEntity {
+
+  /**
+   * Zero-relative sequence number of this group within a series of points; used
+   * when there is a need to express disjoint groups of points that are considered
+   * to be part of a single location.
+   */
+  private Integer groupNumber;
+
+  /**
+   * Zero-relative sequence number of this group within a series of points; used
+   * when there is a need to express disjoint groups of points that are considered
+   * to be part of a single location.
+   */
+  public Integer getGroupNumber() {
+
+    return groupNumber;
+  }
+
+  /**
+   * Zero-relative sequence number of this group within a series of points; used
+   * when there is a need to express disjoint groups of points that are considered
+   * to be part of a single location.
+   */
+  public void setGroupNumber(final Integer value) {
+
+    this.groupNumber = value;
+  }
+
+  /**
+   * Zero-relative sequence number of this point within a series of points.
+   */
+  private Integer sequenceNumber;
+
+  /**
+   * Zero-relative sequence number of this point within a series of points.
+   */
+  public Integer getSequenceNumber() {
+
+    return sequenceNumber;
+  }
+
+  /**
+   * Zero-relative sequence number of this point within a series of points.
+   */
+  public void setSequenceNumber(final Integer value) {
+
+    this.sequenceNumber = value;
+  }
+
+  /**
+   * X axis position.
+   */
+  private String xPosition;
+
+  /**
+   * X axis position.
+   */
+  public String getXPosition() {
+
+    return xPosition;
+  }
+
+  /**
+   * X axis position.
+   */
+  public void setXPosition(final String value) {
+
+    this.xPosition = value;
+  }
+
+  /**
+   * Y axis position.
+   */
+  private String yPosition;
+
+  /**
+   * Y axis position.
+   */
+  public String getYPosition() {
+
+    return yPosition;
+  }
+
+  /**
+   * Y axis position.
+   */
+  public void setYPosition(final String value) {
+
+    this.yPosition = value;
+  }
+
+  /**
+   * (if applicable) Z axis position.
+   */
+  private String zPosition;
+
+  /**
+   * (if applicable) Z axis position.
+   */
+  public String getZPosition() {
+
+    return zPosition;
+  }
+
+  /**
+   * (if applicable) Z axis position.
+   */
+  public void setZPosition(final String value) {
+
+    this.zPosition = value;
+  }
+
+  /**
+   * Location described by this position point.
+   */
+  private Location Location;
+
+  /**
+   * Location described by this position point.
+   */
+  public Location getLocation() {
+
+    return Location;
+  }
+
+  /**
+   * Location described by this position point.
+   */
+  public void setLocation(final Location value) {
+
+    this.Location = value;
+  }
+
+  public PositionPoint() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Priority.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Priority.java
new file mode 100644
index 0000000..734d287
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Priority.java
@@ -0,0 +1,98 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Priority definition.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:15
+ */
+@SuppressWarnings("javadoc")
+public class Priority implements ICimCompound {
+
+  /**
+   * Justification for 'rank'.
+   */
+  private String justification;
+
+  /**
+   * Justification for 'rank'.
+   */
+  public String getJustification() {
+
+    return justification;
+  }
+
+  /**
+   * Justification for 'rank'.
+   */
+  public void setJustification(final String value) {
+
+    this.justification = value;
+  }
+
+  /**
+   * Priority level; usually, lower number means high priority, but the details are
+   * provided in 'type'.
+   */
+  private Integer rank;
+
+  /**
+   * Priority level; usually, lower number means high priority, but the details are
+   * provided in 'type'.
+   */
+  public Integer getRank() {
+
+    return rank;
+  }
+
+  /**
+   * Priority level; usually, lower number means high priority, but the details are
+   * provided in 'type'.
+   */
+  public void setRank(final Integer value) {
+
+    this.rank = value;
+  }
+
+  /**
+   * Type describing 'rank'; e.g., high, emergency, etc.
+   */
+  private String type;
+
+  /**
+   * Type describing 'rank'; e.g., high, emergency, etc.
+   */
+  public String getType() {
+
+    return type;
+  }
+
+  /**
+   * Type describing 'rank'; e.g., high, emergency, etc.
+   */
+  public void setType(final String value) {
+
+    this.type = value;
+  }
+
+  public Priority() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ScheduledEvent.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ScheduledEvent.java
new file mode 100644
index 0000000..0530f65
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ScheduledEvent.java
@@ -0,0 +1,108 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Seconds;
+
+/**
+ * An event to trigger one or more activities, such as reading a meter,
+ * recalculating a bill, requesting work, when generating units must be scheduled
+ * for maintenance, when a transformer is scheduled to be refurbished, etc.
+ * 
+ * @created 10-Aug-2017 18:11:35
+ */
+@SuppressWarnings("javadoc")
+public class ScheduledEvent extends IdentifiedObject {
+
+  /**
+   * Duration of the scheduled event, for example, the time to ramp between values.
+   */
+  private Seconds duration;
+
+  /**
+   * Duration of the scheduled event, for example, the time to ramp between values.
+   */
+  public Seconds getDuration() {
+
+    return duration;
+  }
+
+  /**
+   * Duration of the scheduled event, for example, the time to ramp between values.
+   */
+  public void setDuration(final Seconds value) {
+
+    this.duration = value;
+  }
+
+  private Status status;
+
+  public Status getStatus() {
+
+    return status;
+  }
+
+  public void setStatus(final Status value) {
+
+    this.status = value;
+  }
+
+  /**
+   * Type of scheduled event.
+   */
+  private String type;
+
+  /**
+   * Type of scheduled event.
+   */
+  public String getType() {
+
+    return type;
+  }
+
+  /**
+   * Type of scheduled event.
+   */
+  public void setType(final String value) {
+
+    this.type = value;
+  }
+
+  /**
+   * Specification for this scheduled event.
+   */
+  private ScheduledEventData ScheduledEventData;
+
+  /**
+   * Specification for this scheduled event.
+   */
+  public ScheduledEventData getScheduledEventData() {
+
+    return ScheduledEventData;
+  }
+
+  /**
+   * Specification for this scheduled event.
+   */
+  public void setScheduledEventData(final ScheduledEventData value) {
+
+    this.ScheduledEventData = value;
+  }
+
+  public ScheduledEvent() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ScheduledEventData.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ScheduledEventData.java
new file mode 100644
index 0000000..658d0bb
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/ScheduledEventData.java
@@ -0,0 +1,134 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.Sandbox.InfNewAssets.InspectionDataSet;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.DateTimeInterval;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Schedule parameters for an activity that is to occur, is occurring, or has
+ * completed.
+ * 
+ * @created 10-Aug-2017 18:11:35
+ */
+@SuppressWarnings("javadoc")
+public class ScheduledEventData implements ICimEntity {
+
+  /**
+   * Estimated date and time for activity execution (with earliest possibility of
+   * activity initiation and latest possibility of activity completion).
+   */
+  private DateTimeInterval estimatedWindow;
+
+  /**
+   * Estimated date and time for activity execution (with earliest possibility of
+   * activity initiation and latest possibility of activity completion).
+   */
+  public DateTimeInterval getEstimatedWindow() {
+
+    return estimatedWindow;
+  }
+
+  /**
+   * Estimated date and time for activity execution (with earliest possibility of
+   * activity initiation and latest possibility of activity completion).
+   */
+  public void setEstimatedWindow(final DateTimeInterval value) {
+
+    this.estimatedWindow = value;
+  }
+
+  /**
+   * Requested date and time interval for activity execution.
+   */
+  private DateTimeInterval requestedWindow;
+
+  /**
+   * Requested date and time interval for activity execution.
+   */
+  public DateTimeInterval getRequestedWindow() {
+
+    return requestedWindow;
+  }
+
+  /**
+   * Requested date and time interval for activity execution.
+   */
+  public void setRequestedWindow(final DateTimeInterval value) {
+
+    this.requestedWindow = value;
+  }
+
+  private Status status;
+
+  public Status getStatus() {
+
+    return status;
+  }
+
+  public void setStatus(final Status value) {
+
+    this.status = value;
+  }
+
+  /**
+   * All scheduled events with this specification.
+   */
+  private List<ScheduledEvent> ScheduledEvents;
+
+  /**
+   * All scheduled events with this specification.
+   */
+  public List<ScheduledEvent> getScheduledEvents() {
+
+    return ScheduledEvents;
+  }
+
+  /**
+   * All scheduled events with this specification.
+   */
+  public void setScheduledEvents(final List<ScheduledEvent> value) {
+
+    this.ScheduledEvents = value;
+  }
+
+  /**
+  * 
+  */
+  private InspectionDataSet InspectionDataSet;
+
+  /**
+  * 
+  */
+  public InspectionDataSet getInspectionDataSet() {
+
+    return InspectionDataSet;
+  }
+
+  /**
+  * 
+  */
+  public void setInspectionDataSet(final InspectionDataSet value) {
+
+    this.InspectionDataSet = value;
+  }
+
+  public ScheduledEventData() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Status.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Status.java
new file mode 100644
index 0000000..ad23131
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/Status.java
@@ -0,0 +1,123 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.Date;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Current status information relevant to an entity.
+ * 
+ * @created 10-Aug-2017 18:11:43
+ */
+@SuppressWarnings("javadoc")
+public class Status implements ICimCompound {
+
+  /**
+   * Date and time for which status 'value' applies.
+   */
+  @Cim(originalType = "DateTime")
+  private Date dateTime;
+
+  /**
+   * Date and time for which status 'value' applies.
+   */
+  public Date getDateTime() {
+
+    return dateTime;
+  }
+
+  /**
+   * Date and time for which status 'value' applies.
+   */
+  public void setDateTime(final Date value) {
+
+    this.dateTime = value;
+  }
+
+  /**
+   * Reason code or explanation for why an object went to the current status 'value'.
+   */
+  private String reason;
+
+  /**
+   * Reason code or explanation for why an object went to the current status 'value'.
+   */
+  public String getReason() {
+
+    return reason;
+  }
+
+  /**
+   * Reason code or explanation for why an object went to the current status 'value'.
+   */
+  public void setReason(final String value) {
+
+    this.reason = value;
+  }
+
+  /**
+   * Pertinent information regarding the current 'value', as free form text.
+   */
+  private String remark;
+
+  /**
+   * Pertinent information regarding the current 'value', as free form text.
+   */
+  public String getRemark() {
+
+    return remark;
+  }
+
+  /**
+   * Pertinent information regarding the current 'value', as free form text.
+   */
+  public void setRemark(final String value) {
+
+    this.remark = value;
+  }
+
+  /**
+   * Status value at 'dateTime'; prior status changes may have been kept in
+   * instances of activity records associated with the object to which this status
+   * applies.
+   */
+  private String value;
+
+  /**
+   * Status value at 'dateTime'; prior status changes may have been kept in
+   * instances of activity records associated with the object to which this status
+   * applies.
+   */
+  public String getValue() {
+
+    return value;
+  }
+
+  /**
+   * Status value at 'dateTime'; prior status changes may have been kept in
+   * instances of activity records associated with the object to which this status
+   * applies.
+   */
+  public void setValue(final String value) {
+
+    this.value = value;
+  }
+
+  public Status() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/StreetAddress.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/StreetAddress.java
new file mode 100644
index 0000000..c888167
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/StreetAddress.java
@@ -0,0 +1,135 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * General purpose street and postal address information.
+ * 
+ * @created 10-Aug-2017 18:11:43
+ */
+@SuppressWarnings("javadoc")
+public class StreetAddress implements ICimCompound {
+
+  /**
+   * Post office box.
+   */
+  private String poBox;
+
+  /**
+   * Post office box.
+   */
+  public String getPoBox() {
+
+    return poBox;
+  }
+
+  /**
+   * Post office box.
+   */
+  public void setPoBox(final String value) {
+
+    this.poBox = value;
+  }
+
+  /**
+   * Postal code for the address.
+   */
+  private String postalCode;
+
+  /**
+   * Postal code for the address.
+   */
+  public String getPostalCode() {
+
+    return postalCode;
+  }
+
+  /**
+   * Postal code for the address.
+   */
+  public void setPostalCode(final String value) {
+
+    this.postalCode = value;
+  }
+
+  /**
+   * Status of this address.
+   */
+  private Status status;
+
+  /**
+   * Status of this address.
+   */
+  public Status getStatus() {
+
+    return status;
+  }
+
+  /**
+   * Status of this address.
+   */
+  public void setStatus(final Status value) {
+
+    this.status = value;
+  }
+
+  /**
+   * Street detail.
+   */
+  private StreetDetail streetDetail;
+
+  /**
+   * Street detail.
+   */
+  public StreetDetail getStreetDetail() {
+
+    return streetDetail;
+  }
+
+  /**
+   * Street detail.
+   */
+  public void setStreetDetail(final StreetDetail value) {
+
+    this.streetDetail = value;
+  }
+
+  /**
+   * Town detail.
+   */
+  private TownDetail townDetail;
+
+  /**
+   * Town detail.
+   */
+  public TownDetail getTownDetail() {
+
+    return townDetail;
+  }
+
+  /**
+   * Town detail.
+   */
+  public void setTownDetail(final TownDetail value) {
+
+    this.townDetail = value;
+  }
+
+  public StreetAddress() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/StreetDetail.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/StreetDetail.java
new file mode 100644
index 0000000..8a61893
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/StreetDetail.java
@@ -0,0 +1,309 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Street details, in the context of address.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:43
+ */
+@SuppressWarnings("javadoc")
+public class StreetDetail implements ICimCompound {
+
+  /**
+   * First line of a free form address or some additional address information (for
+   * example a mail stop).
+   */
+  private String addressGeneral;
+
+  /**
+   * First line of a free form address or some additional address information (for
+   * example a mail stop).
+   */
+  public String getAddressGeneral() {
+
+    return addressGeneral;
+  }
+
+  /**
+   * First line of a free form address or some additional address information (for
+   * example a mail stop).
+   */
+  public void setAddressGeneral(final String value) {
+
+    this.addressGeneral = value;
+  }
+
+  /**
+   * (if applicable) Second line of a free form address.
+   */
+  private String addressGeneral2;
+
+  /**
+   * (if applicable) Second line of a free form address.
+   */
+  public String getAddressGeneral2() {
+
+    return addressGeneral2;
+  }
+
+  /**
+   * (if applicable) Second line of a free form address.
+   */
+  public void setAddressGeneral2(final String value) {
+
+    this.addressGeneral2 = value;
+  }
+
+  /**
+   * (if applicable) Third line of a free form address.
+   */
+  private String addressGeneral3;
+
+  /**
+   * (if applicable) Third line of a free form address.
+   */
+  public String getAddressGeneral3() {
+
+    return addressGeneral3;
+  }
+
+  /**
+   * (if applicable) Third line of a free form address.
+   */
+  public void setAddressGeneral3(final String value) {
+
+    this.addressGeneral3 = value;
+  }
+
+  /**
+   * (if applicable) In certain cases the physical location of the place of interest
+   * does not have a direct point of entry from the street, but may be located
+   * inside a larger structure such as a building, complex, office block, apartment,
+   * etc.
+   */
+  private String buildingName;
+
+  /**
+   * (if applicable) In certain cases the physical location of the place of interest
+   * does not have a direct point of entry from the street, but may be located
+   * inside a larger structure such as a building, complex, office block, apartment,
+   * etc.
+   */
+  public String getBuildingName() {
+
+    return buildingName;
+  }
+
+  /**
+   * (if applicable) In certain cases the physical location of the place of interest
+   * does not have a direct point of entry from the street, but may be located
+   * inside a larger structure such as a building, complex, office block, apartment,
+   * etc.
+   */
+  public void setBuildingName(final String value) {
+
+    this.buildingName = value;
+  }
+
+  /**
+   * (if applicable) Utilities often make use of external reference systems, such as
+   * those of the town-planner's department or surveyor general's mapping system,
+   * that allocate global reference codes to streets.
+   */
+  private String code;
+
+  /**
+   * (if applicable) Utilities often make use of external reference systems, such as
+   * those of the town-planner's department or surveyor general's mapping system,
+   * that allocate global reference codes to streets.
+   */
+  public String getCode() {
+
+    return code;
+  }
+
+  /**
+   * (if applicable) Utilities often make use of external reference systems, such as
+   * those of the town-planner's department or surveyor general's mapping system,
+   * that allocate global reference codes to streets.
+   */
+  public void setCode(final String value) {
+
+    this.code = value;
+  }
+
+  /**
+   * Name of the street.
+   */
+  private String name;
+
+  /**
+   * Name of the street.
+   */
+  public String getName() {
+
+    return name;
+  }
+
+  /**
+   * Name of the street.
+   */
+  public void setName(final String value) {
+
+    this.name = value;
+  }
+
+  /**
+   * Designator of the specific location on the street.
+   */
+  private String number;
+
+  /**
+   * Designator of the specific location on the street.
+   */
+  public String getNumber() {
+
+    return number;
+  }
+
+  /**
+   * Designator of the specific location on the street.
+   */
+  public void setNumber(final String value) {
+
+    this.number = value;
+  }
+
+  /**
+   * Prefix to the street name. For example: North, South, East, West.
+   */
+  private String prefix;
+
+  /**
+   * Prefix to the street name. For example: North, South, East, West.
+   */
+  public String getPrefix() {
+
+    return prefix;
+  }
+
+  /**
+   * Prefix to the street name. For example: North, South, East, West.
+   */
+  public void setPrefix(final String value) {
+
+    this.prefix = value;
+  }
+
+  /**
+   * Suffix to the street name. For example: North, South, East, West.
+   */
+  private String suffix;
+
+  /**
+   * Suffix to the street name. For example: North, South, East, West.
+   */
+  public String getSuffix() {
+
+    return suffix;
+  }
+
+  /**
+   * Suffix to the street name. For example: North, South, East, West.
+   */
+  public void setSuffix(final String value) {
+
+    this.suffix = value;
+  }
+
+  /**
+   * Number of the apartment or suite.
+   */
+  private String suiteNumber;
+
+  /**
+   * Number of the apartment or suite.
+   */
+  public String getSuiteNumber() {
+
+    return suiteNumber;
+  }
+
+  /**
+   * Number of the apartment or suite.
+   */
+  public void setSuiteNumber(final String value) {
+
+    this.suiteNumber = value;
+  }
+
+  /**
+   * Type of street. Examples include: street, circle, boulevard, avenue, road,
+   * drive, etc.
+   */
+  private String type;
+
+  /**
+   * Type of street. Examples include: street, circle, boulevard, avenue, road,
+   * drive, etc.
+   */
+  public String getType() {
+
+    return type;
+  }
+
+  /**
+   * Type of street. Examples include: street, circle, boulevard, avenue, road,
+   * drive, etc.
+   */
+  public void setType(final String value) {
+
+    this.type = value;
+  }
+
+  /**
+   * True if this street is within the legal geographical boundaries of the
+   * specified town (default).
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean withinTownLimits;
+
+  /**
+   * True if this street is within the legal geographical boundaries of the
+   * specified town (default).
+   */
+  public Boolean isWithinTownLimits() {
+
+    return withinTownLimits;
+  }
+
+  /**
+   * True if this street is within the legal geographical boundaries of the
+   * specified town (default).
+   */
+  public void setWithinTownLimits(final Boolean value) {
+
+    this.withinTownLimits = value;
+  }
+
+  public StreetDetail() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/TelephoneNumber.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/TelephoneNumber.java
new file mode 100644
index 0000000..284a967
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/TelephoneNumber.java
@@ -0,0 +1,200 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Telephone number.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:51
+ */
+@SuppressWarnings("javadoc")
+public class TelephoneNumber implements ICimCompound {
+
+  /**
+   * (if applicable) Area or region code.
+   */
+  private String areaCode;
+
+  /**
+   * (if applicable) Area or region code.
+   */
+  public String getAreaCode() {
+
+    return areaCode;
+  }
+
+  /**
+   * (if applicable) Area or region code.
+   */
+  public void setAreaCode(final String value) {
+
+    this.areaCode = value;
+  }
+
+  /**
+   * City code.
+   */
+  private String cityCode;
+
+  /**
+   * City code.
+   */
+  public String getCityCode() {
+
+    return cityCode;
+  }
+
+  /**
+   * City code.
+   */
+  public void setCityCode(final String value) {
+
+    this.cityCode = value;
+  }
+
+  /**
+   * Country code.
+   */
+  private String countryCode;
+
+  /**
+   * Country code.
+   */
+  public String getCountryCode() {
+
+    return countryCode;
+  }
+
+  /**
+   * Country code.
+   */
+  public void setCountryCode(final String value) {
+
+    this.countryCode = value;
+  }
+
+  /**
+   * (if applicable) Dial out code, for instance to call outside an enterprise.
+   */
+  private String dialOut;
+
+  /**
+   * (if applicable) Dial out code, for instance to call outside an enterprise.
+   */
+  public String getDialOut() {
+
+    return dialOut;
+  }
+
+  /**
+   * (if applicable) Dial out code, for instance to call outside an enterprise.
+   */
+  public void setDialOut(final String value) {
+
+    this.dialOut = value;
+  }
+
+  /**
+   * (if applicable) Extension for this telephone number.
+   */
+  private String extension;
+
+  /**
+   * (if applicable) Extension for this telephone number.
+   */
+  public String getExtension() {
+
+    return extension;
+  }
+
+  /**
+   * (if applicable) Extension for this telephone number.
+   */
+  public void setExtension(final String value) {
+
+    this.extension = value;
+  }
+
+  /**
+   * (if applicable) Prefix used when calling an international number.
+   */
+  private String internationalPrefix;
+
+  /**
+   * (if applicable) Prefix used when calling an international number.
+   */
+  public String getInternationalPrefix() {
+
+    return internationalPrefix;
+  }
+
+  /**
+   * (if applicable) Prefix used when calling an international number.
+   */
+  public void setInternationalPrefix(final String value) {
+
+    this.internationalPrefix = value;
+  }
+
+  /**
+   * Phone number according to ITU E.164.
+   */
+  private String ituPhone;
+
+  /**
+   * Phone number according to ITU E.164.
+   */
+  public String getItuPhone() {
+
+    return ituPhone;
+  }
+
+  /**
+   * Phone number according to ITU E.164.
+   */
+  public void setItuPhone(final String value) {
+
+    this.ituPhone = value;
+  }
+
+  /**
+   * Main (local) part of this telephone number.
+   */
+  private String localNumber;
+
+  /**
+   * Main (local) part of this telephone number.
+   */
+  public String getLocalNumber() {
+
+    return localNumber;
+  }
+
+  /**
+   * Main (local) part of this telephone number.
+   */
+  public void setLocalNumber(final String value) {
+
+    this.localNumber = value;
+  }
+
+  public TelephoneNumber() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/TimePoint.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/TimePoint.java
new file mode 100644
index 0000000..38bd40a
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/TimePoint.java
@@ -0,0 +1,174 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.Date;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.DateTimeInterval;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Seconds;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * A point in time within a sequence of points in time relative to a time schedule.
+ * 
+ * @created 10-Aug-2017 18:11:53
+ */
+@SuppressWarnings("javadoc")
+public class TimePoint extends IdentifiedObject {
+
+  /**
+   * Absolute date and time for this time point. For calendar-based time point, it
+   * is typically manually entered, while for interval-based or sequence-based time
+   * point it is derived.
+   */
+  @Cim(originalType = "DateTime")
+  private Date dateTime;
+
+  /**
+   * Absolute date and time for this time point. For calendar-based time point, it
+   * is typically manually entered, while for interval-based or sequence-based time
+   * point it is derived.
+   */
+  public Date getDateTime() {
+
+    return dateTime;
+  }
+
+  /**
+   * Absolute date and time for this time point. For calendar-based time point, it
+   * is typically manually entered, while for interval-based or sequence-based time
+   * point it is derived.
+   */
+  public void setDateTime(final Date value) {
+
+    this.dateTime = value;
+  }
+
+  /**
+   * (if interval-based) A point in time relative to scheduled start time in
+   * 'TimeSchedule.scheduleInterval.start'.
+   */
+  private Seconds relativeTimeInterval;
+
+  /**
+   * (if interval-based) A point in time relative to scheduled start time in
+   * 'TimeSchedule.scheduleInterval.start'.
+   */
+  public Seconds getRelativeTimeInterval() {
+
+    return relativeTimeInterval;
+  }
+
+  /**
+   * (if interval-based) A point in time relative to scheduled start time in
+   * 'TimeSchedule.scheduleInterval.start'.
+   */
+  public void setRelativeTimeInterval(final Seconds value) {
+
+    this.relativeTimeInterval = value;
+  }
+
+  /**
+   * (if sequence-based) Relative sequence number for this time point.
+   */
+  private Integer sequenceNumber;
+
+  /**
+   * (if sequence-based) Relative sequence number for this time point.
+   */
+  public Integer getSequenceNumber() {
+
+    return sequenceNumber;
+  }
+
+  /**
+   * (if sequence-based) Relative sequence number for this time point.
+   */
+  public void setSequenceNumber(final Integer value) {
+
+    this.sequenceNumber = value;
+  }
+
+  /**
+   * Status of this time point.
+   */
+  private Status status;
+
+  /**
+   * Status of this time point.
+   */
+  public Status getStatus() {
+
+    return status;
+  }
+
+  /**
+   * Status of this time point.
+   */
+  public void setStatus(final Status value) {
+
+    this.status = value;
+  }
+
+  /**
+   * Interval defining the window of time that this time point is valid (for example,
+   * seasonal, only on weekends, not on weekends, only 8:00 am to 5:00 pm, etc.).
+   */
+  private DateTimeInterval window;
+
+  /**
+   * Interval defining the window of time that this time point is valid (for example,
+   * seasonal, only on weekends, not on weekends, only 8:00 am to 5:00 pm, etc.).
+   */
+  public DateTimeInterval getWindow() {
+
+    return window;
+  }
+
+  /**
+   * Interval defining the window of time that this time point is valid (for example,
+   * seasonal, only on weekends, not on weekends, only 8:00 am to 5:00 pm, etc.).
+   */
+  public void setWindow(final DateTimeInterval value) {
+
+    this.window = value;
+  }
+
+  /**
+   * Time schedule owning this time point.
+   */
+  private TimeSchedule TimeSchedule;
+
+  /**
+   * Time schedule owning this time point.
+   */
+  public TimeSchedule getTimeSchedule() {
+
+    return TimeSchedule;
+  }
+
+  /**
+   * Time schedule owning this time point.
+   */
+  public void setTimeSchedule(final TimeSchedule value) {
+
+    this.TimeSchedule = value;
+  }
+
+  public TimePoint() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/TimeSchedule.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/TimeSchedule.java
new file mode 100644
index 0000000..ddc6c64
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/TimeSchedule.java
@@ -0,0 +1,189 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.DateTimeInterval;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Seconds;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Description of anything that changes through time. Time schedule is used to
+ * perform a single-valued function of time. Use inherited 'type' attribute to
+ * give additional information on this schedule, such as: periodic (hourly, daily,
+ * weekly, monthly, etc.), day of the month, by date, calendar (specific times and
+ * dates).
+ * 
+ * @created 10-Aug-2017 18:11:53
+ */
+@SuppressWarnings("javadoc")
+public class TimeSchedule extends Document {
+
+  /**
+   * True if this schedule is deactivated (disabled).
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean disabled;
+
+  /**
+   * True if this schedule is deactivated (disabled).
+   */
+  public Boolean isDisabled() {
+
+    return disabled;
+  }
+
+  /**
+   * True if this schedule is deactivated (disabled).
+   */
+  public void setDisabled(final Boolean value) {
+
+    this.disabled = value;
+  }
+
+  /**
+   * The offset from midnight (i.e., 0 h, 0 min, 0 s) for the periodic time points
+   * to begin. For example, for an interval meter that is set up for five minute
+   * intervals ('recurrencePeriod'=300=5 min), setting 'offset'=120=2 min would
+   * result in scheduled events to read the meter executing at 2 min, 7 min, 12 min,
+   * 17 min, 22 min, 27 min, 32 min, 37 min, 42 min, 47 min, 52 min, and 57 min past
+   * each hour.
+   */
+  private Seconds offset;
+
+  /**
+   * The offset from midnight (i.e., 0 h, 0 min, 0 s) for the periodic time points
+   * to begin. For example, for an interval meter that is set up for five minute
+   * intervals ('recurrencePeriod'=300=5 min), setting 'offset'=120=2 min would
+   * result in scheduled events to read the meter executing at 2 min, 7 min, 12 min,
+   * 17 min, 22 min, 27 min, 32 min, 37 min, 42 min, 47 min, 52 min, and 57 min past
+   * each hour.
+   */
+  public Seconds getOffset() {
+
+    return offset;
+  }
+
+  /**
+   * The offset from midnight (i.e., 0 h, 0 min, 0 s) for the periodic time points
+   * to begin. For example, for an interval meter that is set up for five minute
+   * intervals ('recurrencePeriod'=300=5 min), setting 'offset'=120=2 min would
+   * result in scheduled events to read the meter executing at 2 min, 7 min, 12 min,
+   * 17 min, 22 min, 27 min, 32 min, 37 min, 42 min, 47 min, 52 min, and 57 min past
+   * each hour.
+   */
+  public void setOffset(final Seconds value) {
+
+    this.offset = value;
+  }
+
+  /**
+   * Interval at which the scheduled action repeats (e.g., first Monday of every
+   * month, last day of the month, etc.).
+   */
+  private String recurrencePattern;
+
+  /**
+   * Interval at which the scheduled action repeats (e.g., first Monday of every
+   * month, last day of the month, etc.).
+   */
+  public String getRecurrencePattern() {
+
+    return recurrencePattern;
+  }
+
+  /**
+   * Interval at which the scheduled action repeats (e.g., first Monday of every
+   * month, last day of the month, etc.).
+   */
+  public void setRecurrencePattern(final String value) {
+
+    this.recurrencePattern = value;
+  }
+
+  /**
+   * Duration between time points, from the beginning of one period to the beginning
+   * of the next period. Note that a device like a meter may have multiple interval
+   * periods (e.g., 1 min, 5 min, 15 min, 30 min, or 60 min).
+   */
+  private Seconds recurrencePeriod;
+
+  /**
+   * Duration between time points, from the beginning of one period to the beginning
+   * of the next period. Note that a device like a meter may have multiple interval
+   * periods (e.g., 1 min, 5 min, 15 min, 30 min, or 60 min).
+   */
+  public Seconds getRecurrencePeriod() {
+
+    return recurrencePeriod;
+  }
+
+  /**
+   * Duration between time points, from the beginning of one period to the beginning
+   * of the next period. Note that a device like a meter may have multiple interval
+   * periods (e.g., 1 min, 5 min, 15 min, 30 min, or 60 min).
+   */
+  public void setRecurrencePeriod(final Seconds value) {
+
+    this.recurrencePeriod = value;
+  }
+
+  /**
+   * Schedule date and time interval.
+   */
+  private DateTimeInterval scheduleInterval;
+
+  /**
+   * Schedule date and time interval.
+   */
+  public DateTimeInterval getScheduleInterval() {
+
+    return scheduleInterval;
+  }
+
+  /**
+   * Schedule date and time interval.
+   */
+  public void setScheduleInterval(final DateTimeInterval value) {
+
+    this.scheduleInterval = value;
+  }
+
+  /**
+   * Sequence of time points belonging to this time schedule.
+   */
+  private List<TimePoint> TimePoints;
+
+  /**
+   * Sequence of time points belonging to this time schedule.
+   */
+  public List<TimePoint> getTimePoints() {
+
+    return TimePoints;
+  }
+
+  /**
+   * Sequence of time points belonging to this time schedule.
+   */
+  public void setTimePoints(final List<TimePoint> value) {
+
+    this.TimePoints = value;
+  }
+
+  public TimeSchedule() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/TownDetail.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/TownDetail.java
new file mode 100644
index 0000000..ac5849e
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/TownDetail.java
@@ -0,0 +1,140 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Town details, in the context of address.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:55
+ */
+@SuppressWarnings("javadoc")
+public class TownDetail implements ICimCompound {
+
+  /**
+   * Town code.
+   */
+  private String code;
+
+  /**
+   * Town code.
+   */
+  public String getCode() {
+
+    return code;
+  }
+
+  /**
+   * Town code.
+   */
+  public void setCode(final String value) {
+
+    this.code = value;
+  }
+
+  /**
+   * Name of the country.
+   */
+  private String country;
+
+  /**
+   * Name of the country.
+   */
+  public String getCountry() {
+
+    return country;
+  }
+
+  /**
+   * Name of the country.
+   */
+  public void setCountry(final String value) {
+
+    this.country = value;
+  }
+
+  /**
+   * Town name.
+   */
+  private String name;
+
+  /**
+   * Town name.
+   */
+  public String getName() {
+
+    return name;
+  }
+
+  /**
+   * Town name.
+   */
+  public void setName(final String value) {
+
+    this.name = value;
+  }
+
+  /**
+   * Town section. For example, it is common for there to be 36 sections per
+   * township.
+   */
+  private String section;
+
+  /**
+   * Town section. For example, it is common for there to be 36 sections per
+   * township.
+   */
+  public String getSection() {
+
+    return section;
+  }
+
+  /**
+   * Town section. For example, it is common for there to be 36 sections per
+   * township.
+   */
+  public void setSection(final String value) {
+
+    this.section = value;
+  }
+
+  /**
+   * Name of the state or province.
+   */
+  private String stateOrProvince;
+
+  /**
+   * Name of the state or province.
+   */
+  public String getStateOrProvince() {
+
+    return stateOrProvince;
+  }
+
+  /**
+   * Name of the state or province.
+   */
+  public void setStateOrProvince(final String value) {
+
+    this.stateOrProvince = value;
+  }
+
+  public TownDetail() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/UserAttribute.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/UserAttribute.java
new file mode 100644
index 0000000..6d095fb
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Common/UserAttribute.java
@@ -0,0 +1,207 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssets.Specification;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfERPSupport.ErpInvoiceLineItem;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfERPSupport.ErpLedgerEntry;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.PaymentMetering.Transaction;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.StringQuantity;
+import org.eclipse.openk.common.dataexchange.cim.ICimEntity;
+
+/**
+ * Generic name-value pair class, with optional sequence number and units for
+ * value; can be used to model parts of information exchange when concrete types
+ * are not known in advance.
+ * 
+ * @created 10-Aug-2017 18:12:04
+ */
+@SuppressWarnings("javadoc")
+public class UserAttribute implements ICimEntity {
+
+  /**
+   * Name of an attribute.
+   */
+  private String name;
+
+  /**
+   * Name of an attribute.
+   */
+  public String getName() {
+
+    return name;
+  }
+
+  /**
+   * Name of an attribute.
+   */
+  public void setName(final String value) {
+
+    this.name = value;
+  }
+
+  /**
+   * Sequence number for this attribute in a list of attributes.
+   */
+  private Integer sequenceNumber;
+
+  /**
+   * Sequence number for this attribute in a list of attributes.
+   */
+  public Integer getSequenceNumber() {
+
+    return sequenceNumber;
+  }
+
+  /**
+   * Sequence number for this attribute in a list of attributes.
+   */
+  public void setSequenceNumber(final Integer value) {
+
+    this.sequenceNumber = value;
+  }
+
+  /**
+   * Value of an attribute, including unit information.
+   */
+  private StringQuantity value;
+
+  /**
+   * Value of an attribute, including unit information.
+   */
+  public StringQuantity getValue() {
+
+    return value;
+  }
+
+  /**
+   * Value of an attribute, including unit information.
+   */
+  public void setValue(final StringQuantity value) {
+
+    this.value = value;
+  }
+
+  /**
+  * 
+  */
+  private List<ErpLedgerEntry> ErpLedgerEntries;
+
+  /**
+  * 
+  */
+  public List<ErpLedgerEntry> getErpLedgerEntries() {
+
+    return ErpLedgerEntries;
+  }
+
+  /**
+  * 
+  */
+  public void setErpLedgerEntries(final List<ErpLedgerEntry> value) {
+
+    this.ErpLedgerEntries = value;
+  }
+
+  /**
+  * 
+  */
+  private List<ErpInvoiceLineItem> ErpInvoiceLineItems;
+
+  /**
+  * 
+  */
+  public List<ErpInvoiceLineItem> getErpInvoiceLineItems() {
+
+    return ErpInvoiceLineItems;
+  }
+
+  /**
+  *  
+  */
+  public void setErpInvoiceLineItems(final List<ErpInvoiceLineItem> value) {
+
+    this.ErpInvoiceLineItems = value;
+  }
+
+  /**
+  * 
+  */
+  private Specification RatingSpecification;
+
+  /**
+  * 
+  */
+  public Specification getRatingSpecification() {
+
+    return RatingSpecification;
+  }
+
+  /**
+  * 
+  */
+  public void setRatingSpecification(final Specification value) {
+
+    this.RatingSpecification = value;
+  }
+
+  /**
+  * 
+  */
+  private Specification PropertySpecification;
+
+  /**
+  * 
+  */
+  public Specification getPropertySpecification() {
+
+    return PropertySpecification;
+  }
+
+  /**
+  * 
+  */
+  public void setPropertySpecification(final Specification value) {
+
+    this.PropertySpecification = value;
+  }
+
+  /**
+   * Transaction for which this snapshot has been recorded.
+   */
+  private Transaction Transaction;
+
+  /**
+   * Transaction for which this snapshot has been recorded.
+   */
+  public Transaction getTransaction() {
+
+    return Transaction;
+  }
+
+  /**
+   * Transaction for which this snapshot has been recorded.
+   */
+  public void setTransaction(final Transaction value) {
+
+    this.Transaction = value;
+  }
+
+  public UserAttribute() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/Customer.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/Customer.java
new file mode 100644
index 0000000..a497758
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/Customer.java
@@ -0,0 +1,317 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.OrganisationRole;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Priority;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Status;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfCommon.OldPerson;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Metering.EndDevice;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Organisation receiving services from service supplier.
+ * 
+ * @created 10-Aug-2017 18:09:42
+ */
+@SuppressWarnings("javadoc")
+public class Customer extends OrganisationRole {
+
+  /**
+   * Kind of customer.
+   */
+  private CustomerKind kind;
+
+  /**
+   * Kind of customer.
+   */
+  public CustomerKind getKind() {
+
+    return kind;
+  }
+
+  /**
+   * Kind of customer.
+   */
+  public void setKind(final CustomerKind value) {
+
+    this.kind = value;
+  }
+
+  /**
+   * Locale designating language to use in communications with this customer.
+   */
+  private String locale;
+
+  /**
+   * Locale designating language to use in communications with this customer.
+   */
+  public String getLocale() {
+
+    return locale;
+  }
+
+  /**
+   * Locale designating language to use in communications with this customer.
+   */
+  public void setLocale(final String value) {
+
+    this.locale = value;
+  }
+
+  /**
+   * Priority of the customer.
+   */
+  private Priority priority;
+
+  /**
+   * Priority of the customer.
+   */
+  public Priority getPriority() {
+
+    return priority;
+  }
+
+  /**
+   * Priority of the customer.
+   */
+  public void setPriority(final Priority value) {
+
+    this.priority = value;
+  }
+
+  /**
+   * (if applicable) Public utilities commission (PUC) identification number.
+   */
+  private String pucNumber;
+
+  /**
+   * (if applicable) Public utilities commission (PUC) identification number.
+   */
+  public String getPucNumber() {
+
+    return pucNumber;
+  }
+
+  /**
+   * (if applicable) Public utilities commission (PUC) identification number.
+   */
+  public void setPucNumber(final String value) {
+
+    this.pucNumber = value;
+  }
+
+  /**
+   * True if customer organisation has special service needs such as life support,
+   * hospitals, etc.
+   */
+  private String specialNeed;
+
+  /**
+   * True if customer organisation has special service needs such as life support,
+   * hospitals, etc.
+   */
+  public String getSpecialNeed() {
+
+    return specialNeed;
+  }
+
+  /**
+   * True if customer organisation has special service needs such as life support,
+   * hospitals, etc.
+   */
+  public void setSpecialNeed(final String value) {
+
+    this.specialNeed = value;
+  }
+
+  /**
+   * Status of this customer.
+   */
+  private Status status;
+
+  /**
+   * Status of this customer.
+   */
+  public Status getStatus() {
+
+    return status;
+  }
+
+  /**
+   * Status of this customer.
+   */
+  public void setStatus(final Status value) {
+
+    this.status = value;
+  }
+
+  /**
+   * (use 'priority' instead) True if this is an important customer. Importance is
+   * for matters different than those in 'specialNeed' attribute.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean vip;
+
+  /**
+   * (use 'priority' instead) True if this is an important customer. Importance is
+   * for matters different than those in 'specialNeed' attribute.
+   */
+  public Boolean isVip() {
+
+    return vip;
+  }
+
+  /**
+   * (use 'priority' instead) True if this is an important customer. Importance is
+   * for matters different than those in 'specialNeed' attribute.
+   */
+  public void setVip(final Boolean value) {
+
+    this.vip = value;
+  }
+
+  /**
+   * All trouble tickets for this customer.
+   */
+  private List<TroubleTicket> TroubleTickets;
+
+  /**
+   * All trouble tickets for this customer.
+   */
+  public List<TroubleTicket> getTroubleTickets() {
+
+    return TroubleTickets;
+  }
+
+  /**
+   * All trouble tickets for this customer.
+   */
+  public void setTroubleTickets(final List<TroubleTicket> value) {
+
+    this.TroubleTickets = value;
+  }
+
+  /**
+   * All end devices of this customer.
+   */
+  private List<EndDevice> EndDevices;
+
+  /**
+   * All end devices of this customer.
+   */
+  public List<EndDevice> getEndDevices() {
+
+    return EndDevices;
+  }
+
+  /**
+   * All end devices of this customer.
+   */
+  public void setEndDevices(final List<EndDevice> value) {
+
+    this.EndDevices = value;
+  }
+
+  /**
+   * All accounts of this customer.
+   */
+  private List<CustomerAccount> CustomerAccounts;
+
+  /**
+   * All accounts of this customer.
+   */
+  public List<CustomerAccount> getCustomerAccounts() {
+
+    return CustomerAccounts;
+  }
+
+  /**
+   * All accounts of this customer.
+   */
+  public void setCustomerAccounts(final List<CustomerAccount> value) {
+
+    this.CustomerAccounts = value;
+  }
+
+  /**
+   * All agreements of this customer.
+   */
+  private List<CustomerAgreement> CustomerAgreements;
+
+  /**
+   * All agreements of this customer.
+   */
+  public List<CustomerAgreement> getCustomerAgreements() {
+
+    return CustomerAgreements;
+  }
+
+  /**
+   * All agreements of this customer.
+   */
+  public void setCustomerAgreements(final List<CustomerAgreement> value) {
+
+    this.CustomerAgreements = value;
+  }
+
+  /**
+  * 
+  */
+  private List<OldPerson> ErpPersons;
+
+  /**
+  * 
+  */
+  public List<OldPerson> getErpPersons() {
+
+    return ErpPersons;
+  }
+
+  /**
+  * 
+  */
+  public void setErpPersons(final List<OldPerson> value) {
+
+    this.ErpPersons = value;
+  }
+
+  /**
+   * All notifications required by this customer.
+   */
+  private List<CustomerNotification> Notifications;
+
+  /**
+   * All notifications required by this customer.
+   */
+  public List<CustomerNotification> getNotifications() {
+
+    return Notifications;
+  }
+
+  /**
+   * All notifications required by this customer.
+   */
+  public void setNotifications(final List<CustomerNotification> value) {
+
+    this.Notifications = value;
+  }
+
+  public Customer() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/CustomerAccount.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/CustomerAccount.java
new file mode 100644
index 0000000..872d937
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/CustomerAccount.java
@@ -0,0 +1,234 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Document;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfCustomers.*;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfERPSupport.ErpInvoice;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.PaymentMetering.Transaction;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Money;
+
+/**
+ * Assignment of a group of products and services purchased by the customer
+ * through a customer agreement, used as a mechanism for customer billing and
+ * payment. It contains common information from the various types of customer
+ * agreements to create billings (invoices) for a customer and receive payment.
+ * 
+ * @created 10-Aug-2017 18:09:42
+ */
+@SuppressWarnings("javadoc")
+public class CustomerAccount extends Document {
+
+  /**
+   * Cycle day on which the associated customer account will normally be billed,
+   * used to determine when to produce the billing.
+   */
+  private String billingCycle;
+
+  /**
+   * Cycle day on which the associated customer account will normally be billed,
+   * used to determine when to produce the billing.
+   */
+  public String getBillingCycle() {
+
+    return billingCycle;
+  }
+
+  /**
+   * Cycle day on which the associated customer account will normally be billed,
+   * used to determine when to produce the billing.
+   */
+  public void setBillingCycle(final String value) {
+
+    this.billingCycle = value;
+  }
+
+  /**
+   * Budget bill code.
+   */
+  private String budgetBill;
+
+  /**
+   * Budget bill code.
+   */
+  public String getBudgetBill() {
+
+    return budgetBill;
+  }
+
+  /**
+   * Budget bill code.
+   */
+  public void setBudgetBill(final String value) {
+
+    this.budgetBill = value;
+  }
+
+  /**
+   * The last amount that will be billed to the customer prior to shut off of the
+   * account.
+   */
+  private Money lastBillAmount;
+
+  /**
+   * The last amount that will be billed to the customer prior to shut off of the
+   * account.
+   */
+  public Money getLastBillAmount() {
+
+    return lastBillAmount;
+  }
+
+  /**
+   * The last amount that will be billed to the customer prior to shut off of the
+   * account.
+   */
+  public void setLastBillAmount(final Money value) {
+
+    this.lastBillAmount = value;
+  }
+
+  /**
+  * 
+  */
+  private List<CustomerBillingInfo> CustomerBillingInfos;
+
+  /**
+  * 
+  */
+  public List<CustomerBillingInfo> getCustomerBillingInfos() {
+
+    return CustomerBillingInfos;
+  }
+
+  /**
+  * 
+  */
+  public void setCustomerBillingInfos(final List<CustomerBillingInfo> value) {
+
+    this.CustomerBillingInfos = value;
+  }
+
+  /**
+  * 
+  */
+  private List<ErpInvoice> ErpInvoicees;
+
+  /**
+  * 
+  */
+  public List<ErpInvoice> getErpInvoicees() {
+
+    return ErpInvoicees;
+  }
+
+  /**
+  * 
+  */
+  public void setErpInvoicees(final List<ErpInvoice> value) {
+
+    this.ErpInvoicees = value;
+  }
+
+  /**
+  * 
+  */
+  private List<WorkBillingInfo> WorkBillingInfos;
+
+  /**
+  * 
+  */
+  public List<WorkBillingInfo> getWorkBillingInfos() {
+
+    return WorkBillingInfos;
+  }
+
+  /**
+  * 
+  */
+  public void setWorkBillingInfos(final List<WorkBillingInfo> value) {
+
+    this.WorkBillingInfos = value;
+  }
+
+  /**
+   * All agreements for this customer account.
+   */
+  private List<CustomerAgreement> CustomerAgreements;
+
+  /**
+   * All agreements for this customer account.
+   */
+  public List<CustomerAgreement> getCustomerAgreements() {
+
+    return CustomerAgreements;
+  }
+
+  /**
+   * All agreements for this customer account.
+   */
+  public void setCustomerAgreements(final List<CustomerAgreement> value) {
+
+    this.CustomerAgreements = value;
+  }
+
+  /**
+   * All payment transactions for this customer account.
+   */
+  private List<Transaction> PaymentTransactions;
+
+  /**
+   * All payment transactions for this customer account.
+   */
+  public List<Transaction> getPaymentTransactions() {
+
+    return PaymentTransactions;
+  }
+
+  /**
+   * All payment transactions for this customer account.
+   */
+  public void setPaymentTransactions(final List<Transaction> value) {
+
+    this.PaymentTransactions = value;
+  }
+
+  /**
+   * Customer owning this account.
+   */
+  private Customer Customer;
+
+  /**
+   * Customer owning this account.
+   */
+  public Customer getCustomer() {
+
+    return Customer;
+  }
+
+  /**
+   * Customer owning this account.
+   */
+  public void setCustomer(final Customer value) {
+
+    this.Customer = value;
+  }
+
+  public CustomerAccount() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/CustomerAgreement.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/CustomerAgreement.java
new file mode 100644
index 0000000..211295b
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/CustomerAgreement.java
@@ -0,0 +1,294 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Agreement;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfCustomers.StandardIndustryCode;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Metering.*;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.PaymentMetering.*;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Agreement between the customer and the service supplier to pay for service at a
+ * specific service location. It records certain billing information about the
+ * type of service provided at the service location and is used during charge
+ * creation to determine the type of service.
+ * 
+ * @created 10-Aug-2017 18:09:42
+ */
+@SuppressWarnings("javadoc")
+public class CustomerAgreement extends Agreement {
+
+  /**
+   * If true, the customer is a pre-pay customer for the specified service.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean isPrePay;
+
+  /**
+   * If true, the customer is a pre-pay customer for the specified service.
+   */
+  public Boolean isIsPrePay() {
+
+    return isPrePay;
+  }
+
+  /**
+   * If true, the customer is a pre-pay customer for the specified service.
+   */
+  public void setIsPrePay(final Boolean value) {
+
+    this.isPrePay = value;
+  }
+
+  /**
+   * Load management code.
+   */
+  private String loadMgmt;
+
+  /**
+   * Load management code.
+   */
+  public String getLoadMgmt() {
+
+    return loadMgmt;
+  }
+
+  /**
+   * Load management code.
+   */
+  public void setLoadMgmt(final String value) {
+
+    this.loadMgmt = value;
+  }
+
+  /**
+   * Final date and time the service will be billed to the previous customer.
+   */
+  @Cim(originalType = "DateTime")
+  private Date shutOffDateTime;
+
+  /**
+   * Final date and time the service will be billed to the previous customer.
+   */
+  public Date getShutOffDateTime() {
+
+    return shutOffDateTime;
+  }
+
+  /**
+   * Final date and time the service will be billed to the previous customer.
+   */
+  public void setShutOffDateTime(final Date value) {
+
+    this.shutOffDateTime = value;
+  }
+
+  /**
+   * All demand response programs the customer is enrolled in through this customer agreement.
+   */
+  private List<DemandResponseProgram> DemandResponsePrograms;
+
+  /**
+   * All demand response programs the customer is enrolled in through this customer agreement.
+   */
+  public List<DemandResponseProgram> getDemandResponsePrograms() {
+
+    return DemandResponsePrograms;
+  }
+
+  /**
+   * All demand response programs the customer is enrolled in through this customer agreement.
+   */
+  public void setDemandResponsePrograms(final List<DemandResponseProgram> value) {
+
+    this.DemandResponsePrograms = value;
+  }
+
+  /**
+   * (could be deprecated in the future) All meter readings for this customer agreement.
+   */
+  private List<MeterReading> MeterReadings;
+
+  /**
+   * (could be deprecated in the future) All meter readings for this customer agreement.
+   */
+  public List<MeterReading> getMeterReadings() {
+
+    return MeterReadings;
+  }
+
+  /**
+   * (could be deprecated in the future) All meter readings for this customer agreement.
+   */
+  public void setMeterReadings(final List<MeterReading> value) {
+
+    this.MeterReadings = value;
+  }
+
+  /**
+   * Service supplier for this customer agreement.
+   */
+  private ServiceSupplier ServiceSupplier;
+
+  /**
+   * Service supplier for this customer agreement.
+   */
+  public ServiceSupplier getServiceSupplier() {
+
+    return ServiceSupplier;
+  }
+
+  /**
+   * Service supplier for this customer agreement.
+   */
+  public void setServiceSupplier(final ServiceSupplier value) {
+
+    this.ServiceSupplier = value;
+  }
+
+  /**
+  * 
+  */
+  private StandardIndustryCode StandardIndustryCode;
+
+  /**
+  * 
+  */
+  public StandardIndustryCode getStandardIndustryCode() {
+
+    return StandardIndustryCode;
+  }
+
+  /**
+  * 
+  */
+  public void setStandardIndustryCode(final StandardIndustryCode value) {
+
+    this.StandardIndustryCode = value;
+  }
+
+  /**
+   * All (non-service related) auxiliary agreements that refer to this customer agreement.
+   */
+  private List<AuxiliaryAgreement> AuxiliaryAgreements;
+
+  /**
+   * All (non-service related) auxiliary agreements that refer to this customer agreement.
+   */
+  public List<AuxiliaryAgreement> getAuxiliaryAgreements() {
+
+    return AuxiliaryAgreements;
+  }
+
+  /**
+   * All (non-service related) auxiliary agreements that refer to this customer agreement.
+   */
+  public void setAuxiliaryAgreements(final List<AuxiliaryAgreement> value) {
+
+    this.AuxiliaryAgreements = value;
+  }
+
+  /**
+   * Service category for this agreement.
+   */
+  private ServiceCategory ServiceCategory;
+
+  /**
+   * Service category for this agreement.
+   */
+  public ServiceCategory getServiceCategory() {
+
+    return ServiceCategory;
+  }
+
+  /**
+   * Service category for this agreement.
+   */
+  public void setServiceCategory(final ServiceCategory value) {
+
+    this.ServiceCategory = value;
+  }
+
+  /**
+   * All service delivery points regulated by this customer agreement.
+   */
+  private List<UsagePoint> UsagePoints;
+
+  /**
+   * All service delivery points regulated by this customer agreement.
+   */
+  public List<UsagePoint> getUsagePoints() {
+
+    return UsagePoints;
+  }
+
+  /**
+   * All service delivery points regulated by this customer agreement.
+   */
+  public void setUsagePoints(final List<UsagePoint> value) {
+
+    this.UsagePoints = value;
+  }
+
+  /**
+   * Customer account owning this agreement.
+   */
+  private CustomerAccount CustomerAccount;
+
+  /**
+   * Customer account owning this agreement.
+   */
+  public CustomerAccount getCustomerAccount() {
+
+    return CustomerAccount;
+  }
+
+  /**
+   * Customer account owning this agreement.
+   */
+  public void setCustomerAccount(final CustomerAccount value) {
+
+    this.CustomerAccount = value;
+  }
+
+  /**
+   * Customer for this agreement.
+   */
+  private Customer Customer;
+
+  /**
+   * Customer for this agreement.
+   */
+  public Customer getCustomer() {
+
+    return Customer;
+  }
+
+  /**
+   * Customer for this agreement.
+   */
+  public void setCustomer(final Customer value) {
+
+    this.Customer = value;
+  }
+
+  public CustomerAgreement() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/CustomerKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/CustomerKind.java
new file mode 100644
index 0000000..ff90df9
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/CustomerKind.java
@@ -0,0 +1,74 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of customer.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:43
+ */
+public enum CustomerKind implements ICimEntity {
+  /**
+   * Residential customer.
+   */
+  residential,
+  /**
+   * Residential and commercial customer.
+   */
+  residentialAndCommercial,
+  /**
+   * Residential and streetlight customer.
+   */
+  residentialAndStreetlight,
+  /**
+   * Residential streetlight or other related customer.
+   */
+  residentialStreetlightOthers,
+  /**
+   * Residential farm service customer.
+   */
+  residentialFarmService,
+  /**
+   * Commercial industrial customer.
+   */
+  commercialIndustrial,
+  /**
+   * Pumping load customer.
+   */
+  pumpingLoad,
+  /**
+   * Wind machine customer.
+   */
+  windMachine,
+  /**
+   * Customer as energy service supplier.
+   */
+  energyServiceSupplier,
+  /**
+   * Customer as energy service scheduler.
+   */
+  energyServiceScheduler,
+  /**
+   * Internal use customer.
+   */
+  internalUse,
+  /**
+   * Other kind of customer.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/CustomerNotification.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/CustomerNotification.java
new file mode 100644
index 0000000..e713a3e
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/CustomerNotification.java
@@ -0,0 +1,208 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Operations.*;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Conditions for notifying the customer about the changes in the status of their
+ * service (e.g., outage restore, estimated restoration time, tariff or service
+ * level change, etc.)
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:43
+ */
+@SuppressWarnings("javadoc")
+public class CustomerNotification implements ICimEntity {
+
+  /**
+   * Type of contact (e.g., phone, email, etc.).
+   */
+  private String contactType;
+
+  /**
+   * Type of contact (e.g., phone, email, etc.).
+   */
+  public String getContactType() {
+
+    return contactType;
+  }
+
+  /**
+   * Type of contact (e.g., phone, email, etc.).
+   */
+  public void setContactType(final String value) {
+
+    this.contactType = value;
+  }
+
+  /**
+   * Value of contact type (e.g., phone number, email address, etc.).
+   */
+  private String contactValue;
+
+  /**
+   * Value of contact type (e.g., phone number, email address, etc.).
+   */
+  public String getContactValue() {
+
+    return contactValue;
+  }
+
+  /**
+   * Value of contact type (e.g., phone number, email address, etc.).
+   */
+  public void setContactValue(final String value) {
+
+    this.contactValue = value;
+  }
+
+  /**
+   * Earliest date time to call the customer.
+   */
+  @Cim(originalType = "DateTime")
+  private Date earliestDateTimeToCall;
+
+  /**
+   * Earliest date time to call the customer.
+   */
+  public Date getEarliestDateTimeToCall() {
+
+    return earliestDateTimeToCall;
+  }
+
+  /**
+   * Earliest date time to call the customer.
+   */
+  public void setEarliestDateTimeToCall(final Date value) {
+
+    this.earliestDateTimeToCall = value;
+  }
+
+  /**
+   * Latest date time to call the customer.
+   */
+  @Cim(originalType = "DateTime")
+  private Date latestDateTimeToCall;
+
+  /**
+   * Latest date time to call the customer.
+   */
+  public Date getLatestDateTimeToCall() {
+
+    return latestDateTimeToCall;
+  }
+
+  /**
+   * Latest date time to call the customer.
+   */
+  public void setLatestDateTimeToCall(final Date value) {
+
+    this.latestDateTimeToCall = value;
+  }
+
+  /**
+   * Trigger for this notification.
+   */
+  private NotificationTriggerKind trigger;
+
+  /**
+   * Trigger for this notification.
+   */
+  public NotificationTriggerKind getTrigger() {
+
+    return trigger;
+  }
+
+  /**
+   * Trigger for this notification.
+   */
+  public void setTrigger(final NotificationTriggerKind value) {
+
+    this.trigger = value;
+  }
+
+  /**
+   * Customer requiring this notification.
+   */
+  private Customer Customer;
+
+  /**
+   * Customer requiring this notification.
+   */
+  public Customer getCustomer() {
+
+    return Customer;
+  }
+
+  /**
+   * Customer requiring this notification.
+   */
+  public void setCustomer(final Customer value) {
+
+    this.Customer = value;
+  }
+
+  /**
+   * All trouble tickets with this notification.
+   */
+  private List<TroubleTicket> TroubleTickets;
+
+  /**
+   * All trouble tickets with this notification.
+   */
+  public List<TroubleTicket> getTroubleTickets() {
+
+    return TroubleTickets;
+  }
+
+  /**
+   * All trouble tickets with this notification.
+   */
+  public void setTroubleTickets(final List<TroubleTicket> value) {
+
+    this.TroubleTickets = value;
+  }
+
+  /**
+   * Incident as a subject of this customer notification.
+   */
+  private Incident Incident;
+
+  /**
+   * Incident as a subject of this customer notification.
+   */
+  public Incident getIncident() {
+
+    return Incident;
+  }
+
+  /**
+   * Incident as a subject of this customer notification.
+   */
+  public void setIncident(final Incident value) {
+
+    this.Incident = value;
+  }
+
+  public CustomerNotification() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/IncidentHazard.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/IncidentHazard.java
new file mode 100644
index 0000000..f3998ff
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/IncidentHazard.java
@@ -0,0 +1,76 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Hazard;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Operations.*;
+
+/**
+ * Hazardous situation associated with an incident. Examples are line down, gas
+ * leak, fire, etc.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:10:34
+ */
+@SuppressWarnings("javadoc")
+public class IncidentHazard extends Hazard {
+
+  /**
+   * Incident associated with this hazard.
+   */
+  private Incident Incident;
+
+  /**
+   * Incident associated with this hazard.
+   */
+  public Incident getIncident() {
+
+    return Incident;
+  }
+
+  /**
+   * Incident associated with this hazard.
+   */
+  public void setIncident(final Incident value) {
+
+    this.Incident = value;
+  }
+
+  /**
+   * Trouble ticket associated with this hazard.
+   */
+  private TroubleTicket TroubleTicket;
+
+  /**
+   * Trouble ticket associated with this hazard.
+   */
+  public TroubleTicket getTroubleTicket() {
+
+    return TroubleTicket;
+  }
+
+  /**
+   * Trouble ticket associated with this hazard.
+   */
+  public void setTroubleTicket(final TroubleTicket value) {
+
+    this.TroubleTicket = value;
+  }
+
+  public IncidentHazard() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/NotificationTriggerKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/NotificationTriggerKind.java
new file mode 100644
index 0000000..a79f1d1
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/NotificationTriggerKind.java
@@ -0,0 +1,46 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of trigger to notify customer.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:10:59
+ */
+public enum NotificationTriggerKind implements ICimEntity {
+  /**
+   * Notify customer for the first time that estimated restoration time is available.
+   */
+  initialEtr,
+  /**
+   * Notify customer if estimated restoration time changes.
+   */
+  etrChange,
+  /**
+   * Notify customer when power has been restored.
+   */
+  powerRestored,
+  /**
+   * Notify customer of planned outage.
+   */
+  powerOut,
+  /**
+   * Notify customer that a crew has been dispatched to investigate the problem.
+   */
+  informDispatched
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/PricingStructure.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/PricingStructure.java
new file mode 100644
index 0000000..0fc2c95
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/PricingStructure.java
@@ -0,0 +1,249 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Document;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.PaymentMetering.Transaction;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Grouping of pricing components and prices used in the creation of customer
+ * charges and the eligibility criteria under which these terms may be offered to
+ * a customer. The reasons for grouping include state, customer classification,
+ * site characteristics, classification (i.e. fee price structure, deposit price
+ * structure, electric service price structure, etc.) and accounting requirements.
+ * 
+ * @created 10-Aug-2017 18:11:15
+ */
+@SuppressWarnings("javadoc")
+public class PricingStructure extends Document {
+
+  /**
+   * Unique user-allocated key for this pricing structure, used by company
+   * representatives to identify the correct price structure for allocating to a
+   * customer. For rate schedules it is often prefixed by a state code.
+   */
+  private String code;
+
+  /**
+   * Unique user-allocated key for this pricing structure, used by company
+   * representatives to identify the correct price structure for allocating to a
+   * customer. For rate schedules it is often prefixed by a state code.
+   */
+  public String getCode() {
+
+    return code;
+  }
+
+  /**
+   * Unique user-allocated key for this pricing structure, used by company
+   * representatives to identify the correct price structure for allocating to a
+   * customer. For rate schedules it is often prefixed by a state code.
+   */
+  public void setCode(final String value) {
+
+    this.code = value;
+  }
+
+  /**
+   * Absolute maximum valid non-demand usage quantity used in validating a
+   * customer's billed non-demand usage.
+   */
+  private Integer dailyCeilingUsage;
+
+  /**
+   * Absolute maximum valid non-demand usage quantity used in validating a
+   * customer's billed non-demand usage.
+   */
+  public Integer getDailyCeilingUsage() {
+
+    return dailyCeilingUsage;
+  }
+
+  /**
+   * Absolute maximum valid non-demand usage quantity used in validating a
+   * customer's billed non-demand usage.
+   */
+  public void setDailyCeilingUsage(final Integer value) {
+
+    this.dailyCeilingUsage = value;
+  }
+
+  /**
+   * Used in place of actual computed estimated average when history of usage is not
+   * available, and typically manually entered by customer accounting.
+   */
+  private Integer dailyEstimatedUsage;
+
+  /**
+   * Used in place of actual computed estimated average when history of usage is not
+   * available, and typically manually entered by customer accounting.
+   */
+  public Integer getDailyEstimatedUsage() {
+
+    return dailyEstimatedUsage;
+  }
+
+  /**
+   * Used in place of actual computed estimated average when history of usage is not
+   * available, and typically manually entered by customer accounting.
+   */
+  public void setDailyEstimatedUsage(final Integer value) {
+
+    this.dailyEstimatedUsage = value;
+  }
+
+  /**
+   * Absolute minimum valid non-demand usage quantity used in validating a
+   * customer's billed non-demand usage.
+   */
+  private Integer dailyFloorUsage;
+
+  /**
+   * Absolute minimum valid non-demand usage quantity used in validating a
+   * customer's billed non-demand usage.
+   */
+  public Integer getDailyFloorUsage() {
+
+    return dailyFloorUsage;
+  }
+
+  /**
+   * Absolute minimum valid non-demand usage quantity used in validating a
+   * customer's billed non-demand usage.
+   */
+  public void setDailyFloorUsage(final Integer value) {
+
+    this.dailyFloorUsage = value;
+  }
+
+  /**
+   * (accounting) Kind of revenue, often used to determine the grace period allowed,
+   * before collection actions are taken on a customer (grace periods vary between
+   * revenue classes).
+   */
+  private RevenueKind revenueKind;
+
+  /**
+   * (accounting) Kind of revenue, often used to determine the grace period allowed,
+   * before collection actions are taken on a customer (grace periods vary between
+   * revenue classes).
+   */
+  public RevenueKind getRevenueKind() {
+
+    return revenueKind;
+  }
+
+  /**
+   * (accounting) Kind of revenue, often used to determine the grace period allowed,
+   * before collection actions are taken on a customer (grace periods vary between
+   * revenue classes).
+   */
+  public void setRevenueKind(final RevenueKind value) {
+
+    this.revenueKind = value;
+  }
+
+  /**
+   * True if this pricing structure is not taxable.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean taxExemption;
+
+  /**
+   * True if this pricing structure is not taxable.
+   */
+  public Boolean isTaxExemption() {
+
+    return taxExemption;
+  }
+
+  /**
+   * True if this pricing structure is not taxable.
+   */
+  public void setTaxExemption(final Boolean value) {
+
+    this.taxExemption = value;
+  }
+
+  /**
+   * Service category to which this pricing structure applies.
+   */
+  private ServiceCategory ServiceCategory;
+
+  /**
+   * Service category to which this pricing structure applies.
+   */
+  public ServiceCategory getServiceCategory() {
+
+    return ServiceCategory;
+  }
+
+  /**
+   * Service category to which this pricing structure applies.
+   */
+  public void setServiceCategory(final ServiceCategory value) {
+
+    this.ServiceCategory = value;
+  }
+
+  /**
+   * All transactions applying this pricing structure.
+   */
+  private List<Transaction> Transactions;
+
+  /**
+   * All transactions applying this pricing structure.
+   */
+  public List<Transaction> getTransactions() {
+
+    return Transactions;
+  }
+
+  /**
+   * All transactions applying this pricing structure.
+   */
+  public void setTransactions(final List<Transaction> value) {
+
+    this.Transactions = value;
+  }
+
+  /**
+   * All customer agreements with this pricing structure.
+   */
+  private List<CustomerAgreement> CustomerAgreements;
+
+  /**
+   * All customer agreements with this pricing structure.
+   */
+  public List<CustomerAgreement> getCustomerAgreements() {
+
+    return CustomerAgreements;
+  }
+
+  /**
+   * All customer agreements with this pricing structure.
+   */
+  public void setCustomerAgreements(final List<CustomerAgreement> value) {
+
+    this.CustomerAgreements = value;
+  }
+
+  public PricingStructure() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/RevenueKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/RevenueKind.java
new file mode 100644
index 0000000..c214b0d
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/RevenueKind.java
@@ -0,0 +1,55 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Accounting classification of the type of revenue collected for the customer
+ * agreement, typically used to break down accounts for revenue accounting.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:32
+ */
+public enum RevenueKind implements ICimEntity {
+  /**
+   * Residential revenue.
+   */
+  residential,
+  /**
+   * Non-residential revenue.
+   */
+  nonResidential,
+  /**
+   * Commercial revenue.
+   */
+  commercial,
+  /**
+   * Industrial revenue.
+   */
+  industrial,
+  /**
+   * Irrigation revenue.
+   */
+  irrigation,
+  /**
+   * Streetlight revenue.
+   */
+  streetLight,
+  /**
+   * Other revenue kind.
+   */
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/ServiceCategory.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/ServiceCategory.java
new file mode 100644
index 0000000..037108e
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/ServiceCategory.java
@@ -0,0 +1,139 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.ConfigurationEvent;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Metering.*;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+
+/**
+ * Category of service provided to the customer.
+ * 
+ * @created 10-Aug-2017 18:11:38
+ */
+@SuppressWarnings("javadoc")
+public class ServiceCategory extends IdentifiedObject {
+
+  /**
+   * Kind of service.
+   */
+  private ServiceKind kind;
+
+  /**
+   * Kind of service.
+   */
+  public ServiceKind getKind() {
+
+    return kind;
+  }
+
+  /**
+   * Kind of service.
+   */
+  public void setKind(final ServiceKind value) {
+
+    this.kind = value;
+  }
+
+  /**
+   * All usage points that deliver this category of service.
+   */
+  private List<UsagePoint> UsagePoints;
+
+  /**
+   * All usage points that deliver this category of service.
+   */
+  public List<UsagePoint> getUsagePoints() {
+
+    return UsagePoints;
+  }
+
+  /**
+   * All usage points that deliver this category of service.
+   */
+  public void setUsagePoints(final List<UsagePoint> value) {
+
+    this.UsagePoints = value;
+  }
+
+  /**
+   * All pricing structures applicable to this service category.
+   */
+  private List<PricingStructure> PricingStructures;
+
+  /**
+   * All pricing structures applicable to this service category.
+   */
+  public List<PricingStructure> getPricingStructures() {
+
+    return PricingStructures;
+  }
+
+  /**
+   * All pricing structures applicable to this service category.
+   */
+  public void setPricingStructures(final List<PricingStructure> value) {
+
+    this.PricingStructures = value;
+  }
+
+  /**
+   * All customer agreements with this service category.
+   */
+  private List<CustomerAgreement> CustomerAgreements;
+
+  /**
+   * All customer agreements with this service category.
+   */
+  public List<CustomerAgreement> getCustomerAgreements() {
+
+    return CustomerAgreements;
+  }
+
+  /**
+   * All customer agreements with this service category.
+   */
+  public void setCustomerAgreements(final List<CustomerAgreement> value) {
+
+    this.CustomerAgreements = value;
+  }
+
+  /**
+   * All configuration events created for this service category.
+   */
+  private List<ConfigurationEvent> ConfigurationEvents;
+
+  /**
+   * All configuration events created for this service category.
+   */
+  public List<ConfigurationEvent> getConfigurationEvents() {
+
+    return ConfigurationEvents;
+  }
+
+  /**
+   * All configuration events created for this service category.
+   */
+  public void setConfigurationEvents(final List<ConfigurationEvent> value) {
+
+    this.ConfigurationEvents = value;
+  }
+
+  public ServiceCategory() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/ServiceKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/ServiceKind.java
new file mode 100644
index 0000000..837d248
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/ServiceKind.java
@@ -0,0 +1,90 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of service.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:38
+ */
+public enum ServiceKind implements ICimEntity {
+  /**
+   * Electricity service.
+   */
+  electricity,
+  /**
+   * Gas service.
+   */
+  gas,
+  /**
+   * Water service.
+   */
+  water,
+  /**
+   * Time service.
+   */
+  time,
+  /**
+   * Heat service.
+   */
+  heat,
+  /**
+   * Refuse (waster) service.
+   */
+  refuse,
+  /**
+   * Sewerage service.
+   */
+  sewerage,
+  /**
+   * Rates (e.g. tax, charge, toll, duty, tariff, etc.) service.
+   */
+  rates,
+  /**
+   * TV license service.
+   */
+  tvLicence,
+  /**
+   * Internet service.
+   */
+  internet,
+  /**
+   * Other kind of service.
+   */
+  other,
+  /**
+   * Air service.
+   */
+  air,
+  /**
+   * Natural gas service.
+   */
+  naturalGas,
+  /**
+   * Propane service.
+   */
+  propane,
+  /**
+   * Steam service.
+   */
+  steam,
+  /**
+   * Heating fluid service.
+   */
+  heatingFluid
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/ServiceLocation.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/ServiceLocation.java
new file mode 100644
index 0000000..fddc48f
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/ServiceLocation.java
@@ -0,0 +1,177 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Metering.EndDevice;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Metering.UsagePoint;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Work.WorkLocation;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * A real estate location, commonly referred to as premises.
+ * 
+ * @created 10-Aug-2017 18:11:38
+ */
+@SuppressWarnings("javadoc")
+public class ServiceLocation extends WorkLocation {
+
+  /**
+   * Method for the service person to access this service location. For example, a
+   * description of where to obtain a key if the facility is unmanned and secured.
+   */
+  private String accessMethod;
+
+  /**
+   * Method for the service person to access this service location. For example, a
+   * description of where to obtain a key if the facility is unmanned and secured.
+   */
+  public String getAccessMethod() {
+
+    return accessMethod;
+  }
+
+  /**
+   * Method for the service person to access this service location. For example, a
+   * description of where to obtain a key if the facility is unmanned and secured.
+   */
+  public void setAccessMethod(final String value) {
+
+    this.accessMethod = value;
+  }
+
+  /**
+   * True if inspection is needed of facilities at this service location. This could
+   * be requested by a customer, due to suspected tampering, environmental concerns
+   * (e.g., a fire in the vicinity), or to correct incompatible data.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean needsInspection;
+
+  /**
+   * True if inspection is needed of facilities at this service location. This could
+   * be requested by a customer, due to suspected tampering, environmental concerns
+   * (e.g., a fire in the vicinity), or to correct incompatible data.
+   */
+  public Boolean isNeedsInspection() {
+
+    return needsInspection;
+  }
+
+  /**
+   * True if inspection is needed of facilities at this service location. This could
+   * be requested by a customer, due to suspected tampering, environmental concerns
+   * (e.g., a fire in the vicinity), or to correct incompatible data.
+   */
+  public void setNeedsInspection(final Boolean value) {
+
+    this.needsInspection = value;
+  }
+
+  /**
+   * Problems previously encountered when visiting or performing work on this
+   * location. Examples include: bad dog, violent customer, verbally abusive
+   * occupant, obstructions, safety hazards, etc.
+   */
+  private String siteAccessProblem;
+
+  /**
+   * Problems previously encountered when visiting or performing work on this
+   * location. Examples include: bad dog, violent customer, verbally abusive
+   * occupant, obstructions, safety hazards, etc.
+   */
+  public String getSiteAccessProblem() {
+
+    return siteAccessProblem;
+  }
+
+  /**
+   * Problems previously encountered when visiting or performing work on this
+   * location. Examples include: bad dog, violent customer, verbally abusive
+   * occupant, obstructions, safety hazards, etc.
+   */
+  public void setSiteAccessProblem(final String value) {
+
+    this.siteAccessProblem = value;
+  }
+
+  /**
+   * All end devices that measure the service delivered to this service location.
+   */
+  private List<EndDevice> EndDevices;
+
+  /**
+   * All end devices that measure the service delivered to this service location.
+   */
+  public List<EndDevice> getEndDevices() {
+
+    return EndDevices;
+  }
+
+  /**
+   * All end devices that measure the service delivered to this service location.
+   */
+  public void setEndDevices(final List<EndDevice> value) {
+
+    this.EndDevices = value;
+  }
+
+  /**
+   * All usage points delivering service (of the same type) to this service location.
+   */
+  private List<UsagePoint> UsagePoints;
+
+  /**
+   * All usage points delivering service (of the same type) to this service location.
+   */
+  public List<UsagePoint> getUsagePoints() {
+
+    return UsagePoints;
+  }
+
+  /**
+   * All usage points delivering service (of the same type) to this service location.
+   */
+  public void setUsagePoints(final List<UsagePoint> value) {
+
+    this.UsagePoints = value;
+  }
+
+  /**
+   * All customer agreements regulating this service location.
+   */
+  private List<CustomerAgreement> CustomerAgreements;
+
+  /**
+   * All customer agreements regulating this service location.
+   */
+  public List<CustomerAgreement> getCustomerAgreements() {
+
+    return CustomerAgreements;
+  }
+
+  /**
+   * All customer agreements regulating this service location.
+   */
+  public void setCustomerAgreements(final List<CustomerAgreement> value) {
+
+    this.CustomerAgreements = value;
+  }
+
+  public ServiceLocation() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/Tariff.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/Tariff.java
new file mode 100644
index 0000000..e09d5cd
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/Tariff.java
@@ -0,0 +1,100 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Document;
+
+/**
+ * Document, approved by the responsible regulatory agency, listing the terms and
+ * conditions, including a schedule of prices, under which utility services will
+ * be provided. It has a unique number within the state or province. For rate
+ * schedules it is frequently allocated by the affiliated Public utilities
+ * commission (PUC).
+ * 
+ * @created 10-Aug-2017 18:11:51
+ */
+@SuppressWarnings("javadoc")
+public class Tariff extends Document {
+
+  /**
+   * (if tariff became inactive) Date tariff was terminated.
+   */
+  private Date endDate;
+
+  /**
+   * (if tariff became inactive) Date tariff was terminated.
+   */
+  public Date getEndDate() {
+
+    return endDate;
+  }
+
+  /**
+   * (if tariff became inactive) Date tariff was terminated.
+   */
+  public void setEndDate(final Date value) {
+
+    this.endDate = value;
+  }
+
+  /**
+   * Date tariff was activated.
+   */
+  private Date startDate;
+
+  /**
+   * Date tariff was activated.
+   */
+  public Date getStartDate() {
+
+    return startDate;
+  }
+
+  /**
+   * Date tariff was activated.
+   */
+  public void setStartDate(final Date value) {
+
+    this.startDate = value;
+  }
+
+  /**
+   * All pricing structures using this tariff.
+   */
+  private List<PricingStructure> PricingStructures;
+
+  /**
+   * All pricing structures using this tariff.
+   */
+  public List<PricingStructure> getPricingStructures() {
+
+    return PricingStructures;
+  }
+
+  /**
+   * All pricing structures using this tariff.
+   */
+  public void setPricingStructures(final List<PricingStructure> value) {
+
+    this.PricingStructures = value;
+  }
+
+  public Tariff() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/TroubleReportingKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/TroubleReportingKind.java
new file mode 100644
index 0000000..146c64c
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/TroubleReportingKind.java
@@ -0,0 +1,46 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of trouble reporting.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:12:00
+ */
+public enum TroubleReportingKind implements ICimEntity {
+  /**
+   * Trouble call received by customer service representative.
+   */
+  call,
+  /**
+   * Trouble reported by email.
+   */
+  email,
+  /**
+   * Trouble reported by letter.
+   */
+  letter,
+  /**
+   * Trouble reported by other means.
+   */
+  other,
+  /**
+   * Trouble reported through interactive voice response system.
+   */
+  ivr
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/TroubleTicket.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/TroubleTicket.java
new file mode 100644
index 0000000..894b2cd
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/Customers/TroubleTicket.java
@@ -0,0 +1,226 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Customers;
+
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Document;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Operations.Incident;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:12:00
+ */
+@SuppressWarnings("javadoc")
+public class TroubleTicket extends Document {
+
+  /**
+   * Date and time the trouble has been reported.
+   */
+  @Cim(originalType = "DateTime")
+  private Date dateTimeOfReport;
+
+  /**
+   * Date and time the trouble has been reported.
+   */
+  public Date getDateTimeOfReport() {
+
+    return dateTimeOfReport;
+  }
+
+  /**
+   * Date and time the trouble has been reported.
+   */
+  public void setDateTimeOfReport(final Date value) {
+
+    this.dateTimeOfReport = value;
+  }
+
+  /**
+   * A first responder on site such as police, fire department etc.
+   */
+  private String firstResponder;
+
+  /**
+   * A first responder on site such as police, fire department etc.
+   */
+  public String getFirstResponder() {
+
+    return firstResponder;
+  }
+
+  /**
+   * A first responder on site such as police, fire department etc.
+   */
+  public void setFirstResponder(final String value) {
+
+    this.firstResponder = value;
+  }
+
+  /**
+   * Indicates how the customer reported trouble.
+   */
+  private TroubleReportingKind reportingKind;
+
+  /**
+   * Indicates how the customer reported trouble.
+   */
+  public TroubleReportingKind getReportingKind() {
+
+    return reportingKind;
+  }
+
+  /**
+   * Indicates how the customer reported trouble.
+   */
+  public void setReportingKind(final TroubleReportingKind value) {
+
+    this.reportingKind = value;
+  }
+
+  /**
+   * Date and time this trouble ticket has been resolved.
+   */
+  @Cim(originalType = "DateTime")
+  private Date resolvedDateTime;
+
+  /**
+   * Date and time this trouble ticket has been resolved.
+   */
+  public Date getResolvedDateTime() {
+
+    return resolvedDateTime;
+  }
+
+  /**
+   * Date and time this trouble ticket has been resolved.
+   */
+  public void setResolvedDateTime(final Date value) {
+
+    this.resolvedDateTime = value;
+  }
+
+  /**
+   * Trouble code (e.g., power down, flickering lights, partial power, etc).
+   */
+  private String troubleCode;
+
+  /**
+   * Trouble code (e.g., power down, flickering lights, partial power, etc).
+   */
+  public String getTroubleCode() {
+
+    return troubleCode;
+  }
+
+  /**
+   * Trouble code (e.g., power down, flickering lights, partial power, etc).
+   */
+  public void setTroubleCode(final String value) {
+
+    this.troubleCode = value;
+  }
+
+  /**
+   * Incident reported in this trouble ticket
+   */
+  private Incident Incident;
+
+  /**
+   * Incident reported in this trouble ticket
+   */
+  public Incident getIncident() {
+
+    return Incident;
+  }
+
+  /**
+   * Incident reported in this trouble ticket
+   */
+  public void setIncident(final Incident value) {
+
+    this.Incident = value;
+  }
+
+  /**
+   * Customer for whom this trouble ticket is relevant.
+   */
+  private Customer Customer;
+
+  /**
+   * Customer for whom this trouble ticket is relevant.
+   */
+  public Customer getCustomer() {
+
+    return Customer;
+  }
+
+  /**
+   * Customer for whom this trouble ticket is relevant.
+   */
+  public void setCustomer(final Customer value) {
+
+    this.Customer = value;
+  }
+
+  /**
+   * All hazards reported with this trouble ticket.
+   */
+  private List<IncidentHazard> Hazards;
+
+  /**
+   * All hazards reported with this trouble ticket.
+   */
+  public List<IncidentHazard> getHazards() {
+
+    return Hazards;
+  }
+
+  /**
+   * All hazards reported with this trouble ticket.
+   */
+  public void setHazards(final List<IncidentHazard> value) {
+
+    this.Hazards = value;
+  }
+
+  /**
+   * Notification for this trouble ticket.
+   */
+  private CustomerNotification Notification;
+
+  /**
+   * Notification for this trouble ticket.
+   */
+  public CustomerNotification getNotification() {
+
+    return Notification;
+  }
+
+  /**
+   * Notification for this trouble ticket.
+   */
+  public void setNotification(final CustomerNotification value) {
+
+    this.Notification = value;
+  }
+
+  public TroubleTicket() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/IEC61968CIMVersion.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/IEC61968CIMVersion.java
new file mode 100644
index 0000000..5211d15
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/IEC61968CIMVersion.java
@@ -0,0 +1,77 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968;
+
+import java.util.Date;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * IEC 61968 version number assigned to this UML model.
+ * 
+ * @created 10-Aug-2017 18:10:33
+ */
+@SuppressWarnings("javadoc")
+public class IEC61968CIMVersion implements ICimEntity {
+
+  /**
+   * Form is YYYY-MM-DD for example for January 5, 2009 it is 2009-01-05.
+   */
+  private Date date;
+
+  /**
+   * Form is YYYY-MM-DD for example for January 5, 2009 it is 2009-01-05.
+   */
+  public Date getDate() {
+
+    return date;
+  }
+
+  /**
+   * Form is YYYY-MM-DD for example for January 5, 2009 it is 2009-01-05.
+   */
+  public void setDate(final Date value) {
+
+    this.date = value;
+  }
+
+  /**
+   * Form is IEC61968CIMXXvYY where XX is the major CIM package version and the YY
+   * is the minor version. For example IEC61968CIM10v17.
+   */
+  private String version;
+
+  /**
+   * Form is IEC61968CIMXXvYY where XX is the major CIM package version and the YY
+   * is the minor version. For example IEC61968CIM10v17.
+   */
+  public String getVersion() {
+
+    return version;
+  }
+
+  /**
+   * Form is IEC61968CIMXXvYY where XX is the major CIM package version and the YY
+   * is the minor version. For example IEC61968CIM10v17.
+   */
+  public void setVersion(final String value) {
+
+    this.version = value;
+  }
+
+  public IEC61968CIMVersion() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/AssetModelCatalogue.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/AssetModelCatalogue.java
new file mode 100644
index 0000000..6b61157
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/AssetModelCatalogue.java
@@ -0,0 +1,68 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Status;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.IdentifiedObject;
+
+/**
+ * Catalogue of available types of products and materials that are used to build
+ * or install, maintain or operate an Asset. Each catalogue item is for a specific
+ * product (AssetModel) available from a specific supplier.
+ * 
+ * @created 10-Aug-2017 18:09:18
+ */
+@SuppressWarnings("javadoc")
+public class AssetModelCatalogue extends IdentifiedObject {
+
+  private Status status;
+
+  public Status getStatus() {
+
+    return status;
+  }
+
+  public void setStatus(final Status value) {
+
+    this.status = value;
+  }
+
+  /**
+  * 
+  */
+  private List<AssetModelCatalogueItem> AssetModelCatalogueItems;
+
+  /**
+  * 
+  */
+  public List<AssetModelCatalogueItem> getAssetModelCatalogueItems() {
+
+    return AssetModelCatalogueItems;
+  }
+
+  /**
+  * 
+  */
+  public void setAssetModelCatalogueItems(final List<AssetModelCatalogueItem> value) {
+
+    this.AssetModelCatalogueItems = value;
+  }
+
+  public AssetModelCatalogue() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/AssetModelCatalogueItem.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/AssetModelCatalogueItem.java
new file mode 100644
index 0000000..276c232
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/AssetModelCatalogueItem.java
@@ -0,0 +1,151 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.*;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Common.Document;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfERPSupport.ErpPOLineItem;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfERPSupport.ErpQuoteLineItem;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Money;
+
+/**
+ * Provides pricing and other relevant information about a specific manufacturer's
+ * product (i.e., AssetModel), and its price from a given supplier. A single
+ * AssetModel may be availble from multiple suppliers. Note that manufacturer and
+ * supplier are both types of organisation, which the association is inherited
+ * from Document.
+ * 
+ * @created 10-Aug-2017 18:09:18
+ */
+@SuppressWarnings("javadoc")
+public class AssetModelCatalogueItem extends Document {
+
+  /**
+   * Unit cost for an asset model from a specific supplier, either for a unit cost
+   * or cost per unit length. Cost is for material or asset only and does not
+   * include labor to install/construct or configure it.
+   */
+  private Money unitCost;
+
+  /**
+   * Unit cost for an asset model from a specific supplier, either for a unit cost
+   * or cost per unit length. Cost is for material or asset only and does not
+   * include labor to install/construct or configure it.
+   */
+  public Money getUnitCost() {
+
+    return unitCost;
+  }
+
+  /**
+   * Unit cost for an asset model from a specific supplier, either for a unit cost
+   * or cost per unit length. Cost is for material or asset only and does not
+   * include labor to install/construct or configure it.
+   */
+  public void setUnitCost(final Money value) {
+
+    this.unitCost = value;
+  }
+
+  /**
+  * 
+  */
+  private List<ErpQuoteLineItem> ErpQuoteLineItems;
+
+  /**
+  * 
+  */
+  public List<ErpQuoteLineItem> getErpQuoteLineItems() {
+
+    return ErpQuoteLineItems;
+  }
+
+  /**
+  * 
+  */
+  public void setErpQuoteLineItems(final List<ErpQuoteLineItem> value) {
+
+    this.ErpQuoteLineItems = value;
+  }
+
+  /**
+  * 
+  */
+  private List<ErpPOLineItem> ErpPOLineItems;
+
+  /**
+  * 
+  */
+  public List<ErpPOLineItem> getErpPOLineItems() {
+
+    return ErpPOLineItems;
+  }
+
+  /**
+  * 
+  */
+  public void setErpPOLineItems(final List<ErpPOLineItem> value) {
+
+    this.ErpPOLineItems = value;
+  }
+
+  /**
+  * 
+  */
+  private AssetModelCatalogue AssetModelCatalogue;
+
+  /**
+  * 
+  */
+  public AssetModelCatalogue getAssetModelCatalogue() {
+
+    return AssetModelCatalogue;
+  }
+
+  /**
+  * 
+  */
+  public void setAssetModelCatalogue(final AssetModelCatalogue value) {
+
+    this.AssetModelCatalogue = value;
+  }
+
+  /**
+  * 
+  */
+  private ProductAssetModel AssetModel;
+
+  /**
+  * 
+  */
+  public ProductAssetModel getAssetModel() {
+
+    return AssetModel;
+  }
+
+  /**
+  * 
+  */
+  public void setAssetModel(final ProductAssetModel value) {
+
+    this.AssetModel = value;
+  }
+
+  public AssetModelCatalogueItem() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/BreakerInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/BreakerInfo.java
new file mode 100644
index 0000000..b80fe14
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/BreakerInfo.java
@@ -0,0 +1,51 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+
+/**
+ * Properties of breaker assets.
+ * 
+ * @created 10-Aug-2017 18:09:25
+ */
+@SuppressWarnings("javadoc")
+public class BreakerInfo extends OldSwitchInfo {
+
+  /**
+   * Phase trip rating.
+   */
+  private CurrentFlow phaseTrip;
+
+  /**
+   * Phase trip rating.
+   */
+  public CurrentFlow getPhaseTrip() {
+
+    return phaseTrip;
+  }
+
+  /**
+   * Phase trip rating.
+   */
+  public void setPhaseTrip(final CurrentFlow value) {
+
+    this.phaseTrip = value;
+  }
+
+  public BreakerInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/CompositeSwitchInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/CompositeSwitchInfo.java
new file mode 100644
index 0000000..a37e976
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/CompositeSwitchInfo.java
@@ -0,0 +1,228 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.PhaseCode;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Properties of a composite switch.
+ * 
+ * @created 10-Aug-2017 18:09:31
+ */
+@SuppressWarnings("javadoc")
+public class CompositeSwitchInfo extends AssetInfo {
+
+  /**
+   * True if multi-phase switch controls all phases concurrently.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean ganged;
+
+  /**
+   * True if multi-phase switch controls all phases concurrently.
+   */
+  public Boolean isGanged() {
+
+    return ganged;
+  }
+
+  /**
+   * True if multi-phase switch controls all phases concurrently.
+   */
+  public void setGanged(final Boolean value) {
+
+    this.ganged = value;
+  }
+
+  /**
+   * Initial operating mode, with the following values: Automatic, Manual.
+   */
+  private String initOpMode;
+
+  /**
+   * Initial operating mode, with the following values: Automatic, Manual.
+   */
+  public String getInitOpMode() {
+
+    return initOpMode;
+  }
+
+  /**
+   * Initial operating mode, with the following values: Automatic, Manual.
+   */
+  public void setInitOpMode(final String value) {
+
+    this.initOpMode = value;
+  }
+
+  /**
+   * Breaking capacity, or short circuit rating, is the maximum rated current which
+   * the device can safely interrupt at the rated voltage.
+   */
+  private CurrentFlow interruptingRating;
+
+  /**
+   * Breaking capacity, or short circuit rating, is the maximum rated current which
+   * the device can safely interrupt at the rated voltage.
+   */
+  public CurrentFlow getInterruptingRating() {
+
+    return interruptingRating;
+  }
+
+  /**
+   * Breaking capacity, or short circuit rating, is the maximum rated current which
+   * the device can safely interrupt at the rated voltage.
+   */
+  public void setInterruptingRating(final CurrentFlow value) {
+
+    this.interruptingRating = value;
+  }
+
+  /**
+   * Kind of composite switch.
+   */
+  private CompositeSwitchKind kind;
+
+  /**
+   * Kind of composite switch.
+   */
+  public CompositeSwitchKind getKind() {
+
+    return kind;
+  }
+
+  /**
+   * Kind of composite switch.
+   */
+  public void setKind(final CompositeSwitchKind value) {
+
+    this.kind = value;
+  }
+
+  /**
+   * Phases carried, if applicable.
+   */
+  private PhaseCode phaseCode;
+
+  /**
+   * Phases carried, if applicable.
+   */
+  public PhaseCode getPhaseCode() {
+
+    return phaseCode;
+  }
+
+  /**
+   * Phases carried, if applicable.
+   */
+  public void setPhaseCode(final PhaseCode value) {
+
+    this.phaseCode = value;
+  }
+
+  /**
+   * Supported number of phases, typically 0, 1 or 3.
+   */
+  private Integer phaseCount;
+
+  /**
+   * Supported number of phases, typically 0, 1 or 3.
+   */
+  public Integer getPhaseCount() {
+
+    return phaseCount;
+  }
+
+  /**
+   * Supported number of phases, typically 0, 1 or 3.
+   */
+  public void setPhaseCount(final Integer value) {
+
+    this.phaseCount = value;
+  }
+
+  /**
+   * Rated voltage.
+   */
+  private Voltage ratedVoltage;
+
+  /**
+   * Rated voltage.
+   */
+  public Voltage getRatedVoltage() {
+
+    return ratedVoltage;
+  }
+
+  /**
+   * Rated voltage.
+   */
+  public void setRatedVoltage(final Voltage value) {
+
+    this.ratedVoltage = value;
+  }
+
+  /**
+   * True if device is capable of being operated by remote control.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean remote;
+
+  /**
+   * True if device is capable of being operated by remote control.
+   */
+  public Boolean isRemote() {
+
+    return remote;
+  }
+
+  /**
+   * True if device is capable of being operated by remote control.
+   */
+  public void setRemote(final Boolean value) {
+
+    this.remote = value;
+  }
+
+  /**
+   * Number of switch states represented by the composite switch.
+   */
+  private Integer switchStateCount;
+
+  /**
+   * Number of switch states represented by the composite switch.
+   */
+  public Integer getSwitchStateCount() {
+
+    return switchStateCount;
+  }
+
+  /**
+   * Number of switch states represented by the composite switch.
+   */
+  public void setSwitchStateCount(final Integer value) {
+
+    this.switchStateCount = value;
+  }
+
+  public CompositeSwitchInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/CompositeSwitchKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/CompositeSwitchKind.java
new file mode 100644
index 0000000..85cda21
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/CompositeSwitchKind.java
@@ -0,0 +1,33 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of composite switch.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:09:31
+ */
+public enum CompositeSwitchKind implements ICimEntity {
+  throwOver,
+  escoThrowOver,
+  ral,
+  gral,
+  regulatorBypass,
+  ugMultiSwitch,
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/CurrentTransformerInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/CurrentTransformerInfo.java
new file mode 100644
index 0000000..abc276f
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/CurrentTransformerInfo.java
@@ -0,0 +1,363 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfCommon.Ratio;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+
+/**
+ * Properties of current transformer asset.
+ * 
+ * @created 10-Aug-2017 18:09:40
+ */
+@SuppressWarnings("javadoc")
+public class CurrentTransformerInfo extends AssetInfo {
+
+  /**
+   * CT accuracy classification.
+   */
+  private String accuracyClass;
+
+  /**
+   * CT accuracy classification.
+   */
+  public String getAccuracyClass() {
+
+    return accuracyClass;
+  }
+
+  /**
+   * CT accuracy classification.
+   */
+  public void setAccuracyClass(final String value) {
+
+    this.accuracyClass = value;
+  }
+
+  /**
+   * Accuracy limit.
+   */
+  private CurrentFlow accuracyLimit;
+
+  /**
+   * Accuracy limit.
+   */
+  public CurrentFlow getAccuracyLimit() {
+
+    return accuracyLimit;
+  }
+
+  /**
+   * Accuracy limit.
+   */
+  public void setAccuracyLimit(final CurrentFlow value) {
+
+    this.accuracyLimit = value;
+  }
+
+  /**
+   * Number of cores.
+   */
+  private Integer coreCount;
+
+  /**
+   * Number of cores.
+   */
+  public Integer getCoreCount() {
+
+    return coreCount;
+  }
+
+  /**
+   * Number of cores.
+   */
+  public void setCoreCount(final Integer value) {
+
+    this.coreCount = value;
+  }
+
+  private String ctClass;
+
+  public String getCtClass() {
+
+    return ctClass;
+  }
+
+  public void setCtClass(final String value) {
+
+    this.ctClass = value;
+  }
+
+  /**
+   * Maximum primary current where the CT still displays linear characteristicts.
+   */
+  private CurrentFlow kneePointCurrent;
+
+  /**
+   * Maximum primary current where the CT still displays linear characteristicts.
+   */
+  public CurrentFlow getKneePointCurrent() {
+
+    return kneePointCurrent;
+  }
+
+  /**
+   * Maximum primary current where the CT still displays linear characteristicts.
+   */
+  public void setKneePointCurrent(final CurrentFlow value) {
+
+    this.kneePointCurrent = value;
+  }
+
+  /**
+   * Maximum voltage across the secondary terminals where the CT still displays
+   * linear characteristicts.
+   */
+  private Voltage kneePointVoltage;
+
+  /**
+   * Maximum voltage across the secondary terminals where the CT still displays
+   * linear characteristicts.
+   */
+  public Voltage getKneePointVoltage() {
+
+    return kneePointVoltage;
+  }
+
+  /**
+   * Maximum voltage across the secondary terminals where the CT still displays
+   * linear characteristicts.
+   */
+  public void setKneePointVoltage(final Voltage value) {
+
+    this.kneePointVoltage = value;
+  }
+
+  /**
+   * Maximum ratio between the primary and secondary current.
+   */
+  private Ratio maxRatio;
+
+  /**
+   * Maximum ratio between the primary and secondary current.
+   */
+  public Ratio getMaxRatio() {
+
+    return maxRatio;
+  }
+
+  /**
+   * Maximum ratio between the primary and secondary current.
+   */
+  public void setMaxRatio(final Ratio value) {
+
+    this.maxRatio = value;
+  }
+
+  /**
+   * Nominal ratio between the primary and secondary current; i.e. 100:5.
+   */
+  private Ratio nominalRatio;
+
+  /**
+   * Nominal ratio between the primary and secondary current; i.e. 100:5.
+   */
+  public Ratio getNominalRatio() {
+
+    return nominalRatio;
+  }
+
+  /**
+   * Nominal ratio between the primary and secondary current; i.e. 100:5.
+   */
+  public void setNominalRatio(final Ratio value) {
+
+    this.nominalRatio = value;
+  }
+
+  /**
+   * Full load secondary (FLS) rating for primary winding.
+   */
+  private CurrentFlow primaryFlsRating;
+
+  /**
+   * Full load secondary (FLS) rating for primary winding.
+   */
+  public CurrentFlow getPrimaryFlsRating() {
+
+    return primaryFlsRating;
+  }
+
+  /**
+   * Full load secondary (FLS) rating for primary winding.
+   */
+  public void setPrimaryFlsRating(final CurrentFlow value) {
+
+    this.primaryFlsRating = value;
+  }
+
+  /**
+   * Ratio for the primary winding tap changer.
+   */
+  private Ratio primaryRatio;
+
+  /**
+   * Ratio for the primary winding tap changer.
+   */
+  public Ratio getPrimaryRatio() {
+
+    return primaryRatio;
+  }
+
+  /**
+   * Ratio for the primary winding tap changer.
+   */
+  public void setPrimaryRatio(final Ratio value) {
+
+    this.primaryRatio = value;
+  }
+
+  /**
+   * Rated current on the primary side.
+   */
+  private CurrentFlow ratedCurrent;
+
+  /**
+   * Rated current on the primary side.
+   */
+  public CurrentFlow getRatedCurrent() {
+
+    return ratedCurrent;
+  }
+
+  /**
+   * Rated current on the primary side.
+   */
+  public void setRatedCurrent(final CurrentFlow value) {
+
+    this.ratedCurrent = value;
+  }
+
+  /**
+   * Full load secondary (FLS) rating for secondary winding.
+   */
+  private CurrentFlow secondaryFlsRating;
+
+  /**
+   * Full load secondary (FLS) rating for secondary winding.
+   */
+  public CurrentFlow getSecondaryFlsRating() {
+
+    return secondaryFlsRating;
+  }
+
+  /**
+   * Full load secondary (FLS) rating for secondary winding.
+   */
+  public void setSecondaryFlsRating(final CurrentFlow value) {
+
+    this.secondaryFlsRating = value;
+  }
+
+  /**
+   * Ratio for the secondary winding tap changer.
+   */
+  private Ratio secondaryRatio;
+
+  /**
+   * Ratio for the secondary winding tap changer.
+   */
+  public Ratio getSecondaryRatio() {
+
+    return secondaryRatio;
+  }
+
+  /**
+   * Ratio for the secondary winding tap changer.
+   */
+  public void setSecondaryRatio(final Ratio value) {
+
+    this.secondaryRatio = value;
+  }
+
+  /**
+   * Full load secondary (FLS) rating for tertiary winding.
+   */
+  private CurrentFlow tertiaryFlsRating;
+
+  /**
+   * Full load secondary (FLS) rating for tertiary winding.
+   */
+  public CurrentFlow getTertiaryFlsRating() {
+
+    return tertiaryFlsRating;
+  }
+
+  /**
+   * Full load secondary (FLS) rating for tertiary winding.
+   */
+  public void setTertiaryFlsRating(final CurrentFlow value) {
+
+    this.tertiaryFlsRating = value;
+  }
+
+  /**
+   * Ratio for the tertiary winding tap changer.
+   */
+  private Ratio tertiaryRatio;
+
+  /**
+   * Ratio for the tertiary winding tap changer.
+   */
+  public Ratio getTertiaryRatio() {
+
+    return tertiaryRatio;
+  }
+
+  /**
+   * Ratio for the tertiary winding tap changer.
+   */
+  public void setTertiaryRatio(final Ratio value) {
+
+    this.tertiaryRatio = value;
+  }
+
+  /**
+   * Usage: eg. metering, protection, etc.
+   */
+  private String usage;
+
+  /**
+   * Usage: eg. metering, protection, etc.
+   */
+  public String getUsage() {
+
+    return usage;
+  }
+
+  /**
+   * Usage: eg. metering, protection, etc.
+   */
+  public void setUsage(final String value) {
+
+    this.usage = value;
+  }
+
+  public CurrentTransformerInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/FaultIndicatorInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/FaultIndicatorInfo.java
new file mode 100644
index 0000000..dcadd01
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/FaultIndicatorInfo.java
@@ -0,0 +1,51 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+
+/**
+ * Parameters of fault indicator asset.
+ * 
+ * @created 10-Aug-2017 18:10:14
+ */
+@SuppressWarnings("javadoc")
+public class FaultIndicatorInfo extends AssetInfo {
+
+  /**
+   * Kind of reset mechanisim of this fault indicator.
+   */
+  private FaultIndicatorResetKind resetKind;
+
+  /**
+   * Kind of reset mechanisim of this fault indicator.
+   */
+  public FaultIndicatorResetKind getResetKind() {
+
+    return resetKind;
+  }
+
+  /**
+   * Kind of reset mechanisim of this fault indicator.
+   */
+  public void setResetKind(final FaultIndicatorResetKind value) {
+
+    this.resetKind = value;
+  }
+
+  public FaultIndicatorInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/FaultIndicatorResetKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/FaultIndicatorResetKind.java
new file mode 100644
index 0000000..1fbbf52
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/FaultIndicatorResetKind.java
@@ -0,0 +1,30 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of resetting the fault indicators.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:10:14
+ */
+public enum FaultIndicatorResetKind implements ICimEntity {
+  automatic,
+  manual,
+  remote,
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/OilPreservationKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/OilPreservationKind.java
new file mode 100644
index 0000000..74f281d
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/OilPreservationKind.java
@@ -0,0 +1,30 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of oil preservation.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:00
+ */
+public enum OilPreservationKind implements ICimEntity {
+  freeBreathing,
+  nitrogenBlanket,
+  conservator,
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/OldSwitchInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/OldSwitchInfo.java
new file mode 100644
index 0000000..cb71742
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/OldSwitchInfo.java
@@ -0,0 +1,206 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo.SwitchInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Properties of switch assets.
+ * 
+ * @created 10-Aug-2017 18:11:00
+ */
+@SuppressWarnings("javadoc")
+public class OldSwitchInfo extends SwitchInfo {
+
+  /**
+   * The maximum rms voltage that may be applied across an open contact without
+   * breaking down the dielectric properties of the switch in the open position.
+   */
+  private Voltage dielectricStrength;
+
+  /**
+   * The maximum rms voltage that may be applied across an open contact without
+   * breaking down the dielectric properties of the switch in the open position.
+   */
+  public Voltage getDielectricStrength() {
+
+    return dielectricStrength;
+  }
+
+  /**
+   * The maximum rms voltage that may be applied across an open contact without
+   * breaking down the dielectric properties of the switch in the open position.
+   */
+  public void setDielectricStrength(final Voltage value) {
+
+    this.dielectricStrength = value;
+  }
+
+  /**
+   * True if switch has load breaking capabiity. Unless specified false, this is
+   * always assumed to be true for breakers and reclosers.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean loadBreak;
+
+  /**
+   * True if switch has load breaking capabiity. Unless specified false, this is
+   * always assumed to be true for breakers and reclosers.
+   */
+  public Boolean isLoadBreak() {
+
+    return loadBreak;
+  }
+
+  /**
+   * True if switch has load breaking capabiity. Unless specified false, this is
+   * always assumed to be true for breakers and reclosers.
+   */
+  public void setLoadBreak(final Boolean value) {
+
+    this.loadBreak = value;
+  }
+
+  /**
+   * The highest value of current the switch can make at the rated voltage under
+   * specified operating conditions without suffering significant deterioration of
+   * its performance.
+   */
+  private CurrentFlow makingCapacity;
+
+  /**
+   * The highest value of current the switch can make at the rated voltage under
+   * specified operating conditions without suffering significant deterioration of
+   * its performance.
+   */
+  public CurrentFlow getMakingCapacity() {
+
+    return makingCapacity;
+  }
+
+  /**
+   * The highest value of current the switch can make at the rated voltage under
+   * specified operating conditions without suffering significant deterioration of
+   * its performance.
+   */
+  public void setMakingCapacity(final CurrentFlow value) {
+
+    this.makingCapacity = value;
+  }
+
+  /**
+   * The lowest value of current that the switch can make, carry and break in
+   * uninterrupted duty at the rated voltage under specified operating conditions
+   * without suffering significant deterioration of its performance.
+   */
+  private CurrentFlow minimumCurrent;
+
+  /**
+   * The lowest value of current that the switch can make, carry and break in
+   * uninterrupted duty at the rated voltage under specified operating conditions
+   * without suffering significant deterioration of its performance.
+   */
+  public CurrentFlow getMinimumCurrent() {
+
+    return minimumCurrent;
+  }
+
+  /**
+   * The lowest value of current that the switch can make, carry and break in
+   * uninterrupted duty at the rated voltage under specified operating conditions
+   * without suffering significant deterioration of its performance.
+   */
+  public void setMinimumCurrent(final CurrentFlow value) {
+
+    this.minimumCurrent = value;
+  }
+
+  /**
+   * Number of poles (i.e. of current carrying conductors that are switched).
+   */
+  private Integer poleCount;
+
+  /**
+   * Number of poles (i.e. of current carrying conductors that are switched).
+   */
+  public Integer getPoleCount() {
+
+    return poleCount;
+  }
+
+  /**
+   * Number of poles (i.e. of current carrying conductors that are switched).
+   */
+  public void setPoleCount(final Integer value) {
+
+    this.poleCount = value;
+  }
+
+  /**
+   * True if device is capable of being operated by remote control.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean remote;
+
+  /**
+   * True if device is capable of being operated by remote control.
+   */
+  public Boolean isRemote() {
+
+    return remote;
+  }
+
+  /**
+   * True if device is capable of being operated by remote control.
+   */
+  public void setRemote(final Boolean value) {
+
+    this.remote = value;
+  }
+
+  /**
+   * The highest value of current the switch can carry in the closed position at the
+   * rated voltage under specified operating conditions without suffering
+   * significant deterioration of its performance.
+   */
+  private CurrentFlow withstandCurrent;
+
+  /**
+   * The highest value of current the switch can carry in the closed position at the
+   * rated voltage under specified operating conditions without suffering
+   * significant deterioration of its performance.
+   */
+  public CurrentFlow getWithstandCurrent() {
+
+    return withstandCurrent;
+  }
+
+  /**
+   * The highest value of current the switch can carry in the closed position at the
+   * rated voltage under specified operating conditions without suffering
+   * significant deterioration of its performance.
+   */
+  public void setWithstandCurrent(final CurrentFlow value) {
+
+    this.withstandCurrent = value;
+  }
+
+  public OldSwitchInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/OldTransformerEndInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/OldTransformerEndInfo.java
new file mode 100644
index 0000000..d1c0b80
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/OldTransformerEndInfo.java
@@ -0,0 +1,116 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo.TransformerEndInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.ApparentPower;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Weight;
+
+/**
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:00
+ */
+@SuppressWarnings("javadoc")
+public class OldTransformerEndInfo extends TransformerEndInfo {
+
+  /**
+   * Overload rating for 24 hours.
+   */
+  private ApparentPower dayOverLoadRating;
+
+  /**
+   * Overload rating for 24 hours.
+   */
+  public ApparentPower getDayOverLoadRating() {
+
+    return dayOverLoadRating;
+  }
+
+  /**
+   * Overload rating for 24 hours.
+   */
+  public void setDayOverLoadRating(final ApparentPower value) {
+
+    this.dayOverLoadRating = value;
+  }
+
+  /**
+   * Overload rating for 1 hour.
+   */
+  private ApparentPower hourOverLoadRating;
+
+  /**
+   * Overload rating for 1 hour.
+   */
+  public ApparentPower getHourOverLoadRating() {
+
+    return hourOverLoadRating;
+  }
+
+  /**
+   * Overload rating for 1 hour.
+   */
+  public void setHourOverLoadRating(final ApparentPower value) {
+
+    this.hourOverLoadRating = value;
+  }
+
+  /**
+   * Weight of solid insultation in transformer.
+   */
+  private Weight solidInsulationWeight;
+
+  /**
+   * Weight of solid insultation in transformer.
+   */
+  public Weight getSolidInsulationWeight() {
+
+    return solidInsulationWeight;
+  }
+
+  /**
+   * Weight of solid insultation in transformer.
+   */
+  public void setSolidInsulationWeight(final Weight value) {
+
+    this.solidInsulationWeight = value;
+  }
+
+  /**
+   * Type of insultation used for transformer windings.
+   */
+  private WindingInsulationKind windingInsulationKind;
+
+  /**
+   * Type of insultation used for transformer windings.
+   */
+  public WindingInsulationKind getWindingInsulationKind() {
+
+    return windingInsulationKind;
+  }
+
+  /**
+   * Type of insultation used for transformer windings.
+   */
+  public void setWindingInsulationKind(final WindingInsulationKind value) {
+
+    this.windingInsulationKind = value;
+  }
+
+  public OldTransformerEndInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/OldTransformerTankInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/OldTransformerTankInfo.java
new file mode 100644
index 0000000..4985973
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/OldTransformerTankInfo.java
@@ -0,0 +1,158 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.AssetInfo.TransformerTankInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Weight;
+
+/**
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:01
+ */
+@SuppressWarnings("javadoc")
+public class OldTransformerTankInfo extends TransformerTankInfo {
+
+  /**
+   * Kind of construction for this transformer.
+   */
+  private TransformerConstructionKind constructionKind;
+
+  /**
+   * Kind of construction for this transformer.
+   */
+  public TransformerConstructionKind getConstructionKind() {
+
+    return constructionKind;
+  }
+
+  /**
+   * Kind of construction for this transformer.
+   */
+  public void setConstructionKind(final TransformerConstructionKind value) {
+
+    this.constructionKind = value;
+  }
+
+  /**
+   * Weight of core and coils in transformer.
+   */
+  private Weight coreCoilsWeight;
+
+  /**
+   * Weight of core and coils in transformer.
+   */
+  public Weight getCoreCoilsWeight() {
+
+    return coreCoilsWeight;
+  }
+
+  /**
+   * Weight of core and coils in transformer.
+   */
+  public void setCoreCoilsWeight(final Weight value) {
+
+    this.coreCoilsWeight = value;
+  }
+
+  /**
+   * Core kind of this transformer product.
+   */
+  private TransformerCoreKind coreKind;
+
+  /**
+   * Core kind of this transformer product.
+   */
+  public TransformerCoreKind getCoreKind() {
+
+    return coreKind;
+  }
+
+  /**
+   * Core kind of this transformer product.
+   */
+  public void setCoreKind(final TransformerCoreKind value) {
+
+    this.coreKind = value;
+  }
+
+  /**
+   * Function of this transformer.
+   */
+  private TransformerFunctionKind function;
+
+  /**
+   * Function of this transformer.
+   */
+  public TransformerFunctionKind getFunction() {
+
+    return function;
+  }
+
+  /**
+   * Function of this transformer.
+   */
+  public void setFunction(final TransformerFunctionKind value) {
+
+    this.function = value;
+  }
+
+  /**
+   * Basic insulation level of neutral.
+   */
+  private Voltage neutralBIL;
+
+  /**
+   * Basic insulation level of neutral.
+   */
+  public Voltage getNeutralBIL() {
+
+    return neutralBIL;
+  }
+
+  /**
+   * Basic insulation level of neutral.
+   */
+  public void setNeutralBIL(final Voltage value) {
+
+    this.neutralBIL = value;
+  }
+
+  /**
+   * Kind of oil preservation system.
+   */
+  private OilPreservationKind oilPreservationKind;
+
+  /**
+   * Kind of oil preservation system.
+   */
+  public OilPreservationKind getOilPreservationKind() {
+
+    return oilPreservationKind;
+  }
+
+  /**
+   * Kind of oil preservation system.
+   */
+  public void setOilPreservationKind(final OilPreservationKind value) {
+
+    this.oilPreservationKind = value;
+  }
+
+  public OldTransformerTankInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/PotentialTransformerInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/PotentialTransformerInfo.java
new file mode 100644
index 0000000..8721f40
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/PotentialTransformerInfo.java
@@ -0,0 +1,152 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfCommon.Ratio;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+
+/**
+ * Properties of potential transformer asset.
+ * 
+ * @created 10-Aug-2017 18:11:12
+ */
+@SuppressWarnings("javadoc")
+public class PotentialTransformerInfo extends AssetInfo {
+
+  private String accuracyClass;
+
+  public String getAccuracyClass() {
+
+    return accuracyClass;
+  }
+
+  public void setAccuracyClass(final String value) {
+
+    this.accuracyClass = value;
+  }
+
+  private Ratio nominalRatio;
+
+  public Ratio getNominalRatio() {
+
+    return nominalRatio;
+  }
+
+  public void setNominalRatio(final Ratio value) {
+
+    this.nominalRatio = value;
+  }
+
+  /**
+   * Ratio for the primary winding tap changer.
+   */
+  private Ratio primaryRatio;
+
+  /**
+   * Ratio for the primary winding tap changer.
+   */
+  public Ratio getPrimaryRatio() {
+
+    return primaryRatio;
+  }
+
+  /**
+   * Ratio for the primary winding tap changer.
+   */
+  public void setPrimaryRatio(final Ratio value) {
+
+    this.primaryRatio = value;
+  }
+
+  private String ptClass;
+
+  public String getPtClass() {
+
+    return ptClass;
+  }
+
+  public void setPtClass(final String value) {
+
+    this.ptClass = value;
+  }
+
+  /**
+   * Rated voltage on the primary side.
+   */
+  private Voltage ratedVoltage;
+
+  /**
+   * Rated voltage on the primary side.
+   */
+  public Voltage getRatedVoltage() {
+
+    return ratedVoltage;
+  }
+
+  /**
+   * Rated voltage on the primary side.
+   */
+  public void setRatedVoltage(final Voltage value) {
+
+    this.ratedVoltage = value;
+  }
+
+  /**
+   * Ratio for the secondary winding tap changer.
+   */
+  private Ratio secondaryRatio;
+
+  /**
+   * Ratio for the secondary winding tap changer.
+   */
+  public Ratio getSecondaryRatio() {
+
+    return secondaryRatio;
+  }
+
+  /**
+   * Ratio for the secondary winding tap changer.
+   */
+  public void setSecondaryRatio(final Ratio value) {
+
+    this.secondaryRatio = value;
+  }
+
+  /**
+   * Ratio for the tertiary winding tap changer.
+   */
+  private Ratio tertiaryRatio;
+
+  /**
+   * Ratio for the tertiary winding tap changer.
+   */
+  public Ratio getTertiaryRatio() {
+
+    return tertiaryRatio;
+  }
+
+  /**
+   * Ratio for the tertiary winding tap changer.
+   */
+  public void setTertiaryRatio(final Ratio value) {
+
+    this.tertiaryRatio = value;
+  }
+
+  public PotentialTransformerInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/ProtectionEquipmentInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/ProtectionEquipmentInfo.java
new file mode 100644
index 0000000..7868a1b
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/ProtectionEquipmentInfo.java
@@ -0,0 +1,73 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+
+/**
+ * Properties of protection equipment asset.
+ * 
+ * @created 10-Aug-2017 18:11:18
+ */
+@SuppressWarnings("javadoc")
+public class ProtectionEquipmentInfo extends AssetInfo {
+
+  /**
+   * Actual ground trip for this type of relay, if applicable.
+   */
+  private CurrentFlow groundTrip;
+
+  /**
+   * Actual ground trip for this type of relay, if applicable.
+   */
+  public CurrentFlow getGroundTrip() {
+
+    return groundTrip;
+  }
+
+  /**
+   * Actual ground trip for this type of relay, if applicable.
+   */
+  public void setGroundTrip(final CurrentFlow value) {
+
+    this.groundTrip = value;
+  }
+
+  /**
+   * Actual phase trip for this type of relay, if applicable.
+   */
+  private CurrentFlow phaseTrip;
+
+  /**
+   * Actual phase trip for this type of relay, if applicable.
+   */
+  public CurrentFlow getPhaseTrip() {
+
+    return phaseTrip;
+  }
+
+  /**
+   * Actual phase trip for this type of relay, if applicable.
+   */
+  public void setPhaseTrip(final CurrentFlow value) {
+
+    this.phaseTrip = value;
+  }
+
+  public ProtectionEquipmentInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/RecloserInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/RecloserInfo.java
new file mode 100644
index 0000000..8f6e746
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/RecloserInfo.java
@@ -0,0 +1,138 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Properties of recloser assets.
+ * 
+ * @created 10-Aug-2017 18:11:24
+ */
+@SuppressWarnings("javadoc")
+public class RecloserInfo extends OldSwitchInfo {
+
+  /**
+   * True if device has ground trip capability.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean groundTripCapable;
+
+  /**
+   * True if device has ground trip capability.
+   */
+  public Boolean isGroundTripCapable() {
+
+    return groundTripCapable;
+  }
+
+  /**
+   * True if device has ground trip capability.
+   */
+  public void setGroundTripCapable(final Boolean value) {
+
+    this.groundTripCapable = value;
+  }
+
+  /**
+   * True if normal status of ground trip is enabled.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean groundTripNormalEnabled;
+
+  /**
+   * True if normal status of ground trip is enabled.
+   */
+  public Boolean isGroundTripNormalEnabled() {
+
+    return groundTripNormalEnabled;
+  }
+
+  /**
+   * True if normal status of ground trip is enabled.
+   */
+  public void setGroundTripNormalEnabled(final Boolean value) {
+
+    this.groundTripNormalEnabled = value;
+  }
+
+  /**
+   * Ground trip rating.
+   */
+  private CurrentFlow groundTripRating;
+
+  /**
+   * Ground trip rating.
+   */
+  public CurrentFlow getGroundTripRating() {
+
+    return groundTripRating;
+  }
+
+  /**
+   * Ground trip rating.
+   */
+  public void setGroundTripRating(final CurrentFlow value) {
+
+    this.groundTripRating = value;
+  }
+
+  /**
+   * Phase trip rating.
+   */
+  private CurrentFlow phaseTripRating;
+
+  /**
+   * Phase trip rating.
+   */
+  public CurrentFlow getPhaseTripRating() {
+
+    return phaseTripRating;
+  }
+
+  /**
+   * Phase trip rating.
+   */
+  public void setPhaseTripRating(final CurrentFlow value) {
+
+    this.phaseTripRating = value;
+  }
+
+  /**
+   * Total number of phase reclose operations.
+   */
+  private Integer recloseLockoutCount;
+
+  /**
+   * Total number of phase reclose operations.
+   */
+  public Integer getRecloseLockoutCount() {
+
+    return recloseLockoutCount;
+  }
+
+  /**
+   * Total number of phase reclose operations.
+   */
+  public void setRecloseLockoutCount(final Integer value) {
+
+    this.recloseLockoutCount = value;
+  }
+
+  public RecloserInfo() {
+
+  }
+
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/RegulationBranchKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/RegulationBranchKind.java
new file mode 100644
index 0000000..174c5da
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/RegulationBranchKind.java
@@ -0,0 +1,35 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of regulation branch for shunt impedance.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:28
+ */
+public enum RegulationBranchKind implements ICimEntity {
+  line,
+  transformer,
+  @Cim(originalName = "switch")
+  _switch,
+  breaker,
+  recloser,
+  fuse,
+  sectionner,
+  other
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/ShuntImpedanceControlKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/ShuntImpedanceControlKind.java
new file mode 100644
index 0000000..3c6f7f5
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/ShuntImpedanceControlKind.java
@@ -0,0 +1,30 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of control for shunt impedance.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:40
+ */
+public enum ShuntImpedanceControlKind implements ICimEntity {
+  fixed,
+  localOnly,
+  remoteOnly,
+  remoteWithLocalOverride
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/ShuntImpedanceLocalControlKind.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/ShuntImpedanceLocalControlKind.java
new file mode 100644
index 0000000..4caf126
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/ShuntImpedanceLocalControlKind.java
@@ -0,0 +1,33 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Kind of local control for shunt impedance.
+ * 
+ * @author BTC AG (generated); modelled by T. Kostic
+ * @version 1.0
+ * @created 10-Aug-2017 18:11:40
+ */
+public enum ShuntImpedanceLocalControlKind implements ICimEntity {
+  none,
+  powerFactor,
+  time,
+  temperature,
+  reactivePower,
+  current,
+  voltage
+}
\ No newline at end of file
diff --git a/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/SurgeArresterInfo.java b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/SurgeArresterInfo.java
new file mode 100644
index 0000000..a5f89c5
--- /dev/null
+++ b/dev/src/main/java/org/eclipse/openk/cim/cim17v07/TC57CIM/IEC61968/InfIEC61968/InfAssetInfo/SurgeArresterInfo.java
@@ -0,0 +1,253 @@
+/*
+ * -----------------------------------------------------------------------------
+ * 
+ * Copyright © 2015-2018 BTC AG - http://www.btc-ag.com
+ * 
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * 
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * -----------------------------------------------------------------------------
+ */
+package org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.InfIEC61968.InfAssetInfo;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61968.Assets.AssetInfo;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.CurrentFlow;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Domain.Voltage;
+import org.eclipse.openk.common.dataexchange.cim.*;
+
+/**
+ * Properties of surge arrester.
+ * 
+ * @created 10-Aug-2017 18:11:45
+ */
+@SuppressWarnings("javadoc")
+public class SurgeArresterInfo extends AssetInfo {
+
+  /**
+   * Maximum continuous power frequency voltage allowed on the surge arrester.
+   */
+  private Voltage continuousOperatingVoltage;
+
+  /**
+   * Maximum continuous power frequency voltage allowed on the surge arrester.
+   */
+  public Voltage getContinuousOperatingVoltage() {
+
+    return continuousOperatingVoltage;
+  }
+
+  /**
+   * Maximum continuous power frequency voltage allowed on the surge arrester.
+   */
+  public void setContinuousOperatingVoltage(final Voltage value) {
+
+    this.continuousOperatingVoltage = value;
+  }
+
+  /**
+   * If true, the arrester has a polymer housing, porcelain otherwise.
+   */
+  @Cim(originalType = "Boolean")
+  private Boolean isPolymer;
+
+  /**
+   * If true, the arrester has a polymer housing, porcelain otherwise.
+   */
+  public Boolean isIsPolymer() {
+
+    return isPolymer;
+  }
+
+  /**
+   * If true, the arrester has a polymer housing, porcelain otherwise.
+   */
+  public void setIsPolymer(final Boolean value) {
+
+    this.isPolymer = value;
+  }
+
+  /**
+   * Residual voltage during an 8x20 microsecond current impulse at the nominal
+   * discharge current level.
+   */
+  private Voltage lightningImpulseDischargeVoltage;
+
+  /**
+   * Residual voltage during an 8x20 microsecond current impulse at the nominal
+   * discharge current level.
+   */
+  public Voltage getLightningImpulseDischargeVoltage() {
+
+    return lightningImpulseDischargeVoltage;
+  }
+
+  /**
+   * Residual voltage during an 8x20 microsecond current impulse at the nominal
+   * discharge current level.
+   */
+  public void setLightningImpulseDischargeVoltage(final Voltage value) {
+
+    this.lightningImpulseDischargeVoltage = value;
+  }
+
+  /**
+   * Determines the arrester energy discharge capability. Choices are limited to 0
+   * (none) through 5 (highest) by IEC 60099. Classes 1..3 require a 10-kA nominal
+   * discharge current. Classes 4..5 require a 20-kA nominal discharge current.
+   * Lower nominal discharge currents must use class 0.
+   */
+  private Integer lineDischargeClass;
+
+  /**
+   * Determines the arrester energy discharge capability. Choices are limited to 0
+   * (none) through 5 (highest) by IEC 60099. Classes 1..3 require a 10-kA nominal
+   * discharge current. Classes 4..5 require a 20-kA nominal discharge current.
+   * Lower nominal discharge currents must use class 0.
+   */
+  public Integer getLineDischargeClass() {
+
+    return lineDischargeClass;
+  }
+
+  /**
+   * Determines the arrester energy discharge capability. Choices are limited to 0
+   * (none) through 5 (highest) by IEC 60099. Classes 1..3 require a 10-kA nominal
+   * discharge current. Classes 4..5 require a 20-kA nominal discharge current.
+   * Lower nominal discharge currents must use class 0.
+   */
+  public void setLineDischargeClass(final Integer value) {
+
+    this.lineDischargeClass = value;
+  }
+
+  /**
+   * The lightning discharge current used to classify the arrester. Choices are
+   * limited to 1.5, 2.5, 5, 10, and 20 kA by IEC 60099.
+   */
+  private CurrentFlow nominalDischargeCurrent;
+
+  /**
+   * The lightning discharge current used to classify the arrester. Choices are
+   * limited to 1.5, 2.5, 5, 10, and 20 kA by IEC 60099.
+   */
+  public CurrentFlow getNominalDischargeCurrent() {
+
+    return nominalDischargeCurrent;
+  }
+
+  /**
+   * The lightning discharge current used to classify the arrester. Choices are
+   * limited to 1.5, 2.5, 5, 10, and 20 kA by IEC 60099.
+   */
+  public void setNominalDischargeCurrent(final CurrentFlow value) {
+
+    this.nominalDischargeCurrent = value;
+  }
+
+  /**
+   * Fault current level at which all parts of the failed arrester lie within a
+   * circle prescribed by IEC 60099.
+   */
+  private CurrentFlow pressureReliefClass;
+
+  /**
+   * Fault current level at which all parts of the failed arrester lie within a
+   * circle prescribed by IEC 60099.
+   */
+  public CurrentFlow getPressureReliefClass() {
+
+    return pressureReliefClass;
+  }
+
+  /**
+   * Fault current level at which all parts of the failed arrester lie within a
+   * circle prescribed by IEC 60099.
+   */
+  public void setPressureReliefClass(final CurrentFlow value) {
+
+    this.pressureReliefClass = value;
+  }
+
+  /**
+   * The temporary overvoltage (TOV) level at power frequency that the surge
+   * arrester withstands for 10 seconds.
+   */
+  private Voltage ratedVoltage;
+
+  /**
+   * The temporary overvoltage (TOV) level at power frequency that the surge
+   * arrester withstands for 10 seconds.
+   */
+  public Voltage getRatedVoltage() {
+
+    return ratedVoltage;
+  }
+
+  /**
+   * The temporary overvoltage (TOV) level at power frequency that the surge
+   * arrester withstands for 10 seconds.
+   */
+  public void setRatedVoltage(final Voltage value) {
+
+    this.ratedVoltage = value;
+  }
+
+  /**
+   * Residual voltage during a current impulse with front time of 1 microsecond, and
+   * magnitude equal to the nominal discharge current level.
+   */
+  private Voltage steepFrontDischargeVoltage;
+
+  /**
+   * Residual voltage during a current impulse with front time of 1 microsecond, and
+   * magnitude equal to the nominal discharge current level.
+   */
+  public Voltage getSteepFrontDischargeVoltage() {
+
+    return steepFrontDischargeVoltage;
+  }
+
+  /**
+   * Residual voltage during a current impulse with front time of 1 microsecond, and
+   * magnitude equal to the nominal discharge current level.
+   */
+  public void setSteepFrontDischargeVoltage(final Voltage value) {
+
+    this.steepFrontDischargeVoltage = value;
+  }
+
+  /**
+   * Residual voltage during a current impulse with front time of at least 30
+   * microseconds, and magnitude specified in IEC 60099 for the line discharge class.
+   * Does not apply to line discharge class 0.