System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Invalid column name 'AlsoVisibleInDomains'.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
   at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   --- End of inner exception stack trace ---
   at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass41_0.<GetResults>b__0()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__31_0()
   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector)
   at MuME2.Data.Managers.CachingManagerBase`2.GetDictionary() in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\CachingManagerBase.cs:line 70
   at MuM.Foundation.Caching.Services.CustomCacheService.Get[T](String key, GetFromSourceDelegate`1 getDelegate) in D:\a\1\s\src\Foundation\Caching\code\Services\CustomCacheService.cs:line 260
   at MuME2.Data.Managers.CachingManagerBase`2.get_CachedDictionary() in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\CachingManagerBase.cs:line 72
   at MuME2.Data.Managers.CachingManagerBase`2.All() in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\CachingManagerBase.cs:line 67
   at MuME2.Data.Managers.EventTypeManager.All() in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\EventTypeManager.cs:line 26
   at MuME2.Data.Managers.EventTypeManager.SingleByName(String name) in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\EventTypeManager.cs:line 90
   at MuME2.Data.Managers.EventManager.SingleForDetails(Uri url) in D:\a\1\s\src\Legacy\MuME2.Core\Data\Managers\EventManager.cs:line 73
   at MuM.Project.Website.Services.SeoService.GetCurrentEvent() in D:\a\1\s\src\Project\Website\code\Services\SeoService.cs:line 216
   at MuM.Project.Website.Services.SeoService.GetCanonicalUrl(Base_Page page, String customHost) in D:\a\1\s\src\Project\Website\code\Services\SeoService.cs:line 188
   at MuM.Project.Website.Services.SeoService.RenderHrefLangTags(Base_Page page) in D:\a\1\s\src\Project\Website\code\Services\SeoService.cs:line 65
   at Mum.Relaunch.Web.Controllers.Framework.DefaultPageController.HtmlHead() in D:\a\1\s\src\Legacy\Mum.Relaunch.Web\Controllers\Framework\DefaultPageController.cs:line 111
   at lambda_method(Closure , ControllerBase , Object[] )
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c.<BeginInvokeSynchronousActionMethod>b__9_0(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__11_0()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_1.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_1.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.<BeginInvokeAction>b__3()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__5(IAsyncResult asyncResult)
    
Referenzbericht Meier Tobler AG
Referenzbericht Meier Tobler AG

Individuell und automatisiert

Mit customX und ecscad beschleunigt die Meier Tobler AG nicht nur die Erstellung ihrer Elektroschemata

Die Meier Tobler AG in Schwerzenbach in der Schweiz nutzt customX und ecscad von Mensch und Maschine für die automatisierte Erstellung individueller Elektroschemata der geplanten Anlagen im Wohnungsbau.
Die Meier Tobler AG ist ein führender Schweizer Anbieter für Haustechnik mit Produkten und Dienstleistungen in den Bereichen Heizen, Klimatisieren, Lüften und Sanitär, und entstand durch den Zusammenschluss der Walter Meier AG und der Tobler Haustechnik AG im Jahr 2018. Eine Fusion bringt neben taktischen Vorteilen auch viele organisatorische Herausforderungen mit sich, und natürlich wollte man fortan einheitlich unter dem neuen, gemeinsamen Namen auftreten. Das bedeutete unter anderem, dass auch in allen im Unternehmen vorhandenen und genutzten Dokumenten die Systematik vereinheitlicht und das Unternehmenslogo ausgetauscht werden musste.

"Haufenweise" Elektroschemata

Da für alle Wärmeerzeuger – seien es Öl- oder Gasbrennwertkessel, Wärmepumpen oder Solaranlagen – eigene Elektroschemata zur Verfügung gestellt werden, waren allein in dieser Kategorie tausende Dokumente umzuarbeiten. Man errechnete dafür einen Zeitaufwand von etwa knapp zwei Mannjahren. Das war der Moment, in dem man sich bei Meier Tobler nach einer Möglichkeit der Automatisierung umgeschaut hat.

Wunscherfüller

Schon seit vielen Jahren wurde zur Erstellung der Schemata die E-CAD-Software ecscad aus dem Mensch und Maschine Konzern genutzt. Dorthin wendete man sich auch mit dem Wunsch nach Automatisierung der Schemata. Und tatsächlich wussten die Spezialisten bei MuM in Winkel/Schweiz sofort eine Lösung: die ebenfalls konzerneigene Konfigurations- und Digitalisierungs-Software customX. Die ersten Gespräche wurden geführt und schnell war man sich bei Meier Tobler sicher, dass customX das Problem lösen würde. Doch nicht nur das: „In der konstruktiven Zusammenarbeit mit MuM konnten wir unser Anforderungsprofil weiter schärfen und schließlich das Pflichtenheft um wichtige Punkte ergänzen und uns so unsere Wünsche erfüllen“, so Heinrich Kriesi, Produktmanager Systeme bei Meier Tobler, der die Einführung von customX maßgeblich mitgestaltete.
Referenzbericht Meier Tobler
Das Meier-Tobler-Service-Mobil, bei jedem Wetter einsatzbereit.
Referenzbericht Meier Tobler AG
Heinrich Kriesi, Produktmanager Systeme bei Meier Tobler.

Automatisch, individuell, schnell

Als Ergebnis wurden nicht nur die Logos ausgetauscht und ein neuer Katalog mit Elektroschemata im PDF-Format angelegt, sondern die gesamte Erstellung der Schemata ist im Zusammenspiel mit ecscad automatisiert worden. Heute wird zu jeder Anlage per Knopfdruck ein individuelles Schema erstellt – ca. 25 bis 40 Schemata am Tag und mehr als 6.000 im Jahr – von nur zwei Mitarbeitern.

Zusammen mit SAP® und ecscad

Alles läuft wie am Schnürchen: Nachdem der Auftrag in SAP erfasst ist, gelangt der Innendienst auf die Erfassungsseite von customX, gibt dort die Auftrags- und Hydrauliknummer ein und lässt automatisch das individuelle Elektroschema erstellen. Die Daten werden in einem Ordner gespeichert, wo sie von SAP automatisch wieder eingelesen werden. Alles in allem dauert der Vorgang nur drei bis vier Minuten. Die manuelle Erstellung eines Schemas würde dagegen bestimmt zwei Stunden dauern. Genau weiß man dies allerdings nicht, denn customX hat den Prozess nicht nur beschleunigt, sondern weitgehend verändert und verbessert. Wo man früher unter tausenden Elektroschemata nach einem passenden gesucht hat, wird heute ein individuelles Schema „just in time“ erstellt. Ein weiterer Vorteil: In jedem Schema ist nur noch das enthalten, was für die konkrete Anlage tatsächlich gebraucht wird.
Referenzbericht Meier Tobler AG

Selbstständig pflegen und erweitern

Und wenn sich etwas in der Systematik ändert? „Kein Problem“, sagt Henrich Kriesi, „man muss nur das Masterschema über die Regeln anpassen – das ist sehr einfach und geht ganz schnell. Die tausenden folgenden Schemata sind dann automatisch auch wieder auf dem aktuellen Stand. Es läuft wirklich toll!“.

Perfekte Vorbereitung

Eine gute Vorbereitung sei wichtig. So hat man sich in der Planungsphase genau überlegt: Wie soll das System laufen? Was soll es leisten? Dabei hat das Team von customX das Schweizer Unternehmen intensiv unterstützt. Als zentrales Element empfindet Heinrich Kriesi die Systematisierungsphase, auf der das gesamte Regelwerk der Software aufbaut. Nach der anschließenden sechstägigen Schulung führt er die Datenpflege und auch Neuanlage von Produkten komplett selbstständig durch.

Strategisch wichtig

„customX ist für uns neben SAP zu einem strategischen Baustein geworden“, betont Heinrich Kriesi abschließend und ist sich sicher, dass das System bei Meier Tobler in den nächsten Jahren weiter ausgebaut wird und zuverlässig auch neue Anforderungen und Wünsche erfüllen wird.
Referenzbericht Meier Tobler AG